CERT/CC Vulnerability Notes – Source Research
Canonical publication endpoints
- Public portal – https://www.kb.cert.org/vuls/lists recently published Vulnerability Notes and exposes a “Subscribe to our feed” link for automation entry points.citeturn0search0
- Atom feed – https://www.kb.cert.org/vulfeedreturns an Atom 1.0 feed of the same notes (<title>,<updated>,<summary>HTML payload). Feed metadata advertisesrel="self"athttps://kb.cert.org/vuls/atomfeed/. Use conditional GET headers (If-Modified-Since,If-None-Match) to avoid refetching unchanged entries.citeturn0search2
VINCE Vulnerability Note API
The VINCE documentation describes an unauthenticated REST-style API for structured retrieval:citeturn1view0
| Endpoint | Payload | Notes | 
|---|---|---|
| GET /vuls/api/{id}/ | Canonical note metadata (title, overview, markdown segments, timestamps, aliases). | Use numeric ID (e.g., 257161). | 
| GET /vuls/api/{id}/vuls/ | Per-CVE vulnerability records tied to the note. | Includes CVE, description, timestamps. | 
| GET /vuls/api/{id}/vendors/ | Vendor statements per advisory. | Provides status text and optional references. | 
| GET /vuls/api/{id}/vendors/vuls/ | Vendor × vulnerability status matrix. | “known_affected” vs “known_not_affected” semantics. | 
| GET /vuls/api/vuls/cve/{cve}/ | Reverse lookup by CVE. | Returns combined note + vendor context. | 
| GET /vuls/api/{year}/summary/ | Annual summary listing ( count,notes[]). | Year-month variants exist ( /{year}/{month}/summary/). | 
| GET /vuls/api/{id}/csaf/ | CSAF 2.0 export generated by VINCE. | Useful for downstream CSAF tooling. | 
Operational considerations:
- API responses are JSON (UTF-8) and publicly accessible; no authentication tokens or cookies are required.citeturn1view0
- Monthly and annual summary endpoints enable incremental crawling without diffing the Atom feed.
- Expect high-volume notes to expose dozens of vendor records—prepare batching and pagination at the connector layer even though the API returns full arrays today.
- Apply polite backoff: the documentation does not publish explicit rate limits, but the kb.cert.org infrastructure throttles bursts; mirror existing backoff strategy (exponential with jitter) used by other connectors.
- Detail fetch tolerates missing optional endpoints (vendors,vendors-vuls,vuls) by logging a warning and continuing with partial data; repeated 4xx responses will not wedge the cursor.
Telemetry & monitoring
The connector exposes an OpenTelemetry meter named StellaOps.Concelier.Connector.CertCc. Key instruments include:
- Planning: certcc.plan.windows,certcc.plan.requests, andcertcc.plan.window_days.
- Summary fetch: certcc.summary.fetch.attempts,.success,.not_modified,.failures.
- Detail fetch: certcc.detail.fetch.attempts,.success,.unchanged,.missing,.failureswith anendpointdimension (note/vendors/vuls/vendors-vuls).
- Parsing: certcc.parse.success,.failures, plus histograms for vendor/status/vulnerability counts.
- Mapping: certcc.map.success,.failures, and histogramscertcc.map.affected.count/certcc.map.normalized_versions.count.
Structured logs surface correlation IDs across fetch, parse, and map stages. Failures emit warnings for tolerated missing endpoints and errors for retry-worthy conditions so operators can hook them into existing alert policies.
Historical data sets
CERT/CC publishes a Vulnerability Data Archive (JSON exports plus tooling) for deep history or backfills. The archive is hosted on the SEI site with mirrored GitHub repositories containing normalized JSON conversions.citeturn0search3turn0search4
Snapshot regression workflow
The connector ships deterministic fixtures so QA and Merge teams can replay fetch→parse→map without live calls. Use the following flow when validating changes or refreshing snapshots:
- dotnet test src/StellaOps.Concelier.Connector.CertCc.Tests– runs the connector snapshot suite against canned VINCE responses.
- UPDATE_CERTCC_FIXTURES=1 dotnet test src/StellaOps.Concelier.Connector.CertCc.Tests– regenerates fixtures under- src/StellaOps.Concelier.Connector.CertCc.Tests/Fixtures/*.snapshot.jsonand mirrors them in the test output directory (- bin/Debug/net10.0/Source/CertCc/Fixtures).- The harness now records every HTTP request; certcc-requests.snapshot.jsonmust list summaries/months in canonical order.
- Expect certcc-advisories.snapshot.jsonto include normalized versions (scheme=certcc.vendor) and provenance decision reasons.
 
- The harness now records every HTTP request; 
- Review diffs and attach certcc-*.snapshot.jsonplus test logs when handing off to Merge.
Fixtures are sorted and timestamps normalized to UTC ISO‑8601 to preserve determinism across machines.
Next steps for the connector
- Implement Atom polling for quick detection, with VINCE API lookups for structured details. CertCcSummaryPlanneralready computes the VINCE year/month summary URIs to fetch per window; wire this into the fetch job and persist the resultingTimeWindowCursorState.
- Persist updatedtimestamps and VINCErevisioncounters to drive resume logic.
- Capture vendor statements/CSAF exports to populate range primitives once model hooks exist.
- Evaluate using the data archive for seed fixtures covering legacy notes (pre-2010).***