octodemo/demo-java-war-ghas
GitHub: octodemo/demo-java-war-ghas
一个刻意包含已知漏洞依赖的 Java Maven WAR 应用程序,用于演示 Syft SBOM 生成与 GitHub Advanced Security 的漏洞发现和代码扫描能力。
Stars: 0 | Forks: 0
# Java WAR 示例 — GHAS 与 Syft SBOM 演示
一个最小化的 Maven WAR 应用程序,包含刻意**过时的依赖项**,用于演示:
- **Syft** 从 WAR 文件生成 SBOM
- **GitHub Advanced Security (GHAS)** — Dependabot 告警、CodeQL 代码扫描
- 企业级 Java 应用的依赖项漏洞发现
## 包含的易受攻击依赖项
| 库 | 版本 | 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
# 输出:target/demo-java-war.war
```
## Syft SBOM 生成
### 表格视图(快速扫描)
```
syft scan target/demo-java-war.war -o table
```
### CycloneDX JSON
```
syft scan target/demo-java-war.war -o cyclonedx-json=sbom.cdx.json
```
### SPDX JSON
```
syft scan target/demo-java-war.war -o spdx-json=sbom.spdx.json
```
### 通过管道传递给 Grype 进行漏洞匹配
```
syft scan target/demo-java-war.war -o cyclonedx-json | grype
```
## GitHub Actions
每次推送到 `main` 分支时,工作流会:
| 工作流 | 功能描述 |
|----------|--------------|
| `build-and-sbom.yml` | 构建 WAR、运行 Syft、将 CycloneDX + SPDX SBOM 作为制品上传 |
| `codeql.yml` | 运行 CodeQL Java 分析,将结果上传至 GitHub Security 标签页 |
SBOM 制品可以从 **Actions** 标签页 → 最新运行记录 → **Artifacts** 中下载。
## 演示的 GHAS 功能
### Dependabot 告警
导航至 **Security → Dependabot alerts** 以查看在 `pom.xml` 中检测到的所有 CVE。
### CodeQL 代码扫描
导航至 **Security → Code scanning alerts** 以查看来自 CodeQL Java 分析的任何结果。
### Secret 扫描
公共仓库默认启用此功能 — 任何意外提交的凭据都将显示在 **Security → Secret scanning alerts** 下。
标签:DevSecOps, JS文件枚举, Maven, SBOM, 上游代理, 依赖安全审计, 域名枚举, 漏洞靶场, 漏洞验证, 硬件无关, 示例项目, 防御检测