Skip to main content
  1. Concetti/

STRIDE Threat Model - Framework Microsoft per la Sicurezza by Design

·5 mins
Alessio Barnini
Author
Alessio Barnini
Table of Contents

Cosa fa
#

STRIDE e' un framework di classificazione delle minacce sviluppato da Microsoft che aiuta i team a identificare sistematicamente i rischi di sicurezza durante la fase di design, applicandolo ai Data Flow Diagram del sistema analizzato.

TL;DR
#

  1. STRIDE e' un acronimo: Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege.
  2. Si applica durante la fase di design (prima che il codice esista), non dopo.
  3. Si usa sui Data Flow Diagram (DFD): ogni componente viene analizzato per le minacce STRIDE applicabili.
  4. Ogni lettera corrisponde a una proprieta' CIA violata e ha una difesa specifica.
  5. DREAD e' un sistema di scoring per prioritizzare le minacce STRIDE trovate.
  6. STRIDE e' un framework di classificazione delle minacce: identifica cosa puo' andare storto nel design, non rileva attacchi in corso.

Le 6 categorie STRIDE
#

STRIDE mappa ogni tipo di minaccia a una proprieta' di sicurezza violata. La mappa non e' solo accademica: ogni categoria ha difese specifiche e corrisponde a pattern di attacco ben noti.

graph TD
    STRIDE["STRIDE
Threat Model"]

    S["S - Spoofing
Fingersi un'altra identita'"]
    T["T - Tampering
Modificare dati non autorizzati"]
    R["R - Repudiation
Negare un'azione compiuta"]
    I["I - Information Disclosure
Accesso non autorizzato a dati"]
    D["D - Denial of Service
Rendere il sistema indisponibile"]
    E["E - Elevation of Privilege
Ottenere permessi non autorizzati"]

    STRIDE --- S
    STRIDE --- T
    STRIDE --- R
    STRIDE --- I
    STRIDE --- D
    STRIDE --- E

    style STRIDE fill:#1a365d,stroke:#3182ce,color:#fff
    style S fill:#2d6a4f,stroke:#40916c,color:#fff
    style T fill:#a72626,stroke:#c0392b,color:#fff
    style R fill:#7b3f00,stroke:#c67c26,color:#fff
    style I fill:#4a235a,stroke:#8e44ad,color:#fff
    style D fill:#154360,stroke:#2471a3,color:#fff
    style E fill:#1b2631,stroke:#5d6d7e,color:#fff
LetteraMinacciaProprieta' violataAttacchi tipiciDifesa principale
SSpoofingAuthenticationARP poisoning, IP spoofing, email spoofingMFA, certificati, firma digitale
TTamperingIntegritySQL injection, MitM, modifica logHash, firma, ACL, autorizzazione
RRepudiationNon-repudiationNegare una transazione, log cancellatiLogging immutabile, firma digitale
IInformation DisclosureConfidentialityDirectory traversal, sniffing, AXFREncryption, ACL, least privilege
DDenial of ServiceAvailabilitySYN flood, DDoS, Billion LaughsRate limiting, redundancy, SYN cookies
EElevation of PrivilegeAuthorizationDirty COW, SUID exploit, sudo abuseLeast privilege, sandbox, AppArmor

STRIDE su Data Flow Diagram
#

STRIDE non si applica al sistema in modo generico ma sui componenti specifici di un Data Flow Diagram (DFD). Ogni tipo di componente e' vulnerabile a un sottoinsieme delle 6 categorie.

flowchart LR
    U["External Entity
(Utente Browser)"] --> P["Process
(Web App)"]
    P --> DS["Data Store
(Database)"]
    P <--> EXT["External Entity
(Servizio Email)"]

    U -. "Spoofing - chi e' davvero?" .-> P
    P -. "Tampering - il codice puo' essere modificato?" .-> P
    DS -. "Information Disclosure - dati cifrati?" .-> DS

Quali categorie si applicano a quale componente:

Componente DFDSTRIDE
External Entity (utente, sistema esterno)SISISI
Process (applicazione, microservizio)SISISISISI
Data Store (database, file, cache)SISISISI
Data Flow (canale di comunicazione)SISISI

DREAD: Scoring delle minacce STRIDE
#

DREAD e' il sistema di scoring usato per prioritizzare le minacce trovate con STRIDE. Assegna un punteggio da 1 a 10 a 5 dimensioni.

Esempio di scoring DREAD su una vulnerabilita' SQL Injection:

DimensionePunteggioMotivazione
Damage9Esfiltrazione completa del database, possibile RCE
Reproducibility10Funziona sempre se il campo e' vulnerabile
Exploitability8Tool automatici (sqlmap) rendono l'exploit triviale
Affected Users10Tutti gli utenti nel DB colpiti
Discoverability7Rilevabile con scanner automatici
Score8.8/10Priorita' massima

Scenario Reale
#

Un team di sviluppo sta progettando una nuova API REST per la gestione degli ordini. Prima di scrivere una riga di codice, il security engineer applica STRIDE al DFD dell'API:

Componente analizzato: endpoint POST /api/orders (Process)

CategoriaDomandaRispostaDifesa proposta
SpoofingChi puo' fingere di essere un cliente legittimo?Chiunque con un token JWT scaduto o rubatoToken rotation + blacklist
TamperingL'importo dell'ordine puo' essere modificato in volo?Si, se non c'e' firma sul payloadHMAC sul payload + TLS
RepudiationUn cliente puo' negare di aver fatto un ordine?Si, se non c'e' audit trail firmatoLog immutabile + timestamp firmato
Info DisclosureI dati dell'ordine possono essere letti da altri utenti?Si, se l'ID ordine e' sequenziale e prevedibileID ordini randomici (UUID) + auth per risorsa
Denial of ServiceL'endpoint puo' essere sovraccaricato?Si, senza rate limitingRate limit per IP + per account
Elevation of PrivilegeUn cliente puo' fare ordini come admin?Si, se il ruolo non e' verificato server-sideRBAC strict, verifica ruolo su ogni richiesta

Il risultato e' una lista di requisiti di sicurezza prima che il codice esista, non una lista di bug da correggere dopo.

Tip

STRIDE e' un framework di classificazione delle minacce nella fase di design: non rileva attacchi in corso, non testa il codice. E' un brainstorming strutturato applicato al design del sistema, prima che il codice esista.

Tip

SQL Injection appartiene sia a Tampering (modifica dati) sia a Information Disclosure (esfiltrazione dati). La stessa tecnica di attacco puo' appartenere a piu' categorie STRIDE.

Dev parallel: come threat modeling in una code review prima di fare merge. Per ogni endpoint o feature nuova, chiedersi "chi puo' abusarne?" usando STRIDE come checklist: chi puo' fingersi qualcun altro? cosa puo' essere modificato? chi puo' negare di aver fatto qualcosa? cosa puo' essere letto senza autorizzazione? cosa puo' essere sovraccaricato? cosa puo' essere usato per ottenere piu' permessi del dovuto? Cinque minuti per endpoint, zero ore di remediation post-deploy.

Collegato a
#

Related