Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Log4j-CVE-Detect — 针对嵌套二进制文件中 CVE-2021-44228 的检测 | Kitploit
工具/GitHubGitHub/darkarnium/log4j-cve-detect
静态分析漏洞扫描器容器安全漏洞分析DevSecOps二进制分析供应链安全
GitHubdarkarnium/log4j-cve-detect

Log4j-CVE-Detect

针对嵌套二进制文件中 CVE-2021-44228 的检测

查看仓库
3574年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Log4J-CVE-Detect

此仓库包含一组 YARA 规则,通过查找受影响版本中出现的若干特征,来检测易受 CVE-2021-44228、CVE-2021-45046 和/或 CVE-2021-45105 影响的 log4j 版本。

此工具可递归处理 Docker 镜像、系统软件包、文件系统镜像,甚至安装介质等二进制文件。有关受支持文件格式的完整列表,请参阅"工作原理"一节。

  • CVE-2021-44228
    • 查找 JndiManager 构造函数的特征(< 2.15.0)。
  • CVE-2021-45046
    • 查找未导入 JndiManager 的 Interpolator 类(< 2.16.0)。
  • CVE-2021-45105
    • 查找未导入 ConfigurationStrSubstitutor 的 AbstractConfiguration 类(< 2.17.0)。

尽管已有大量资源可用于通过 CodeQL 或 Semgrep 检测 log4j 的不安全使用,但截至目前,仍没有可用于检测二进制制品中潜在易受攻击的 log4j 版本的资源。

这给运行非内部开发的企业应用程序的组织带来了挑战,或者对于执行初始分类的团队而言,源代码无法立即获取。

由于此漏洞很可能出现在各种"意想不到"的地方,此工具旨在帮助检测已编译制品中易受攻击的 log4j 版本,随后可对这些制品进行人工审查以确定可利用性。

注意事项

混淆代码将导致漏报(false negative),即由于使用了混淆技术,无法检测到潜在易受攻击的组件。

运行方式

要运行此工具,请克隆此仓库并按照以下步骤操作。此操作假设已安装 Docker 和 jq。

  1. 将需要检查的二进制文件添加到 artifacts/ 文件夹中
  2. 运行 quickstart.sh(./quickstart.sh)

或者,可以使用以下命令自定义运行:

root@kitploit:~
docker run \
    --rm \
    --mount type=bind,source=$(pwd)/artifacts,target=/mnt/stacs/input \
    --mount type=bind,source=$(pwd)/rules,target=/mnt/stacs/rules \
    stacscan/stacs:latest \
      --rule-pack "/mnt/stacs/rules/vulnerability.json" \
      "/mnt/stacs/input"

如果您只想查找 CVE-2021-44228,可以使用以下命令:

root@kitploit:~
docker run \
    --rm \
    --mount type=bind,source=$(pwd)/artifacts,target=/mnt/stacs/input \
    --mount type=bind,source=$(pwd)/rules,target=/mnt/stacs/rules \
    stacscan/stacs:latest \
      --rule-pack "/mnt/stacs/rules/CVE-2021-44228.json" \
      "/mnt/stacs/input"

如果您只想查找 CVE-2021-45046,可以使用以下命令:

root@kitploit:~
docker run \
    --rm \
    --mount type=bind,source=$(pwd)/artifacts,target=/mnt/stacs/input \
    --mount type=bind,source=$(pwd)/rules,target=/mnt/stacs/rules \
    stacscan/stacs:latest \
      --rule-pack "/mnt/stacs/rules/CVE-2021-45046.json" \
      "/mnt/stacs/input"

如果您只想查找 CVE-2021-45105,可以使用以下命令:

root@kitploit:~
docker run \
    --rm \
    --mount type=bind,source=$(pwd)/artifacts,target=/mnt/stacs/input \
    --mount type=bind,source=$(pwd)/rules,target=/mnt/stacs/rules \
    stacscan/stacs:latest \
      --rule-pack "/mnt/stacs/rules/CVE-2021-45105.json" \
      "/mnt/stacs/input"

此工具也可以在不使用 Docker 的情况下运行。请参阅 STACS 的安装说明,了解如何在不使用 Docker 的情况下安装 STACS。

Docker 呢?

要扫描 Docker 镜像,首先需要将其导出到 artifacts 目录中再进行扫描。可以使用以下命令完成此操作:

root@kitploit:~
IMAGE="alpine:latest"
NAME="alpine_latest"

docker export $(docker create ${IMAGE}) -o artifacts/${NAME}.tar

或者,可以仅使用以下命令导出正在运行的容器:

root@kitploit:~
# Replace CONTAINER_ID with the correct container identifier.
CONTAINER_ID="c29209118f9a"
NAME="widget_example"

docker export ${CONTAINER_ID} -o artifacts/${NAME}.tar

我发现了告警!该怎么办?

您需要调查应用程序中 log4j 的使用情况,以判断该产品是否存在漏洞。如果由于无法访问源代码或其他原因而无法做到这一点,您应检查供应商是否已就此发布任何公告。

无法保证包含易受攻击版本的 log4j 就意味着该产品一定存在漏洞!

如果找不到任何公告,您应联系供应商,询问此漏洞对该产品的影响。

另请参阅 log4j 项目发布的缓解措施。或者,更推荐的做法是升级到不受影响的 log4j 版本。

工作原理

尽管并非为此目的而设计,此工具使用 STACS 引擎进行批量二进制分解和分析。

STACS 是一款由 YARA 驱动的静态凭据扫描器,支持二进制文件格式、嵌套压缩包分析、可组合规则集和忽略列表,以及 SARIF 报告。

例如,此工具可以分析包含已导出 Docker 镜像的 tar 包,而该镜像的文件系统中某处包含受此漏洞影响的 JAR 文件。

它还可以分析嵌套的 tar、jar、war、ear、zip、apk、bz2、tgz、xz、rpm、iso 等格式。

我发现了误报/漏报

请提交一个 GitHub issue 描述该问题,并尽可能附上受影响的二进制制品的链接。

也非常欢迎提交拉取请求(Pull Request)来调整规则集!

验证

请参阅 validation/ 目录,其中包含此规则集验证产生的一组日志文件。

下载工具