octodemo/demo-java-war-syft

GitHub: octodemo/demo-java-war-syft

一个故意包含过时依赖的Java Maven WAR演示应用,用于展示Syft SBOM扫描与GitHub高级安全功能的集成效果。

Stars: 0 | Forks: 0

# Demo Java WAR — Syft + GitHub Dependency Graph 演示 一个极简的 Maven WAR 应用程序,包含故意设置的**过时依赖项**,用于演示: - 从打包的 WAR 文件生成 **Syft** SBOM - **GitHub Dependency Graph Submission API** — Syft 作为依赖项数据的权威来源 - 仅通过 Syft 而非原生 pom.xml 扫描揭示的 **GHAS Dependabot 警报** - 针对 Java 的 **CodeQL** 代码扫描 ## 演示的工作原理 原生的 GitHub Dependency Graph 扫描器**无法**解析此仓库中的依赖项,因为: 1. `pom.xml`(根目录)是一个**纯粹的聚合器 POM**,没有 `` — 只有一个 `` 声明 2. `webapp/pom.xml`(子模块)将版本声明为 **Maven 属性占位符**(`${log4j.version}`、`${spring.version}` 等),静态扫描器无法解析它们 构建工作流使用 `anchore/sbom-action` (Syft) 扫描已编译的 `demo-java-war.war`,并将 SPDX SBOM 直接提交给 **GitHub Dependency Submission API**。这将填充 Dependency Graph 并触发 Dependabot 警报 — 证明 Syft 找到了原生工具遗漏的内容。 ## 包含的易受攻击依赖项 | 库 | 版本 | CVE | 严重性 | 通用名称 | |---------|---------|-----|----------|-------------| | `log4j-core` | 2.14.1 | CVE-2021-44228 | 严重 | Log4Shell | | `log4j-core` | 2.14.1 | CVE-2021-45046 | 严重 | Log4Shell 变种 | | `spring-webmvc` | 5.3.17 | CVE-2022-22965 | 严重 | Spring4Shell | | `commons-text` | 1.9 | CVE-2022-42889 | 严重 | Text4Shell | | `jackson-databind` | 2.13.0 | CVE-2022-42003 | 高危 | — | | `snakeyaml` | 1.29 | CVE-2022-25857 | 高危 | — | ## 前置条件 - Java 11+ - Maven 3.8+ - [Syft](https://github.com/anchore/syft)(在 macOS 上使用 `brew install syft`) ## 构建 ``` mvn package -DskipTests # 输出:webapp/target/demo-java-war.war ``` ## Syft SBOM 生成(本地) ### 表格视图(快速扫描) ``` syft scan webapp/target/demo-java-war.war -o table ``` ### CycloneDX JSON ``` syft scan webapp/target/demo-java-war.war -o cyclonedx-json=sbom.cdx.json ``` ### SPDX JSON ``` syft scan webapp/target/demo-java-war.war -o spdx-json=sbom.spdx.json ``` ### 通过管道传递给 Grype 进行漏洞匹配 ``` syft scan webapp/target/demo-java-war.war -o cyclonedx-json | grype ``` ## GitHub Actions 每次推送到 `main` 时: | 工作流 | 功能说明 | |----------|--------------| | `build-and-sbom.yml` | 构建 WAR → 生成 Syft CycloneDX 构件,并将 SPDX 提交至 Dependency Graph API | | `codeql.yml` | CodeQL Java 分析,结果位于 Security → Code scanning | SBOM 构件可从 **Actions → 最新运行 → Artifacts** 下载。 ## 演示的 GHAS 功能 ### Dependabot 警报 **Security → Dependabot alerts** — 通过提交 Syft SBOM 填充,而非通过 pom.xml 扫描。 ### Dependency Graph **Insights → Dependency graph** — 数据源自 `anchore/sbom-action` 的 SPDX 上传。 ### CodeQL 代码扫描 **Security → Code scanning alerts** — CodeQL Java 分析结果。 ### Secret Scanning 公共仓库默认启用 — **Security → Secret scanning alerts**。
标签:DevSecOps, JS文件枚举, Maven, SBOM, 上游代理, 域名枚举, 漏洞演示环境, 漏洞验证, 硬件无关