Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
dd94717
feat: add crypto finding types to FindingType enum
morzan1001 Apr 20, 2026
cd49660
feat: add ParsedCryptoAsset and ParsedCBOM schemas
morzan1001 Apr 20, 2026
e6b3122
fix: use direct import for ParsedCryptoAsset in sbom.py
morzan1001 Apr 20, 2026
ae3178b
feat: add CryptoAsset MongoDB model
morzan1001 Apr 20, 2026
caada6e
refactor: add Field descriptions to CryptoAsset matching Dependency p…
morzan1001 Apr 20, 2026
1530fba
feat: add CryptoPolicy model and CryptoRule schema
morzan1001 Apr 20, 2026
cc197db
feat: add CryptoAssetRepository with bulk upsert and summary
morzan1001 Apr 20, 2026
87e37c9
feat: add CryptoPolicyRepository for system and project scopes
morzan1001 Apr 20, 2026
2dedae3
feat: add CBOM parser with fail-soft handling of CycloneDX 1.6
morzan1001 Apr 20, 2026
3237bbd
feat: extract cryptographic-asset components in SBOM parser
morzan1001 Apr 20, 2026
4b3be57
feat: add crypto policy seeder with NIST/BSI/CNSA/PQC seed files
morzan1001 Apr 21, 2026
eca99d2
feat: wire crypto asset/policy indexes and seeding into lifespan
morzan1001 Apr 21, 2026
0cfffe9
feat: add /api/v1/ingest/cbom endpoint
morzan1001 Apr 21, 2026
e7131ac
feat: persist crypto assets from embedded CBOM in SBOM ingest
morzan1001 Apr 21, 2026
b14f965
feat: add CryptoRule matcher with AND-semantics and glob support
morzan1001 Apr 21, 2026
4967369
feat: add CryptoPolicyResolver with per-instance cache
morzan1001 Apr 21, 2026
5bac024
feat: add CryptoRuleAnalyzer emitting crypto findings from policy
morzan1001 Apr 21, 2026
9318e33
feat: register three crypto analyzers in the analysis registry
morzan1001 Apr 21, 2026
c552be9
feat: dispatch crypto analyzers from engine and CBOM ingest
morzan1001 Apr 21, 2026
e0459ee
test: verify project policy override suppresses crypto findings
morzan1001 Apr 21, 2026
830df27
test: verify existing waivers apply to new crypto finding types
morzan1001 Apr 21, 2026
d4c3a14
test: verify MAX_CRYPTO_ASSETS_PER_SCAN truncates assets
morzan1001 Apr 21, 2026
90a36fb
feat: add MCP tools for crypto assets and policy
morzan1001 Apr 21, 2026
2808947
feat: fire crypto_asset.ingested webhook event after CBOM ingest
morzan1001 Apr 21, 2026
e4aab36
feat: add read-only crypto-asset REST endpoints
morzan1001 Apr 21, 2026
06fbf34
feat(frontend): add crypto types and API client
morzan1001 Apr 21, 2026
d4f3c2c
feat(frontend): add CryptoSummaryHeader with tanstack-query
morzan1001 Apr 21, 2026
8211c2a
feat(frontend): add CryptoAssetTable with filters and pagination
morzan1001 Apr 21, 2026
43f3524
feat(frontend): add Cryptography tab with inventory, detail drawer, a…
morzan1001 Apr 21, 2026
c4d5455
feat: add admin and project crypto-policy REST endpoints
morzan1001 Apr 21, 2026
6478a91
feat(frontend): add crypto-policy types and API client
morzan1001 Apr 21, 2026
56f794f
feat(frontend): add CryptoPolicyEditor shared component
morzan1001 Apr 21, 2026
84c8b41
feat(frontend): add admin Crypto Policy page
morzan1001 Apr 21, 2026
2554c5a
feat(frontend): add project crypto-policy override page
morzan1001 Apr 21, 2026
8e3e995
docs: document CBOM support and pipeline templates
morzan1001 Apr 21, 2026
d347395
Feature/cbom phase2 (#52)
morzan1001 Apr 23, 2026
cb788a1
Feature/cbom phase3 (#55)
morzan1001 Apr 28, 2026
88298b9
fix(auth): prevent privilege escalation via signup endpoint
morzan1001 Apr 28, 2026
557367e
chore(deps): bump dependencies and adapt code to react-hooks lint rule
morzan1001 Apr 28, 2026
699713b
Merge remote-tracking branch 'origin/main' into feature/cbom-phase1
morzan1001 Apr 28, 2026
efb46e5
fix(webhooks): close SSRF and bypass holes in webhook URL validation
morzan1001 Apr 28, 2026
186afdc
ci(backend): unblock the test pipeline for cbom phase1 merge
morzan1001 Apr 28, 2026
52401f7
fix(aggregation): wire up crypto analyzer findings
morzan1001 Apr 28, 2026
691cd19
fix(cbom): make CBOM-only ingest actually run crypto analyzers
morzan1001 Apr 28, 2026
bd18760
fix(compliance): convert artifact_gridfs_id to ObjectId on download
morzan1001 Apr 28, 2026
6c4ec28
fix(analytics): join hotspot finding-count by asset dimension
morzan1001 Apr 28, 2026
106082e
fix(auth): close privilege-escalation hole in update_user
morzan1001 Apr 28, 2026
0f24bdf
fix(analytics): aggregate hotspots by severity and weakness_tag
morzan1001 Apr 28, 2026
65a7928
fix(aggregation): log unparseable crypto findings instead of dropping…
morzan1001 Apr 29, 2026
989ee6c
feat(recommendations): generate remediation recommendations for crypt…
morzan1001 Apr 29, 2026
bbae8dd
fix(compliance): scope-check list and get of compliance reports
morzan1001 Apr 29, 2026
44b9128
fix(compliance): emit ISO-19790 control_ids in ISO reports
morzan1001 Apr 29, 2026
38f159a
fix(cbom): cap CBOM ingest body size before parsing
morzan1001 Apr 29, 2026
58bbccb
fix(crypto-policy): refuse quantum_vulnerable rules without name patt…
morzan1001 Apr 29, 2026
23dbc66
fix(cbom-parser): fall back to properties for non-numeric parameterSe…
morzan1001 Apr 29, 2026
34b0114
fix(compliance): close scope=user report leak
morzan1001 Apr 29, 2026
17d3c5e
fix(cbom-parser): reject bool/zero/negative key sizes
morzan1001 Apr 29, 2026
9887828
version bump
morzan1001 Apr 29, 2026
9336bc7
refactor(compliance): expose FIPS data via public accessor for ISO
morzan1001 Apr 29, 2026
791bf8e
perf(pqc-migration): push status filter and sort into MongoDB
morzan1001 Apr 29, 2026
32f0a54
feat(crypto-policy): warn at startup about invalid persisted policies
morzan1001 Apr 29, 2026
6c63953
fix(compliance): push report visibility into the repo query
morzan1001 Apr 29, 2026
4742777
fix(crypto-analyzer): collapse multi-framework matches per asset
morzan1001 Apr 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
19 changes: 19 additions & 0 deletions .github/workflows/ci-backend.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,25 @@ jobs:
test:
name: Test
runs-on: ubuntu-latest
services:
mongodb:
image: mongo:7
ports:
- 27017:27017
options: >-
--health-cmd "mongosh --quiet --eval 'db.runCommand({ ping: 1 }).ok' | grep -q 1"
--health-interval 10s
--health-timeout 5s
--health-retries 10
redis:
image: redis:7-alpine
ports:
- 6379:6379
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 10
steps:
- name: Checkout repository
uses: actions/checkout@v6
Expand Down
15 changes: 14 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
| Category | Capabilities |
|----------|-------------|
| **Security Analysis** | Vulnerability scanning (Trivy, Grype, OSV), Secret detection, SAST, Malware & Typosquatting detection |
| **Cryptographic Analysis** | Cryptographic Bill of Materials (CBOM), weak-algorithm detection, key-size enforcement, quantum-vulnerability assessment |
| **Compliance** | License compliance checking, End-of-Life monitoring, Policy enforcement with waivers |
| **Management** | Project & Team management, Role-based access control, 2FA authentication |
| **Integrations** | GitLab CI/CD (OIDC), GitHub Actions (OIDC), Webhooks, Email/Slack/Mattermost notifications |
Expand All @@ -32,9 +33,10 @@ Dependency Control integrates with leading open-source security tools to provide
These tools run in your pipeline and send data to Dependency Control:
* **[Syft](https://github.com/anchore/syft)** - Generates Software Bill of Materials (SBOM) from container images and filesystems.
* **[TruffleHog](https://github.com/trufflesecurity/trufflehog)** - Scans for leaked credentials and secrets in your codebase.
* **[OpenGrep](https://github.com/opengrep/opengrep)** - Fast and lightweight Static Application Security Testing (SAST).
* **[OpenGrep](https://github.com/opengrep/opengrep)** - Fast and lightweight Static Application Security Testing (SAST). Ships with a dedicated **crypto-misuse** ruleset (hardcoded keys, weak RNG, ECB mode, IV reuse, insecure TLS, weak hashes, low PBKDF2 iterations) — see the pipeline-templates repo `rules/crypto-misuse/`.
* **[Bearer](https://github.com/bearer/bearer)** - Code security scanning focusing on sensitive data flows and privacy.
* **[KICS](https://github.com/Checkmarx/kics)** - Finds security vulnerabilities, compliance issues, and infrastructure misconfigurations in IaC.
* **[IBM CBOMkit-theia](https://github.com/IBM/cbomkit-theia)** - Generates a Cryptographic Bill of Materials (CBOM) by scanning source code for cryptographic assets.

### SBOM Analysis (Internal)
Once an SBOM is ingested, the backend performs deep analysis using:
Expand All @@ -46,6 +48,17 @@ Once an SBOM is ingested, the backend performs deep analysis using:
* **Typosquatting** - Detects potential typosquatting attacks in dependency names.
* **License Compliance** - Analyzes licenses for compliance and risk.

### Cryptographic Analysis

**Dependency Control** ingests CycloneDX-1.6 Cryptographic Bills of Materials (CBOMs) produced by [IBM CBOMkit-theia](https://github.com/IBM/cbomkit-theia) and analyses them against configurable cryptographic policies.

Detects weak algorithms (MD5, SHA-1, DES, RC4), insufficient key sizes (e.g. RSA-1024), and quantum-vulnerable public-key algorithms (RSA, ECC, DH). Policies are editable per-project and seeded with industry standards: NIST SP 800-131A, BSI TR-02102, CNSA 2.0, and NIST PQC recommendations.

Ready-to-use pipeline templates are available in the [dependency-control-pipeline-templates](https://github.com/zakmccracken/dependency-control-pipeline-templates) repository:

* **GitLab CI** — [`cbom-scan.gitlab-ci.yml`](https://github.com/zakmccracken/dependency-control-pipeline-templates/blob/main/cbom-scan.gitlab-ci.yml)
* **GitHub Actions** — [`cbom-scan.github-actions.yml`](https://github.com/zakmccracken/dependency-control-pipeline-templates/blob/main/cbom-scan.github-actions.yml)

## 🛠️ Quick Start (Docker Compose)

The easiest way to run Dependency Control locally.
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.5.5
1.5.6
10 changes: 9 additions & 1 deletion backend/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,15 @@ LABEL org.opencontainers.image.licenses="MIT"
WORKDIR /app

# Install system dependencies, Trivy, and poetry
RUN apt-get update && apt-get install -y curl \
# WeasyPrint runtime libs: libcairo2, libpango-1.0-0, libpangoft2-1.0-0,
# libgdk-pixbuf-2.0-0, shared-mime-info.
RUN apt-get update && apt-get install -y --no-install-recommends \
curl \
libcairo2 \
libgdk-pixbuf-2.0-0 \
libpango-1.0-0 \
libpangoft2-1.0-0 \
shared-mime-info \
&& curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin \
&& curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin \
&& curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin \
Expand Down
2 changes: 1 addition & 1 deletion backend/app/api/deps.py
Original file line number Diff line number Diff line change
Expand Up @@ -441,5 +441,5 @@ async def get_project_for_ingest(


# Annotated type aliases for FastAPI dependency injection
DatabaseDep = Annotated[AsyncIOMotorDatabase, Depends(get_database)]
DatabaseDep = Annotated[AsyncIOMotorDatabase[Any], Depends(get_database)]
CurrentUserDep = Annotated[User, Depends(get_current_active_user)]
Loading
Loading