中国程序员抢先预警史诗级漏洞,一句话拿捏全球服务器!席卷苹果特斯拉

百家 作者:腾讯科技 2021-12-14 18:50:17

来源 | 新智元


2021年11月24日,阿里云安全团队依然像往常一样进行着漏洞的筛查工作。


让人没想到的是,团队成员之一的Chen Zhaojun一铲子下去,就挖出了一个「过去十年来影响最大、最严重的漏洞」——Log4Shell。



借着这个漏洞,攻击者只需要提交一个字符串就能访问对方的服务器,甚至还能在里面上传运行任何代码!


结果就是,12月10号,本来已经在准备过周末的大厂程序员们,都起来通宵加班处理漏洞了。



这个漏洞波及了多少大厂呢?


由于Log4j2这个库实在是太受欢迎了,所以包括苹果、Tesla、亚马逊、Cloudflare、ElasticSearch、Red Hat、Twitter、Steam、百度、网易、腾讯等大厂都会受到影响。



可能,还有数百家甚至数千家其他组织也会受到影响。


一些信息安全研究人员预计,未来几天互联网上对服务器的攻击会大幅增加。


惊魂一刻


11月24,开源项目Apache Log4j2的一个远程代码执行漏洞被提交。


12月7日上午,Apache发布了2.15.0-rc1版本更新。


12月9日晚,漏洞的利用细节被公开,影响范围几乎横跨整个版本(从2.0到2.14.1-rc1)。


当大家纷纷升级到2.15.0-rc1之后发现,该补丁依然可以被绕过。


12月10日凌晨2点半左右,Apache Log4j2紧急更新了2.15.0-rc2版本。


此时,各个大厂也几乎都在熬夜抢修。



据火线不完全统计,仅在Github上,就有60644个开源项目发布的321094软件包存在风险,这一漏洞可以说是影响了互联网上70%以上企业系统的正常运转。


Java开发框架中,受到Log4j2的影响Top10(来源:火线安全)


这一漏洞名为CVE-2021-44228,也叫Log4Shell或LogJam,是一个远程代码执行(RCE)类漏洞,存在于一个「数百万」应用程序都在使用的开源Java日志库Log4j2中。


由于Java应用程序通常会记录各种各样的事件,例如用户发送和接收的消息,或者系统错误的详细信息,因此该漏洞可以通过多种方式触发。



而这一漏洞最危险的地方是它太容易被攻击者利用了,即使是毫无经验的普通人也可以利用这个漏洞成功执行攻击。


攻击者只需发送一则特殊的消息到服务器(包含类似$的字符串),就可以执行任意的代码,并有可能完全控制该系统。



据阿里的@程序员子悠介绍,服务器会通过Log4j2记录攻击者发送的请求汇中包含的基于JNDI和LDAP的恶意负载$,其中,http://attacker.com是攻击者控制的地址。


当服务器通过JNDI向http://server.com请求,触发恶意负载之后,http://attacker.com就可以在响应中添加任何可执行脚本,注入到服务器进程中。



于是,上个周末,大大小小公司的安全团队都在争先恐后地修补Log4Shell漏洞,晚一秒,就有可能让黑客危及互联网上数百万台设备。


而黑客们也没闲着,安全服务商imperva当天就监控到了140多万次针对CVE-2021-44228的攻击。



新西兰计算机应急响应小组(CERT)、德国电信(Deutsche Telekom)和Greynoise的网络监控服务都发出了警告:「攻击者已经在积极利用这个漏洞」。


根据Greynoise的说法,大约100个不同的主机正在大规模地寻找利用Log4j2漏洞的方法。


很快,多家信息安全新闻机构都报道了这个在Apache Log4j2库中发现的,CVSS严重程度为10级的关键漏洞CVE-2021-44228。


阿里云安全团队在12月10日发布公告。



https://help.aliyun.com/noticelist/articleid/1060971232.html


国家互联网应急中心12月10日发布公告。



https://www.cert.org.cn/publish/main/9/2021/20211210110550958546708/20211210110550958546708_.html


美国国家计算机通用漏洞数据库12月10日发布公告。



https://nvd.nist.gov/vuln/detail/CVE-2021-44228


Apache基金会也迅速回应,建议所有开发人员能升级就升级,将手头上使用到的Log4j2库更新到2.15.0版本,如果因为一些原因升不了级,就使用Apache Log4j2安全漏洞页面中描述的方法进行扑救。


12月12号,有网友反映银行的程序都不能用了,推测可能正在加班加点排查,看来波及范围确实挺大的。



这下程序员们要哭了,纷纷吐槽:

「连夜抢修」


「忙活大半天」


复现漏洞


国民级搜索引擎百度首先遭到了广大网友的暴力测试!


漏洞刚曝光时,如果在百度搜索框中输入命令,然后在dnslog中就可以发现访问信息,随后开发人员也是紧急修复了这个漏洞。



接着,网友又攻破了一向以安全性著称的苹果。



Minecraft也同样惨遭毒手。


由于Minecraft在软件中也采用了Log4j2,而且使用范围很广,这就导致了除Mohist 1.18外,Minecraft全版本所有系列的服务端全部处于高风险状态。


这样一来,在聊天栏输入命令就可以在游戏中作弊。



对于Minecraft服主来说,当前最该做的就是立即关闭服务器,并进行升级和紧急修复,普通玩家则需要等待,直到服务器确认修复完成。



解决方案


根据360的建议,用户可以进行如下操作。


常规方案


使用了Apache Log4j2的用户,请将程序更新至官方最新安全版本(2.15.0-rc2)。下载地址:

https://github.com/apache/logging-Log4j22/releases/tag/Log4j2-2.15.0-rc2


临时应急方案


修改Log4j2配置:

Log4j22.formatMsgNoLookups=True

设置JVM启动参数:

-DLog4j22.formatMsgNoLookups=true

设置环境变量:

FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS值为true


可以提高安全性的周边设置


以下设置或操作可能会对防护此次安全事件起到作用,但无法确保安全。建议结合实际应用场景进行配置:

使用尽可能更高版本的JDK

使用rasp阻断lookup的调用

使用waf对流量中的${jndi进行拦截

禁止所有不必要的外连数据。


开源项目的风险


Log4j2的安全事故一出,不禁让广大用户重新开始怀疑:开源软件是否真的安全?


一方面大家觉得开源软件嘛,代码都拿到手了,在遵照开源协议的情况下,基本就是白嫖。


另一方面,觉得有这么多人都在盯着这份代码,肯定不会出bug,不然一定会有人提issue修复的。在不花钱的情况下,又指望它有企业级的维护支持与安全性保障。



殊不知,大部分开源软件都是作者利用业余时间开发的,为开源社区贡献代码的驱动力全部来自于star和「用爱发电」。


也正是因为免费,一些开源软件的受众规模特别大,从小公司到千亿市值的企业都在使用,如果一旦出了漏洞,那后果将不堪设想。


所以,开源有风险,使用需谨慎!


参考资料:

https://www.lunasec.io/docs/blog/Log4j2-zero-day/

https://twitter.com/MalwareTechBlog/status/1469289471463944198

http://jandan.net/p/109993

https://www.zhihu.com/question/504954921/answer/2265750721




欢迎分享、点赞、在看,一键三连

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接