Contributing to the Knowledge Base

The KB in kb/vulnerabilities.json is what gives the audit tool its
context. Without an up-to-date KB, the version check still works but
the bypass technique mapping becomes stale.

When to update

Sources we accept

✅ Acceptable:

🛑 Not acceptable:

Structure of a contribution

A KB contribution PR should touch:

  1. kb/vulnerabilities.json — the actual data.
  2. _meta.last_updated — bump the date.
  3. _meta.sources — append the new URL if not already present.
  4. PR description — at least one quote from the source justifying each
    factual claim.

Example PR description for a new infostealer:

## New infostealer: FooStealer (2026-Q1)

Adds an entry under `known_infostealers.FooStealer` based on:

- Cybereason blog post, 2026-02-10: "FooStealer technical analysis"
  https://www.cybereason.com/blog/foostealer-2026

Key claims:

- First seen 2026-01. Cite: "First sightings on 27 January 2026" (Cybereason).
- v20 bypass via debugger-attach. Cite: "FooStealer attaches as a debugger
  to chrome.exe and reads the key from the heap" (Cybereason).
- Targets Chrome 127-148. Cite: "Tested working on Chrome 127 through 148"
  (Cybereason).

No new bypass technique to add — debugger-attach is already documented under
`bypass_techniques.debugger-attach-voidstealer`.

Style guidelines

Things to leave out

We are conservative about what we publish:

We include:

Schema validation

There is no strict schema yet. Please:

py -c "import json; json.load(open('kb/vulnerabilities.json', encoding='utf-8')); print('KB OK')"

Plan: introduce JSON Schema in a future release for CI-level
validation.

When in doubt

Open a draft PR and ping the maintainers in the description. We
prefer over-communication when in ambiguous territory. There's no
penalty for asking before submitting.