OpenNIT

Quelltext des aktuellen Standes

Fassung 1.1.1

238_cve_software_match.sql

2 KB
-- Migration 238: Schwachstellen den betroffenen Geräten zuordnen
--
-- Bisher findet das CVE-Modul über von Hand gepflegte Stichwörter: Wer
-- „acrobat" einträgt, sieht Acrobat-Meldungen. Welche Geräte betroffen sind,
-- steht nirgends – obwohl das Software-Inventar seit kurzem weiß, wo welches
-- Programm läuft.
--
-- Verbunden wird über die CPE-Kennung, die die NVD an jeder Meldung führt
-- (`cpe:2.3:a:adobe:acrobat_reader:…`). Sie ist maschinenlesbar und stabil,
-- anders als der Anzeigename.
--
-- Zugeordnet wird **je Programm, nicht je Meldung**: Ein Programm bekommt
-- einmal seine CPE-Kennung, danach trifft jede Meldung dazu automatisch die
-- richtigen Geräte. Andersherum – Meldung für Meldung – wäre es bei tausenden
-- Meldungen nicht zu pflegen.

-- ------------------------------------------------------------
-- 1. Die CPE-Kennungen einer Meldung
-- ------------------------------------------------------------
-- `affected` führt bereits die Anzeigenamen („Adobe Acrobat_reader"). Für den
-- Abgleich braucht es die Rohform, weil aus ihr die Zuordnung entsteht.
--
-- Gefüllt wird die Spalte beim nächsten Abruf der Meldungen: Der Lauf schreibt
-- jede gefundene Meldung neu, also auch die bereits zwischengespeicherten. Bis
-- dahin bleibt sie leer und die Zuordnung greift nicht.
ALTER TABLE `cve_cache`
    ADD COLUMN `affected_cpe` TEXT NULL
        COMMENT 'CPE-Kennungen der betroffenen Produkte als "hersteller:produkt"';

-- ------------------------------------------------------------
-- 2. Welches Programm welcher CPE-Kennung entspricht
-- ------------------------------------------------------------
-- Mehrere Kennungen je Programm sind der Normalfall: Dieselbe Anwendung läuft
-- bei der NVD unter mehreren Produktnamen, und eine Suite deckt mehrere ab.
CREATE TABLE IF NOT EXISTS `software_title_cpe` (
    `title_id` INT UNSIGNED NOT NULL,
    `cpe` VARCHAR(190) NOT NULL COMMENT 'hersteller:produkt, klein geschrieben',
    `linked_by` BIGINT UNSIGNED NULL,
    `linked_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (`title_id`, `cpe`),
    INDEX `idx_stc_cpe` (`cpe`),
    CONSTRAINT `fk_stc_title` FOREIGN KEY (`title_id`)
        REFERENCES `software_titles` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='Zuordnung erfasster Programme zu den CPE-Kennungen der NVD';