CVD ledger — consume + publish
Schema 108 (2026-05-25) shipt twee helften van dezelfde munt: we consumeren Anthropic’s publieke CVD ledger om operators early-warning te geven over packages met verzegelde vulns, en we laten software-vendor tenants hun eigen ledger publiceren in hetzelfde formaat — nuttig bewijs voor CRA Annex I §11-12.
Pad A — Anthropic’s ledger consumeren (early warning)
Anthropic’s coordinated-vulnerability-disclosure programma publiceert SHA-3-512 hash commitments van verzegelde rapporten voordat het disclosure-window sluit. De effective vuln-details worden pas later publiek, maar de project-naam + bug-class + commitment-hash zijn direct zichtbaar. monsys consumeert die feed dagelijks en matcht tegen jouw inventaris.
| Component | Wat |
|---|---|
CVDLedgerWorker | Polt red.anthropic.com/2026/cvd/ledger/payload.json elke 24u |
cvd_ledger_entries | Lokale cache van elke ledger entry ooit gezien |
cvd_predisclosure_findings | Per-(tenant, agent, entry) match tegen inventory_packages + inventory_dependencies |
/recommendations categorie cvd.predisclosure | Toont matched findings — severity = medium voor pre-disclosure, high zodra disclosed, info zodra fixed |
Privacy: de worker doet één-shot GET; geen per-tenant query-string, geen agent metadata verlaat de hub. Anthropic leert niks over jouw inventaris.
Operator playbook voor een CVD pre-disclosure hit:
- Noteer project-naam + bug-class.
- Pin je huidige werkende versie van dat package (bv.
npm pin,pip-compile --upgrade-package,apt-mark hold). - Abonneer je op de upstream release-feed van het project.
- Plan een patch-window rond
disclosure_eta. Wanneer details landen, kan je in uren bewegen, niet dagen. - Acknowledge de finding zodra je preventieve actie hebt ondernomen.
Pad B — Je eigen tenant-ledger publiceren
Als je tenant een software vendor is onder CRA Annex I §11-12 (“de fabrikant moet vulnerabilities effectief afhandelen”), kan je je eigen ontdekte vulns publiceren in hetzelfde patroon dat Anthropic gebruikt:
- Commit fase (
POST /api/v1/vuln-ledger):- Body:
{ project, bug_class, payload, disclose_at } - We berekenen SHA-512 van de canonical-serialised payload,
versleutelen het met
CLOUD_ENCRYPTION_KEY, slaan beide op, en ankerieren de hash in onze bestaande transparency log (mig 092) zodat hij deel uitmaakt van de monotonic hash-chain.
- Body:
- Public view (
GET /v/{public_slug}/ledger): geen auth, geen tenant_id leak. Pre-disclosure entries tonen alleen project + bug class + hash + committed_at. Nadisclose_aten zodra je statusPATCHt naardisclosed/fixed, worden public_summary + advisory_id + fix_commit_url zichtbaar. - Tamper-evidence: elke
transparency_entry_idreferenceert de publieke hash-chain. Een auditor kan verifiëren “jouw commitment zat in de chain op positie N voor tijd T”.
Endpoints:
| Methode | Pad | Auth | Wat |
|---|---|---|---|
| GET | /api/v1/vuln-ledger | cookie | Operator-side lijst (alle states) |
| POST | /api/v1/vuln-ledger | cookie | Commit een sealed entry |
| PATCH | /api/v1/vuln-ledger/:id | cookie | Update status / public summary / advisory_id / fix_commit_url |
| GET | /v/:slug/ledger | geen | Public ledger view (rate-limited 60/min) |
Tenant slug: auto-seeded naar lower(first 12 chars van tenant_id)
bij mig 108 toepassing. Override via UI later.
Compliance: nieuwe control CRA-AnnexI-11-vuln-handling
automatisch geëvalueerd door tenant_vuln_ledger entries van de
laatste 90 dagen te tellen.
Waarom twee helften van één munt
Het patroon is identiek in beide richtingen:
Ontdekking → Cryptografische commitment NU ↓ Sealed details ↓ Disclosure window ↓ Publieke revealWanneer Anthropic ontdekt, consumeer je. Wanneer jouw tenant ontdekt, publiceer je in hetzelfde formaat. De transparency-log anker maakt beide helften verifieerbaar voor elke derde partij met een script.
Wat dit NIET vervangt
- Publieke CVE assignment: je vult nog steeds een CVE in bij MITRE / de package’s CNA. We geven geen CVE IDs uit.
- Coordinated disclosure met de maintainer: menselijk werk, buiten het platform.
- Pen-test of vuln-discovery zelf: we leggen vast wat jij vindt; vinden is je team z’n werk (of dat van een research firm).
Verifieer je ledger vanaf de CLI
# Haal de publieke payload opcurl -s https://api.monsys.ai/v/<slug>/ledger | jq
# Cross-verifieer een hash tegen de transparency logcurl -s https://api.monsys.ai/api/v1/transparency/log/<entry_id> | jq
# Anthropic's bron (voor context)curl -s https://red.anthropic.com/2026/cvd/ledger/payload.json | jq