cve-digest sits on a trust boundary: it reads untrusted feed text, passes
some of it to a language model, and writes into chat, trackers and SIEMs.
A defect in that boundary is a security defect, and reports are welcome.
Report privately through GitHub: the repository's Security tab, then Report a vulnerability. That opens a private advisory visible only to you and the maintainer. Please do not open a public issue for a suspected vulnerability.
Include what you ran (version, configuration that matters, provider), what you expected, what happened, and the smallest input that reproduces it. A crafted CVE description or feed response is the most useful form of reproduction.
This is a solo-maintained project. Reports are acknowledged within seven days, and the advisory records what was fixed, in which version, and who reported it unless you ask not to be named.
Pre-1.0, only the latest release on main receives fixes. Pin a tag if you
need stability, and read CHANGELOG.md before moving it.
The claims in docs/threat-model.md are the scope.
In particular:
- model output that changes a priority, a tier or a KEV statement;
- feed or model text that reaches a channel (digest, Slack, email, ticket, terminal) as live markup, a mention, a link or a control sequence;
- a credential or token written to a log, a digest, a verdict or a ticket;
- a ticket or webhook write the configuration did not authorise, or a redirect that sends a request somewhere it was not configured to go;
- a failed source read as evidence of absence (an item ranked lower because a lookup failed);
- the state backend accepting a watermark or stored item it should refuse.
- The security of NVD, FIRST EPSS, the CISA KEV catalogue, OSV or the model provider themselves.
- Findings that need control of the operator's own configuration or
environment (
.env, a custom provider module, the SBOM or VEX files). These are operator input and trusted by design. - Wording quality of a model summary that stays within its tier and bounds.