仙剑3下载 https://www.xianjian520.com/pa3xz/
作者|褚杏娟
昨晚,你熬夜应急了吗?
昨晚,对很多程序员来说可能是一个不眠之夜。12月10日凌晨,Apache开源项目Log4j的远程代码执行漏洞细节被公开,由于Log4j的广泛使用,该漏洞一旦被攻击者利用会造成严重危害。
据悉,ApacheLog4j2.x<=2.14.1版本均回会受到影响。根据“”消息,可能的受影响应用包括但不限于:Spring-Boot-strater-log4j2、ApacheStruts2、ApacheSolr、ApacheFlink、ApacheDruid、Elasticsearch、Flume、Dubbo、Redis、Logstash、Kafka等。很多互联网企业都连夜做了应急措施。
截至本文发出,斗鱼、京东、网易、深信服和汽车产业安全应急响应中心皆发文表示,鉴于该漏洞影响范围比较大,业务自查及升级修复需要一定时间,暂不接收Log4j2相关的远程代码执行漏洞。
1lookup功能造成的漏洞
Log4j是一款开源Java日志记录工具。日志记录主要用来监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依据;担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。因此,对于程序员来说,日志记录非常重要。
在强调可重用组件开发的今天,Apache提供的强有力的日志操作包Log4j。Log4j可以轻松控制log信息是否显示、log信息的输出端类型、输出方式、输出格式,更加细致地控制日志的生成过程,而其通过配置文件可以灵活地进行配置而不需要大量的更改代码。因此,很多互联网企业都选择使用Log4j。
2014年,Log4j2发布。Log4j2是对Log4j的重大升级,完全重写了log4j的日志实现。Log4j2提供了Logback中可用的许多改进,同时修复了Logback架构中的一些固有问题,目前已经更新到2.15.0版本。
Log4j2也支持SLF4J,可以自动重新加载日志配置,并支持高级过滤选项。此外它还允许基于lambda表达式对日志语句进行延迟评估,为低延迟系统提供异步记录器,并提供无垃圾模式以避免由垃圾收集器操作引起的任何延迟。通过其他语言接口,企业也可以在C、C++、.Net、PL/SQL程序中使用Log4j。
此次漏洞的出现,正是由用于Log4j2提供的lookup功能造成的,该功能允许开发者通过一些协议去读取相应环境中的配置。但在实现的过程中,并未对输入进行严格的判断,从而造成漏洞的发生。“微步在线研究响应中心”做了漏洞复现:
简单来说,就是在打印日志时,如果发现日志内容中包含关键词${,那么这个里面包含的内容会当做变量来进行替换,导致攻击者可以任意执行命令。详细漏洞披露可查看:https://issues.apache.org/jira/projects/LOG4J2/issues/LOG4J2-3201?filter=allissues
由于线上web业务的任何数据都可能写入Log4j,甚至一些pre-auth的地方,比如注册、登录,实际攻击入口取决于业务具体情况。目前百度搜索、苹果iCloud搜索、360搜索等都出现了该问题。
图源:公众号
12月10日上午,再次发出预警,发现ApacheLog4j2.15.0-rc1版本存在漏洞绕过,建议及时更新至ApacheLog4j2.15.0-rc2版本。
对于这次漏洞,有网友评价说道,“可以说是灾难性的漏洞,比之前的fastjson和shiro还要严重,这个漏洞估计在之后三四年内还会继续存在….”
2快速检测及修复方案
针对此次漏洞,“微步在线研究响应中心”也给出了一些应急方案。
1.紧急缓解措施
(1)修改jvm参数-Dlog4j2.formatMsgNoLookups=true(2)修改配置log4j2.formatMsgNoLookups=True(3)将系统环境变量FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS设置为true
2.检测方案
(1)由于攻击者在攻击过程中可能使用DNSLog进行漏洞探测,建议企业可以通过流量监测设备监控是否有相关DNSLog域名的请求,微步在线的OneDNS也已经识别主流DNSLog域名并支持拦截。(2)根据目前微步在线对于此类漏洞的研究积累,我们建议企业可以通过监测相关流量或者日志中是否存在“jndi:ldap://”、“jndi:rmi”等字符来发现可能的攻击行为。
3.修复方案
检查所有使用了Log4j组件的系统,官方修复链接如下:https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc1
3安全应该是一个持续的过程
每个人都知道安全的重要性,但安全问题还是频繁发生。
去年5月,360网络安全响应中心发布“Fastjson远程代码执行漏洞通告”。通告称,Java库fastjson<=1.2.68版本存在远程代码执行漏洞,漏洞被利用可直接获取服务器权限。该漏洞评定为“高危漏洞”,影响面“广泛”。
前年,阿里云应急响应中心监测到,ApachShiro官方披露了其cookie持久化参数rememberMe加密算法存在漏洞,攻击者利用PaddingOracle攻击手段可构造恶意的rememberMe值,绕过加密算法验证,执行java反序列化操作,最终可导致远程命令执行获取服务器权限,风险极大。
安全本身并不是一个能够创造价值的功能,反而更像是需要消耗价值以确保功能稳定的功能。中小企业常常没有足够的资金投入安全建设,而有资金的企业也会把这部分预算降到最低。
网络攻击成功的可能性以及潜在损失的程度是难以实现估计的,决策者通常是依靠经验判断来做决定投入金额。根据AlexBlau在哈佛商业评论中的文章中提到的,决策者在做出决定时,会有一下三个误区:
将网络安全视为一种防御。在这个过程中,强大的防火墙和有能力的工程师可以让他们远离威胁。
认为遵守NIST或FISMA等安全框架就足够安全。
以为如果近期没有发生安全漏洞,那么看起来没有问题的部分就不需要修复。
这些想法的问题在于,网络安全不是要解决有限的问题,而应该是一个持续进行的过程。麻省理工学院数字经济倡议主任ErikBrynjolfsson表示,对抗网络威胁应该被归到“更高级别的优先考虑项”。他认为,一些修复并不复杂。虽然增加一些额外的小操作会让整个流程变长,并增加一点成本,但会让企业和个人更加安全。
Brynjolfsson提出,在网络安全方面,使用公开可用的密码学通常比为特定公司构建的专有系统更加安全。