Sicurezza Applicativa: classificazioni degli errori di codifica
Tenete a mente queste tre classificazioni degli errori di codifica.
Quella che preferisco:
7 Kingdom (in order of importance)
- Input Validation and Representation
- API Abuse
- Security Features
- Time and State
- Errors
- Code Quality
- Encapsulation
- Environment
OWASP Top 10 2007
- A1 - Cross Site Scripting (XSS)
- A2 - Injection Flaws
- A3 - Malicious File Execution
- A4 - Insecure Direct Object Reference
- A5 - Cross Site Request Forgery (CSRF)
- A6 - Information Leakage and Improper Error Handling
- A7 - Broken Authentication and Session Management
- A8 - Insecure Cryptographic Storage
- A9 - Insecure Communications
- A10 - Failure to Restrict URL Access
Quella che rende più l'idea:
19 Deadly Sins
- Cross Site Scripting (XSS) problem
- SQL Injection
- Command Injection
- Format string problem
- Buffer overrun
- Integer Overflow problem
- Trusting Network Name resolution
- Failing to protect network traffic
- Failing to store and protect data securely
- Failing to use cryptographically strong random numbers
- Improper file access
- Improper use of SSL/TSL
- Use of weak password based system
- Unathorized key exchange
- Race Conditions (TOCTOU)
- Use of magic URLs and hidden from fields
- Failure to handle errors
- Poor usability
- Information leakage
Inutile dire che se proprio dovessi scegliere una regola su tutte, sceglierei la validazione dei dati immessi dall'utente. Dobbiamo infatti considerare il dato immesso dall'utente non fidato per definizione. Ma attenzione a non risolvere il problema con una black list di caratteri non ammessi. Il problema non è in quello che conosciamo ma in quello che NON conosciamo. Quindi è meglio utilizzare un approccio White-list e filtrare l'input ammettendo solo caratteri o token ammissibili per la nostra applicazione e scartare tutto il resto.
In un prossimo post approfondirò comunque l'argomento della revisione di sicurezza del codice.
I post precedenti sull'argomento Sicurezza Applicativa:
- Sicurezza Applicativa: introduzione
- Sicurezza Applicativa: riferimenti
- Sicurezza Applicativa: linee guida
- Sicurezza Applicativa: best practice per i casi di abuso e i requisiti di sicurezza
- Sicurezza Applicativa: il modello STRIDE per i pattern di attacco
- Sicurezza Applicativa: best practice per l'analisi dei rischi architetturali
Qualche blog link:
Ciao,
RispondiEliminamolto interessante anche questo post: Stop saying input validation.
Mario da Roma.