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#
- STRIDE e' un acronimo: Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege.
- Si applica durante la fase di design (prima che il codice esista), non dopo.
- Si usa sui Data Flow Diagram (DFD): ogni componente viene analizzato per le minacce STRIDE applicabili.
- Ogni lettera corrisponde a una proprieta' CIA violata e ha una difesa specifica.
- DREAD e' un sistema di scoring per prioritizzare le minacce STRIDE trovate.
- 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
| Lettera | Minaccia | Proprieta' violata | Attacchi tipici | Difesa principale |
|---|---|---|---|---|
| S | Spoofing | Authentication | ARP poisoning, IP spoofing, email spoofing | MFA, certificati, firma digitale |
| T | Tampering | Integrity | SQL injection, MitM, modifica log | Hash, firma, ACL, autorizzazione |
| R | Repudiation | Non-repudiation | Negare una transazione, log cancellati | Logging immutabile, firma digitale |
| I | Information Disclosure | Confidentiality | Directory traversal, sniffing, AXFR | Encryption, ACL, least privilege |
| D | Denial of Service | Availability | SYN flood, DDoS, Billion Laughs | Rate limiting, redundancy, SYN cookies |
| E | Elevation of Privilege | Authorization | Dirty COW, SUID exploit, sudo abuse | Least 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 DFD | S | T | R | I | D | E |
|---|---|---|---|---|---|---|
| External Entity (utente, sistema esterno) | SI | SI | SI | |||
| Process (applicazione, microservizio) | SI | SI | SI | SI | SI | |
| Data Store (database, file, cache) | SI | SI | SI | SI | ||
| Data Flow (canale di comunicazione) | SI | SI | SI |
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:
| Dimensione | Punteggio | Motivazione |
|---|---|---|
| Damage | 9 | Esfiltrazione completa del database, possibile RCE |
| Reproducibility | 10 | Funziona sempre se il campo e' vulnerabile |
| Exploitability | 8 | Tool automatici (sqlmap) rendono l'exploit triviale |
| Affected Users | 10 | Tutti gli utenti nel DB colpiti |
| Discoverability | 7 | Rilevabile con scanner automatici |
| Score | 8.8/10 | Priorita' 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)
| Categoria | Domanda | Risposta | Difesa proposta |
|---|---|---|---|
| Spoofing | Chi puo' fingere di essere un cliente legittimo? | Chiunque con un token JWT scaduto o rubato | Token rotation + blacklist |
| Tampering | L'importo dell'ordine puo' essere modificato in volo? | Si, se non c'e' firma sul payload | HMAC sul payload + TLS |
| Repudiation | Un cliente puo' negare di aver fatto un ordine? | Si, se non c'e' audit trail firmato | Log immutabile + timestamp firmato |
| Info Disclosure | I dati dell'ordine possono essere letti da altri utenti? | Si, se l'ID ordine e' sequenziale e prevedibile | ID ordini randomici (UUID) + auth per risorsa |
| Denial of Service | L'endpoint puo' essere sovraccaricato? | Si, senza rate limiting | Rate limit per IP + per account |
| Elevation of Privilege | Un cliente puo' fare ordini come admin? | Si, se il ruolo non e' verificato server-side | RBAC 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.
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.
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#
- kill-chain - STRIDE si applica alle fasi della kill chain per identificare i punti di intervento
- mitre-attack-framework - complementare a STRIDE: MITRE descrive TTP reali, STRIDE classifica le minacce teoriche
- risk-management-terms - DREAD e' un sistema di risk scoring correlato
- vulnerability-assessment - STRIDE e' usato nella fase di design, VA nella fase di test


