CWE

Indice dei contenuti

    Il CWE (Common Weakness Enumeration) è una tassonomia gerarchica delle tipologie di debolezze nel software e nell’hardware, mantenuta da MITRE. Si distingue fondamentalmente dal CVE: mentre il CVE cataloga istanze specifiche di vulnerabilità (“questa versione di Log4j ha questa vulnerabilità specifica”), il CWE cataloga le classi di difetti ricorrenti che generano vulnerabilità (“buffer overflow”, “SQL injection”, “race condition”). Ogni CVE è classificato con uno o più CWE che ne descrivono la tipologia sottostante.

    Struttura gerarchica

    I CWE sono organizzati in una gerarchia: Pillar → Class → Base → Variant. A ogni livello il difetto è descritto con maggiore specificità:

    • Pillar (es. CWE-664 — Improper Control of a Resource): categoria astrattissima
    • Class (es. CWE-400 — Uncontrolled Resource Consumption): più specifica
    • Base (es. CWE-770 — Allocation of Resources Without Limits): descrive una tipologia concreta
    • Variant (es. CWE-789 — Memory Allocation with Excessive Size Value): istanza specifica

    CWE Top 25

    Il NIST pubblica annualmente il CWE Top 25 Most Dangerous Software Weaknesses, calcolato analizzando migliaia di CVE del NVD. Le posizioni di testa persistenti:

    PosizioneCWENome
    1CWE-787Out-of-bounds Write
    2CWE-79Cross-site Scripting (XSS)
    3CWE-89SQL Injection
    4CWE-416Use After Free
    5CWE-78OS Command Injection
    6CWE-20Improper Input Validation
    7CWE-125Out-of-bounds Read
    8CWE-22Path Traversal
    9CWE-352CSRF
    10CWE-434Unrestricted Upload of Dangerous File

    Utilizzo pratico

    Il CWE è il vocabolario comune per la classificazione delle debolezze nel Secure SDLC:

    • Gli strumenti SAST (Static Application Security Testing) mappano le loro regole ai CWE, permettendo di filtrare e prioritizzare i risultati per categoria di debolezza.
    • Le linee guida di sviluppo sicuro (OWASP, SEI CERT Coding Standards) sono organizzate per CWE.
    • I programmi di bug bounty usano i CWE per classificare le vulnerabilità segnalate dai ricercatori.
    • I contratti di sviluppo software specificano sempre più spesso requisiti di assenza di CWE specifici (es. “nessun CWE-89 SQL Injection nel codice consegnato”).

    Conoscere i CWE più comuni è il punto di partenza per un developer che vuole scrivere codice sicuro: ogni CWE ha una pagina dettagliata su cwe.mitre.org con descrizione, esempi di codice vulnerabile e mitigazioni.

    Ultimo aggiornamento: