Zkratka proCommon Vulnerabilities and Exposurescé-vé-é (často se čte anglicky sí-ví-í)TakéCVE ID, CVE identifikátor, CVE záznamPokročilý

Definice

CVE je veřejný katalog konkrétních zranitelností softwaru a hardwaru, ve kterém každá chyba dostane jednoznačné číslo ve tvaru CVE-rok-pořadí. Identifikátor slouží jako společný odkaz pro výrobce, bezpečnostní skenery, databáze i administrátory, takže všichni mluví prokazatelně o téže chybě bez ohledu na to, jak ji kdo pojmenoval.

Kategorie: KyberbezpečnostAktualizováno

Proč potřebujeme společné číslo pro chybu

Než vznikl program CVE, popisoval každý výrobce antiviru i skeneru tutéž chybu vlastním názvem. Administrátor pak nedokázal určit, zda dvě hlášení mluví o jednom problému, nebo o dvou. CVE tenhle zmatek řeší tím, že přiděluje jeden neutrální identifikátor, na který se odkazují bulletiny dodavatelů, distribuční záplaty i výstupy nástrojů.

Záznam CVE je záměrně stručný: identifikátor, krátký popis, dotčené produkty a odkazy na zdroje. Nejde o návod k útoku ani o hodnocení závažnosti. Bodování řeší samostatný systém CVSS a rozšiřující data (typ chyby, dopad, dostupnost opravy) doplňují navazující databáze, například NVD provozovaná americkým NIST.

Jak vypadá identifikátor a kdo ho přiděluje

Formát je CVE-RRRR-NNNN, kde rok označuje okamžik rezervace čísla, nikoli nutně rok zveřejnění nebo objevu. Číselná část má nejméně čtyři číslice a není omezená shora, takže existují i identifikátory se sedmi číslicemi.

Čísla nerozdává jediná centrála. Přiděluje je síť organizací zvaných CNA (CVE Numbering Authority): velcí výrobci jako Microsoft, Red Hat nebo Google si čísla přidělují pro vlastní produkty, ostatní chyby pokrývají obecné autority a program MITRE jako poslední instance. Proto se stává, že identifikátor existuje dlouho před tím, než se objeví veřejný popis: záznam je ve stavu rezervace.

Co s CVE dělá provozní tým

V praxi CVE tvoří páteř správy záplat. Skener závislostí projde soupis knihoven, porovná verze proti databázi a vrátí seznam identifikátorů. Tým pak rozhoduje, co opravit hned a co počká: podle skóre CVSS, podle toho, zda je zranitelná část kódu vůbec volaná, a podle toho, jestli se chyba reálně zneužívá. Americká CISA vede samostatný seznam KEV se zranitelnostmi pozorovanými při útocích, který bývá pro prioritizaci užitečnější než samotné skóre.

Pozor na dva časté zdroje falešného klidu. Zaprvé, existence CVE neznamená, že je oprava k dispozici. Zadruhé, absence CVE neznamená bezpečný software: velká část chyb v menších projektech se nikdy nezaeviduje, protože nikdo o číslo nepožádal. Ověřením reálné exploatovatelnosti ve vašem prostředí je až penetrační test, nikoli výpis ze skeneru.

CVE, CWE a další zkratky kolem

Identifikátor CVE popisuje jeden konkrétní výskyt zranitelnosti v určitém produktu. Naproti tomu CWE je katalog tříd chyb (například chybná kontrola mezí pole nebo SQL injection) a slouží k popisu příčiny. Jeden CVE záznam tak bývá zařazen pod jedno nebo více CWE. Skóre CVSS pak vyjadřuje závažnost čísly od 0 do 10 a KEV říká, zda se chyba zneužívá v reálném provozu.

Příklady z praxe

  1. Log4Shell v podnikové Javě

    Zranitelnost knihovny Log4j vedená jako CVE-2021-44228 umožňovala vzdálené spuštění kódu přes zalogovaný řetězec. Provozní týmy podle tohoto jediného čísla dohledávaly zasažené aplikace napříč stovkami služeb, protože stejný identifikátor uváděly bulletiny všech výrobců i výstupy skenerů. Ukázalo se přitom, že knihovna byla často tranzitivní závislostí, o které nikdo nevěděl.

  2. Audit závislostí v Node.js projektu

    Příkaz npm audit porovná strom závislostí proti databázi hlášení a u každého nálezu uvede identifikátor CVE spolu se závažností a verzí, ve které je oprava. Výstup je vstup pro rozhodování, ne verdikt: u vývojových závislostí bez přístupu do produkce bývá priorita nižší než u knihovny obsluhující HTTP požadavky.

    $ npm audit
    
    lodash  <4.17.21
    Severity: high
    Command Injection - CVE-2021-23337
    fix available via `npm audit fix`

Časté omyly

MýtusKdyž má knihovna CVE, je nebezpečná a musíme ji okamžitě vyhodit.
Ve skutečnostiZáznam CVE popisuje chybu v konkrétní verzi a často jen v určité konfiguraci nebo funkci. Pokud vaše aplikace zranitelnou cestu vůbec nevolá, může být reálné riziko nulové. Rozhodující je aktualizace na opravenou verzi, ne panika kolem počtu nálezů.
MýtusCVE číslo přiděluje jedna centrální autorita, která chybu ověřila.
Ve skutečnostiČísla přiděluje rozsáhlá síť autorit CNA, mezi nimi i samotní výrobci pro své produkty. Kvalita a hloubka popisu se proto liší a některé záznamy jsou sporné nebo duplicitní.
MýtusČíslo v CVE-2024-XXXXX znamená, že chyba byla objevena v roce 2024.
Ve skutečnostiRok v identifikátoru označuje, kdy bylo číslo rezervováno. Zveřejnění i samotný objev mohou spadat do jiného roku, u dlouho embargovaných chyb klidně o rok dříve nebo později.

Časté dotazy

Kde si ověřím detaily konkrétního CVE?
Detaily ke konkrétnímu CVE najdete ve třech na sobě nezávislých vrstvách. Základní záznam s popisem a odkazy vede program CVE. Obohacená data, tedy skóre CVSS, zařazení pod CWE a seznam dotčených verzí, publikuje databáze NVD amerického institutu NIST. Nejspolehlivější informaci o dopadu na váš konkrétní systém ale vydává výrobce nebo správce distribuce, protože ten ví, zda a jak byla zranitelná část kódu do jeho balíčku zahrnuta a v jaké verzi je oprava.
Jak se CVE liší od CVSS skóre?
CVE je identifikátor konkrétní zranitelnosti, tedy jméno problému. CVSS je metodika, která témuž problému přiřadí číselné skóre závažnosti od 0 do 10 na základě vektoru útoku, potřebných oprávnění a dopadu na důvěrnost, integritu a dostupnost. Jeden záznam CVE tak může mít několik různých CVSS skóre podle toho, kdo je počítal: jinak chybu ohodnotí výrobce, jinak NVD. Pro prioritizaci záplat je proto vhodné doplnit ještě informaci o reálném zneužívání.
Může firma požádat o přidělení CVE pro chybu, kterou našla?
Chybu nalezenou v cizím produktu lze nahlásit buď přímo výrobci, pokud je registrovanou autoritou CNA, nebo prostřednictvím obecné autority programu CVE. Součástí je zpravidla koordinované zveřejnění: nálezce dá výrobci čas na opravu a identifikátor se zveřejní společně se záplatou. Vlastní open source projekt se může stát autoritou CNA a přidělovat čísla pro svůj kód sám, což je běžné u větších projektů a distribucí.
Co znamená, že je CVE ve stavu Reserved nebo Rejected?
Stav Reserved znamená, že číslo bylo přiděleno, ale popis zatím není veřejný. Bývá to během embarga před vydáním opravy, takže na identifikátor můžete narazit v changelogu dřív, než k němu existuje detail. Stav Rejected označuje záznam, který byl stažen: jde například o duplicitu jiného CVE, o chybu, která se neprokázala, nebo o problém, jenž nakonec nebyl vyhodnocen jako zranitelnost. Rejected záznamy se nemažou, aby staré odkazy zůstaly dohledatelné.
Znamená nulový počet CVE, že je knihovna bezpečná?
Nulový počet nalezených CVE u knihovny neříká nic o její kvalitě. Znamená jen, že u ní nikdo nepožádal o přidělení identifikátoru, což je u malých a málo zkoumaných projektů běžné. Paradoxně platí, že hodně používané a intenzivně auditované knihovny mají záznamů více, protože se jim někdo systematicky věnuje. Bezpečnost závislosti se posuzuje spíše podle aktivity údržby, rychlosti reakce na hlášení a existence bezpečnostní politiky projektu.

Zdroje

  1. National Vulnerability Database(otevře se v novém okně)NIST
  2. OWASP Dependency-Check(otevře se v novém okně)OWASP Foundation
  3. Common Vulnerabilities and Exposures(otevře se v novém okně)Wikipedia

Související pojmy

Potřebujete to vyřešit v praxi?

Poradíme, jak na to ve vašem projektu

Vysvětlit pojem je jedna věc, navrhnout kolem něj funkční řešení druhá. Ozvěte se a probereme, co dává smysl u vás.