bigywater.tech
Java · 331

Java 依赖漏洞扫描

依赖里到底有没有已知漏洞?直接依赖看得见,传递依赖呢?升级到哪个版本才算修复?这篇不用任何商业工具:解析真实的依赖树,用 OSV 的公开 API 批量查询,看结果是什么样子。

92 条
13 个构件里查到的已知漏洞记录总数(11 个构件有记录)
59 条
jackson-databind 2.9.8 的已知漏洞记录数
2.7 秒
一次 querybatch 查询 13 个构件的耗时

依赖树

实测 · 本机执行输出
  依赖树总节点数(含根以外的所有): 13
  直接依赖 6 ,传递依赖 7
    直接  org.apache.logging.log4j:log4j-core:2.14.1
    传递  org.apache.logging.log4j:log4j-api:2.14.1
    直接  com.fasterxml.jackson.core:jackson-databind:2.9.8
    传递  com.fasterxml.jackson.core:jackson-annotations:2.9.0
    传递  com.fasterxml.jackson.core:jackson-core:2.9.8
    直接  org.yaml:snakeyaml:1.26
    直接  commons-collections:commons-collections:3.2.1
    直接  org.springframework:spring-web:5.3.17
    传递  org.springframework:spring-beans:5.3.17
    传递  org.springframework:spring-core:5.3.17
    传递  org.springframework:spring-jcl:5.3.17
    直接  org.apache.commons:commons-text:1.9
    传递  org.apache.commons:commons-lang3:3.11

OSV 批量查询

实测 · 本机执行输出
  一次 querybatch 查询 13 个构件,耗时 2.7 秒;有已知漏洞的构件 11 个,漏洞记录总数 92
    直接 com.fasterxml.jackson.core:jackson-databind:2.9.8       59 条  例:['GHSA-27xj-rqx5-2255', 'GHSA-288c-cq4h-88gq', 'GHSA-4w82-r329-3q67']
    直接 org.apache.logging.log4j:log4j-core:2.14.1       7 条  例:['GHSA-3pxv-7cmr-fjr4', 'GHSA-6hg6-v5c8-fphq', 'GHSA-7rjr-3q55-vv33']
    直接 org.yaml:snakeyaml:1.26         7 条  例:['GHSA-3mc7-4q67-w48m', 'GHSA-98wm-3w3q-mw94', 'GHSA-9w3m-gqgf-c4p9']
    直接 org.springframework:spring-web:5.3.17       6 条  例:['GHSA-2rmj-mq67-h97g', 'GHSA-2wrp-6fg6-hmc5', 'GHSA-4gc7-5j7h-4qph']
    传递 com.fasterxml.jackson.core:jackson-core:2.9.8        4 条  例:['GHSA-7hhh-6rmp-j9qf', 'GHSA-h46c-h94j-95f3', 'GHSA-r7wm-3cxj-wff9']
    直接 commons-collections:commons-collections:3.2.1        2 条  例:['GHSA-6hgm-866r-3cjv', 'GHSA-fjq5-5j5f-mvxh']
    传递 org.springframework:spring-beans:5.3.17       2 条  例:['GHSA-36p3-wjmg-h94x', 'GHSA-hh26-6xwr-ggv7']
    传递 org.springframework:spring-core:5.3.17       2 条  例:['GHSA-659m-px2c-25wj', 'GHSA-jmp9-x22r-554x']
    传递 org.apache.logging.log4j:log4j-api:2.14.1       1 条  例:['GHSA-qv9r-c865-cp47']
    直接 org.apache.commons:commons-text:1.9          1 条  例:['GHSA-599f-7c49-w659']
    传递 org.apache.commons:commons-lang3:3.11         1 条  例:['GHSA-j288-q9x7-2f5v']

漏洞详情

实测 · 本机执行输出
  log4j-core:2.14.1 的前 7 条(共 7 条):
    GHSA-3pxv-7cmr-fjr4    MODERATE  CVE-2026-34480                 修复版本 ['2.25.4']  Apache Log4j Core: Silent log event loss in XmlLayout due to unescaped XML 1.0 forbidden c
    GHSA-6hg6-v5c8-fphq    MODERATE  CVE-2026-34477                 修复版本 ['2.25.4']  Apache Log4j Core: `verifyHostName` attribute silently ignored in TLS configuration
    GHSA-7rjr-3q55-vv33    CRITICAL  CVE-2021-45046                 修复版本 ['2.12.2', '2.16.0', '2.3.1']  Incomplete fix for Apache Log4j vulnerability
    GHSA-8489-44mv-ggj8    MODERATE  CVE-2021-44832                 修复版本 ['2.12.4', '2.17.1', '2.3.2']  Improper Input Validation and Injection in Apache Log4j2
    GHSA-jfh8-c2jp-5v3q    CRITICAL  CVE-2021-44228                 修复版本 ['2.12.2', '2.15.0', '2.3.1']  Remote code injection in Log4j
  snakeyaml:1.26 的前 7 条(共 7 条):
    GHSA-3mc7-4q67-w48m    HIGH      CVE-2022-25857                 修复版本 ['1.31']  Uncontrolled Resource Consumption in snakeyaml
    GHSA-98wm-3w3q-mw94    MODERATE  CVE-2022-38751                 修复版本 ['1.31']  snakeYAML before 1.31 vulnerable to Denial of Service due to Out-of-bounds Write
    GHSA-9w3m-gqgf-c4p9    MODERATE  CVE-2022-38752                 修复版本 ['1.32']  snakeYAML before 1.32 vulnerable to Denial of Service due to Out-of-bounds Write
    GHSA-c4r9-r8fh-9vj2    MODERATE  CVE-2022-38749                 修复版本 ['1.31']  snakeYAML before 1.31 vulnerable to Denial of Service due to Out-of-bounds Write
    GHSA-hhhw-99gj-p3c3    MODERATE  CVE-2022-38750                 修复版本 ['1.31']  snakeYAML before 1.31 vulnerable to Denial of Service due to Out-of-bounds Write
  commons-collections:3.2.1 的前 2 条(共 2 条):
    GHSA-6hgm-866r-3cjv    HIGH      CVE-2015-6420                  修复版本 ['3.2.2']  Insecure Deserialization in Apache Commons Collection
    GHSA-fjq5-5j5f-mvxh    CRITICAL  CVE-2015-7501                  修复版本 ['3.2.2']  Deserialization of Untrusted Data in Apache commons collections
  commons-text:1.9 的前 1 条(共 1 条):
    GHSA-599f-7c49-w659    CRITICAL  CVE-2022-42889                 修复版本 ['1.10.0']  Arbitrary code execution in Apache Commons Text

升级之后

实测 · 本机执行输出
  org.apache.logging.log4j:log4j-core              2.14.1:7  2.15.0:6  2.17.1:3  2.20.0:3  2.24.3:4
  com.fasterxml.jackson.core:jackson-databind      2.9.8:59  2.9.10.8:9  2.13.5:10  2.15.4:11  2.18.2:13
  org.yaml:snakeyaml                               1.26:7  1.33:1  2.0:0  2.3:0
  (数字是查询当时 OSV 数据库里对该版本记录的漏洞条数:新版本里还有记录是正常的,不同时间查询会变)

分步演示

依赖漏洞扫描
本步的对象

    本文用到的工具与边界

    • 本机 macOS 27 arm64 / OpenJDK(Temurin 17.0.20、Homebrew 21.0.12 与 27,每篇注明实际用的版本);用 javac 编译、java 直接运行,需要第三方库时用 Maven 解析依赖;计时用 System.nanoTime,数字每次运行会有小幅抖动。JDK 21.0.12 + Maven;OSV(api.osv.dev)2026-10-04 的查询结果,数据随时间变化;没有使用 OWASP Dependency-Check 或商业 SCA 工具(NVD 数据库需要大量下载)
    • 没有验证:漏洞是否真的可被利用(可达性分析:例如只有用到 JNDI lookup 的 log4j 配置才受影响)、OSV 与 NVD / GHSA 的覆盖差异、供应链投毒类风险(非 CVE)、许可证扫描、构建时自动失败的门禁配置、SBOM(CycloneDX / SPDX)的生成
    京ICP备2026067502号-1京公网安备11010502063487号