7. SQL Injection
What
un attaccante è in grado di inserire dichiarazioni
SQL in una query esistente manipolando i dati
passati in input ad una applicazione.
8. SQL Injection
Why
assenza / errata validazione degli input
creazione dinamica di SQL in modo naif
public boolean auth(String user) {
String sql = “select * from FW01_USER where username = ” + param;
... // query execution...
}
9. OS Injection
What
un attaccante è in grado di eseguire direttamente
comandi del sistema operativo ospitante il server
web o l’application server manipolando i dati
passati in input ad una applicazione.
10. OS Injection
Why
assenza / errata validazione degli input
esecuzione diretta di eseguibili nella shell sottostante
mediante stringhe di comando contenenti i parametri in input
11. Path traversal
What
un attaccante è in grado accedere alle risorse al
di fuori del web tree.
12. Path traversal
Why
assenza / errata validazione degli input
utilizzo dell’input per la costruzione di referenze a file e
directory
13. Path traversal
Why
assenza / errata validazione degli input
utilizzo dell’input per la costruzione di referenze a file e
directory
http://xxx.yyy.zzz/getFile.jsp?file=report.pdf
14. Path traversal
Why
assenza / errata validazione degli input
utilizzo dell’input per la costruzione di referenze a file e
directory
http://xxx.yyy.zzz/getFile.jsp?file=report.pdf
http://xxx.yyy.zzz/getFile.jsp?file=../../../../src/code/src.zip
15. OWASP Top 10
✓ Injection
2. Cross-Site Scripting (XSS)
3. Broken Authentication and Session Management
4. Insecure Direct Object References
5. Cross-Site Request Forgery (CSRF)
6. Security Misconfiguration
7. Insecure Cryptographic Storage
8. Failure to Restrict URL Access
9. Insufficient Transport Layer Protection
10. Unvalidated Redirects and Forwards
16. XSS
What
un attaccante è in grado di modificare l’output di
una pagina prodotta da una web application per
eseguire codice javascript / ActiveX / mobile
code senza modificare i dati o le configurazioni
del server.
17. XSS
Why
assenza / errata validazione degli input
assenza di escaping dell’output
18. XSS
How
Validazione degli input e degli output
Cookies HttpOnly
19. OWASP Top 10
✓ Injection
✓ Cross-Site Scripting (XSS)
3. Broken Authentication and Session Management
4. Insecure Direct Object References
5. Cross-Site Request Forgery (CSRF)
6. Security Misconfiguration
7. Insecure Cryptographic Storage
8. Failure to Restrict URL Access
9. Insufficient Transport Layer Protection
10. Unvalidated Redirects and Forwards
20. Autenticazione
Errori di design Errori di implementazione
• password deboli • logiche fail-open
• vulnerabilità a forza bruta • registrazione / comunicazione
insicura di credenziali
• messaggi differenziati di errore
• uso di canali non cifrati
• recupero password debole
21. Autenticazione
Errori di design Errori di implementazione
• password deboli • logiche fail-open
• vulnerabilità a forza bruta • registrazione / comunicazione
insicura di credenziali
• messaggi differenziati di errore
• uso di canali non cifrati
• recupero password debole
22. Autenticazione
Errori di design Errori di implementazione
• password deboli • logiche fail-open
• vulnerabilità a forza bruta Limite al • registrazione / comunicazione
# tentativi / time slice insicura di credenziali
• messaggi differenziati di errore
• uso di canali non cifrati
• recupero password debole
23. Autorizzazione
Errori logici
• controlli client side
• parametri HTTP usati come ACL
Errori di implementazione
• URL diretti, privilegiati, segreti
24. Sessioni e cookie
STATO
SICUREZZA Semplicità
Server side Client side
Fat session Thin session
Session token
25. OWASP Top 10
✓ Injection
✓ Cross-Site Scripting (XSS)
✓ Broken Authentication and Session Management
4. Insecure Direct Object References
5. Cross-Site Request Forgery (CSRF)
6. Security Misconfiguration
7. Insecure Cryptographic Storage
8. Failure to Restrict URL Access
9. Insufficient Transport Layer Protection
10. Unvalidated Redirects and Forwards
26. Insecure Direct Object Refs
String query = "SELECT * FROM accts WHERE account = ?";
PreparedStatement pstmt =
connection.prepareStatement(query, ... );
pstmt.setString( 1, request.getParameter("acct"));
ResultSet results = pstmt.executeQuery();
http://example.com/app/accountInfo?acct=notmyacct
27. OWASP Top 10
✓ Injection
✓ Cross-Site Scripting (XSS)
✓ Broken Authentication and Session Management
✓ Insecure Direct Object References
5. Cross-Site Request Forgery (CSRF)
6. Security Misconfiguration
7. Insecure Cryptographic Storage
8. Failure to Restrict URL Access
9. Insufficient Transport Layer Protection
10. Unvalidated Redirects and Forwards