netanelcyber / netanelcyber/AdPentestAI-Python
[Discussion] CVE catalog format — flat dicts vs typed registry?
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 5
- Forks
- 2
- Avg merge
- 22h 25m
- Merged PRs (30d)
- 7
Description
Question
cve_catalog_100.py and cve_catalog_de_novo_40.py currently store entries as list[dict[str, str]] with 4 keys. The core ADCVERegistry uses a richer dict shape (name, description, exploitation_status, tags, ...). Is now the right time to unify?
Options
- Keep flat dicts — trivial to hand-edit, easy diff, no schema evolution cost. Downside: no type checking, silent typos.
- Dataclass (
CVEEntry) — mypy catches typos, IDE autocompletes fields, still trivially serialisable. Downside: PRs adding CVEs get noisier. - JSON/YAML data files + loader — non-devs can edit, better for automation from NVD feeds. Downside: needs a schema validator to keep quality.
Related concerns
- Should we dedupe across the two catalogs, or is overlap intentional (e.g.
CVE-2024-38063appears in both)? - Do we want per-CVE CVSS, affected-versions ranges, MSRC links? If yes → option 2 or 3 wins on maintainability.
- Should the extended catalog be sourced from a periodic NVD pull rather than hand-maintained?
Thoughts?
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Compare cve_catalog_100.py and cve_catalog_de_novo_40.py with the core ADCVERegistry shape. First determine whether deduplication, richer CVE metadata, or an NVD-based source is required; the issue is done only when the data model and maintenance approach are decided clearly enough to guide a follow-up implementation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- security
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100