octodemo/demo-java-war-ghas
GitHub: octodemo/demo-java-war-ghas
Stars: 0 | Forks: 0
# Demo Java WAR — GHAS & Syft SBOM Demo
A minimal Maven WAR application with intentionally **outdated dependencies** for demonstrating:
- **Syft** SBOM generation from a WAR file
- **GitHub Advanced Security (GHAS)** — Dependabot alerts, CodeQL code scanning
- Dependency vulnerability discovery for enterprise Java apps
## Vulnerable Dependencies Included
| Library | Version | CVE | Severity | Common Name |
|---------|---------|-----|----------|-------------|
| `log4j-core` | 2.14.1 | CVE-2021-44228 | Critical | Log4Shell |
| `log4j-core` | 2.14.1 | CVE-2021-45046 | Critical | Log4Shell variant |
| `spring-webmvc` | 5.3.17 | CVE-2022-22965 | Critical | Spring4Shell |
| `commons-text` | 1.9 | CVE-2022-42889 | Critical | Text4Shell |
| `jackson-databind` | 2.13.0 | CVE-2022-42003 | High | — |
| `snakeyaml` | 1.29 | CVE-2022-25857 | High | — |
## Prerequisites
- Java 11+
- Maven 3.8+
- [Syft](https://github.com/anchore/syft) (`brew install syft` on macOS)
## Build
mvn package -DskipTests
# Output: target/demo-java-war.war
## Syft SBOM Generation
### Table view (quick scan)
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
### Pipe into Grype for vulnerability matching
syft scan target/demo-java-war.war -o cyclonedx-json | grype
## GitHub Actions
On every push to `main`, the workflows:
| Workflow | What it does |
|----------|--------------|
| `build-and-sbom.yml` | Builds WAR, runs Syft, uploads CycloneDX + SPDX SBOMs as artifacts |
| `codeql.yml` | Runs CodeQL Java analysis, uploads results to GitHub Security tab |
SBOM artifacts are downloadable from the **Actions** tab → latest run → **Artifacts**.
## GHAS Features Demonstrated
### Dependabot Alerts
Navigate to **Security → Dependabot alerts** to see all CVEs detected in `pom.xml`.
### CodeQL Code Scanning
Navigate to **Security → Code scanning alerts** to see any findings from CodeQL's Java analysis.
### Secret Scanning
Enabled by default for public repositories — any accidentally committed credentials will appear under **Security → Secret scanning alerts**.
标签:域名枚举