写点什么

什么是 Log4Shell?Log4j 漏洞解读

  • 2022 年 1 月 04 日
  • 本文字数:1965 字

    阅读完需:约 6 分钟

什么是Log4Shell?Log4j漏洞解读


一个影响使用 Java 的设备和应用程序的新漏洞已经在开源 Apache 日志库 Log4j 中被发现。该漏洞被称为 Log4Shell,是目前互联网上最重要的安全漏洞,其严重程度为 10 分。幸运的是,Perforce 静态分析和 SAST 工具——Helix QAC 和 Klocwork——可以提供帮助。

本文解释了什么是 Log4j 漏洞,提供了一个 Log4j 的例子,并解释了像 Klocwork 这样的 SAST 工具是如何帮助预防和检测漏洞的,比如 Log4Shell。


什么是 Log4j?

Log4j 是一个 Java 库,用于记录企业应用程序中的错误信息,其中包括自定义应用程序、网络和许多云计算服务。

此外,在过去十年中开发的大部分 Java 程序都使用了它,包括服务器和客户端应用程序。


什么是 Log4Shell:Log4j 漏洞解读

Log4Shell,也被称为 CVE-2021-4428,是一个影响 Apache Log4j2 核心功能的高危漏洞。

该漏洞使攻击者能够进行远程代码执行。这使他们能够:

  • 通过受影响的设备或应用程序访问整个网络

  • 运行任何代码

  • 访问受影响设备或应用程序上的所有数据

  • 删除或加密文件

受影响的版本,即 Log4j 第二版(Log4j2),包含在:

  • Apache Struts2

  • Apache Solr

  • Apache Druid

  • Apache Flink

  • ElasticSearch

  • Flume

  • Apache Dubbo

  • Logstash

  • Kafka

  • Spring-Boot-starter-log4j2

  • Swift frameworks


哪些设备和应用程序容易受到 Log4Shell 的影响?

如果一个连接到互联网的设备运行 Apache Log4j,版本 2.0-2.14.1,那么他们就容易受到 Log4Shell 的攻击。


Klocwork 如何检测 Log4j 的漏洞

作为一个静态分析和 SAST 工具,Klocwork 检查你的源代码,以发现可能使你的设备或应用程序受到攻击的设计和编码缺陷,如污损的数据问题。Klocwork 可以沿着你的代码中所有可能的执行路径,包括 Log4Shell(CVE-2021-4428),追踪被污染的、不受信任的或其他可疑的数据。

Klocwork 的 SV.LOG_FORGING 检查器 "开箱即用",可以检测到被传递给日志应用程序的污点数据。Perforce 提供一个小型知识库文件扩展该检查器,以检测 Log4j 的漏洞(详情请咨询 Perforce 中国授权合作伙伴龙智)。

此外,Klocwork 还有一个特点,即可与 Secure Code Warrior 集成,有助于为这些类型的缺陷提供补救指导,以及额外的软件安全培训。Secure Code Warrior 突出了安全漏洞,并提供了如何修复这些错误的指导。


如何用 Klocwork 防止 Log4j 漏洞的发生

现在你更好地理解了什么是 Log4j 漏洞以及 Klocwork 如何识别它,这里有一个 Log4j 的例子。此外,还有一个分步指南,展示 Klocwork 如何帮助你检测和补救这个严重的漏洞。

1. 使用 Klocwork SV.LOG_FORGING 检查器

要使用 Klocwork 的 SV.LOG_FORGING 检查器。进入 Klocwork 应用程序的 Portal,在具体项目下,添加分类规则库文件,并确认 SV.LOG_FORGING 检查器已启用。

该扩展将 Log4j 方法添加到 SV.LOG_FORGING 的污损数据的危险目的地列表中。这使得你可以识别 Log4j 的漏洞,即 Log4Shell。

2. 定位 Log4j 漏洞

一旦整个应用集成分析完成,任何错误或漏洞都会被突出展示。

下面的序列突出了日志伪造的可能性,使攻击者能够利用日志记录,以便操纵它们:

1  public class Test2 implements HttpHandler {

2    static Loggerlog=LogManager.getLogger(Test2.class.getName());

3     public void handle(HttpExchange he) {

4         String apiVersion = he.getRequestHeaders().getFirst

("X-Api-Version");

5         log.info("Api Version:{}", apiVersion);

6    }

7 }

一旦分析完成,Klocwork 将在第 5 行报告该漏洞。

3. 防止 Log4j 漏洞缺陷的发生

Apache 已经发布了 Log4j 的新版本——2.16 版,其中不包含 Log4Shell 漏洞。

此外,如果你不能更新到最新版本,Apache 已经提供了缓解 Log4j 漏洞的解决方案。

在>=2.10 的版本中,这种行为可以通过设置系统属性 log4j2.formatMsgNoLookups 或环境变量 LOG4J_FORMAT_MSG_NO_LOOKUPS 来缓解。

对于从 2.0-beta9 到 2.10.0 的版本,缓解措施是将 JndiLookup 类从 classpath 中移除:zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class。


用 Klocwork 阻止漏洞,比如 Log4Shell

Log4Shell 是一个令人担忧的软件安全漏洞,不幸的是,它不是唯一的漏洞。它只是 CWE-117 和 OWASP A10:2017 漏洞类型中比较突出的一个例子。

通过使用 Klocwork 这样的 SAST 工具,你可以轻松地执行软件安全标准,如 CWE、OWASP 和 CERT,以更好地检测、预防和消除软件安全漏洞,如 Log4Shell。

亲身体验一下 Klocwork 是如何通过尽早发现漏洞来保护你的软件的。联系 Perforce 中国授权合作伙伴龙智,立即开始免费试用。


文章来源:https://www.perforce.com/blog/kw/what-is-log4shell-log4j-vulnerability?utm_medium=email&utm_source=marketo-email&utm_campaign=sca-global-2021q4-ec-customernewsletternovember&utm_content=blog

龙智集成全球主流工具及自研插件产品,为您量身定制 DevSecOps 解决方案。立刻联系我们(电话:400-7755-506 邮箱: marketing@shdsd.com),了解如何更好、更快地交付软件。

用户头像

还未添加个人签名 2021.05.18 加入

还未添加个人简介

评论

发布
暂无评论
什么是Log4Shell?Log4j漏洞解读