Modularize vulnerability importers

This commit is contained in:
root committed 2026-11-12 21:08:55 +01:00
1 parent 6e67bae676
commit be02397c9e
14 files changed
+543 -259

No files matched your search

+6 -6
View File
@@ -5,13 +5,13 @@ CREATE TABLE IF NOT EXISTS vulnerabilities (id TEXT PRIMARY KEY, published TEXT,
CREATE TABLE IF NOT EXISTS aliases (alias TEXT NOT NULL, vulnerability_id TEXT NOT NULL REFERENCES vulnerabilities(id) ON DELETE CASCADE, PRIMARY KEY(alias,vulnerability_id));
CREATE INDEX IF NOT EXISTS idx_aliases_vuln ON aliases(vulnerability_id);
CREATE TABLE IF NOT EXISTS affected_packages (
id TEXT PRIMARY KEY, vulnerability_id TEXT NOT NULL REFERENCES vulnerabilities(id) ON DELETE CASCADE,
ecosystem TEXT, package_name TEXT, ranges_json TEXT NOT NULL, versions_json TEXT NOT NULL, source TEXT NOT NULL);
id TEXT PRIMARY KEY, vulnerability_id TEXT NOT NULL REFERENCES vulnerabilities(id) ON DELETE CASCADE,
ecosystem TEXT, package_name TEXT, ranges_json TEXT NOT NULL, versions_json TEXT NOT NULL, source TEXT NOT NULL);
CREATE INDEX IF NOT EXISTS idx_affected_vuln ON affected_packages(vulnerability_id);
CREATE INDEX IF NOT EXISTS idx_affected_package ON affected_packages(ecosystem,package_name);
CREATE TABLE IF NOT EXISTS cpe_matches (
id TEXT PRIMARY KEY, vulnerability_id TEXT NOT NULL REFERENCES vulnerabilities(id) ON DELETE CASCADE,
criteria TEXT, vulnerable INTEGER, version_start_including TEXT, version_start_excluding TEXT,
version_end_including TEXT, version_end_excluding TEXT, source TEXT NOT NULL);
id TEXT PRIMARY KEY, vulnerability_id TEXT NOT NULL REFERENCES vulnerabilities(id) ON DELETE CASCADE,
criteria TEXT, vulnerable INTEGER, version_start_including TEXT, version_start_excluding TEXT,
version_end_including TEXT, version_end_excluding TEXT, source TEXT NOT NULL);
CREATE INDEX IF NOT EXISTS idx_cpe_vuln ON cpe_matches(vulnerability_id);
-- Conditions expressed as AND, OR and negate are deliberately NOT converted into independent vulnerability assertions.
-- Complex NVD AND/NOT configurations are intentionally not flattened into matches.