OWASP: linee guida e tool per la sicurezza delle applicazioni web Security Summit 2010 Matteo Meucci Raoul Chiesa Antonio Parata Paolo Perego Giorgio Fedon Milano 18 Marzo 2010 Copyright 2010- The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License. The OWASP Foundation http://www.owasp.org
Agenda del seminario Introduzione al Capitolo Italiano del progetto OWASP (M.Meucci, R. Chiesa) Linee guida OWASP per lo sviluppo sicuro (A. Parata) - OWASP Building Guide - OWASP Tool: ESAPI Secure Code Review (P.Perego) - OWASP Code Review Guide - OWASP tools: Orizon, O2 Web Application Penetration Testing (G. Fedon) - OWASP Testing Guide - OWASP tools: WebScarab, DirBuster, CAL9000
Introduzione al capitolo Italiano del progetto OWASP
Who am I? Research OWASP-Italy Chair OWASP Testing Guide Lead Work CEO @ Minded Security Application Security Consulting 9+ years on Information Security focusing on Application Security www.mindedsecurity.com
Il progetto Open Web Application Security Project (OWASP) è una organizzazione Open Source dedicata alla creazione e alla diffusione di una cultura per quanto riguarda la sicurezza delle applicazioni web Progetto free, come il materiale disponibile sul portale www.owasp.org Migliaia di membri, +130 capitoli locali e altri partecipanti ai progetti. Milioni di hit su www.owasp.org al mese OWASP-Italy nasce a Gennaio del 2005 con l obiettivo di far conoscere i progetti OWASP e la Web Application Security in Italia
OWASP Worldwide Community 25000 20000 15000 10000 5000 0 Participants 160 140 120 100 80 60 40 20 0 Chapters 6
La base di conoscenza di OWASP 6,381 Articoli 427 presentazioni 200 aggiornamenti/giorno 271 mailing lists 180 blog monitorati
Linee Guida OWASP Gratuite e open source Libri a basso costo Coprono tutti i controlli di sicurezza Centinaia di esperti che collaborano Coprono tutti gli aspetti di sicurezza applicativa Security Summit 18th, March 2010 OWASP-Italy 8
Principali progetti OWASP BOOKS Owasp top10 Building guide Code review guide Testing guide TOOLS WebGoat WebScarab SQLMap SQL Ninja SWF Intruder Orizon Code Crawler
OWASP-Italy e la ricerca OWASP Italy nasce nel Gennaio 2005 Raccoglie centinaia di persone appassionate alla Web Application Security Obiettivi Organizzazione conferenze Scrittura articoli Sviluppo tool Sviluppo documentazione e linee guida La ricerca come base per l industria Mai come nell application security si ha un esigenza di ricerca per lo sviluppo di attività di innovazione
OWASP-Italy Days!
OWASP-Italy News Partnership: CLUSIT, IsecLab, Isaca Roma Università La Sapienza Dipartimento di Informatica, Università del Sannio OWASP Tesi Prof. Aaron Visaggio Nuovi nomi testing guide per uniformare le OWASP guide Iscrivetevi alla mailing list OWASP-it! http://www.owasp.org/index.php/italy
OWASP Code Review Guide
Agenda Dalla teoria The Owasp Code Review Guide Alla pratica Owasp Orizon Owasp O2 Platform OWASP 2 Thursday, March 18, 2010
$ whoami Owasp Italy R&D director Owasp Orizon Project leader Open source enthusiast since 1996 Developer since 1985 Senior consultant at Reply OWASP 3 Thursday, March 18, 2010
Ho un problema... More and More application level issues Sept/Oct 2008 SQL Injection $9,000,000 in 24 Hours (RBS) Business Logic Exploited in US Army Servers May, 2009 HSBC and Barclays sites were both hit by major XSS vulnerabilities - June 2009 The Telegraph site was exposed by a severe SQL injection vulnerability - June 2009 In the last five years, approximately 500 million records containing personal identifying information of United States residents stored in government and corporate databases was either lost Courtesy by Eoin Keary, first appeared in Owasp Belgium Day 2009 or stolen. - www.identitytheft.info OWASP 4 Thursday, March 18, 2010
... che ricorre da molto tempo... Eg: XSS was discovered circa 1996 Initially is was a curiosity Evolved to an exploit Further evolution to a worm MySPACE- SAMMY WORM 2005, first self propagating xss worm Wide scale problem, 13 years later! Toolkits: Mpack, LuckySploit, ISR-Evilgrade etc Attacking the client: Phisihing, Malware Upload Ironically easy to fix and detect but 60%-70% of sites are vulnerable.. Courtesy by Eoin Keary, first appeared in Owasp Belgium Day 2009 OWASP 5 Thursday, March 18, 2010
... e per il quale la soluzione non è banale. Budget IT // security non adeguati indirizzati alla sicurezza perimetrale dedicati a costose soluzioni commerciali Mentalità eterno conflitto security guys vs developers passare ad un SSDLC significa cambiare modo di lavorare Know-how mettere in piedi un SSDLC non è banale sono richieste competenze di sviluppo e di security manca la figura dell application security specialist OWASP 6 Thursday, March 18, 2010
Dalla teoria... OWASP 7 Thursday, March 18, 2010
The Owasp Code review guide Project leader: Eoin Keary Progetto nato nel 2005 Punto di riferimento per la tematica di sicurezza legata al codice Indirizza come effettuare una revisione del codice quali i pattern da cercare quali i tool da utilizzare Secondo libro Owasp più venduto nel 2008 OWASP 8 Thursday, March 18, 2010
Perché fare una code review Perché un controllo a run-time (dicasi penetration test) non valuta bene la business logic dell applicazione poco efficace di fronte ad applicazioni complesse identifica il sintomo del problema ma non la causa mi dice che ho la vulnerabilità X non mi dice in che punto del codice introduco la vulnerabilità X Approccio duplice automatico manuale OWASP 9 Thursday, March 18, 2010
Code review automatica Pro accurata nell identificare anomalie nel codice in grado di evidenziare problemi legati alla qualità del codice Contro non sempre il codice è disponibile legato all approccio usato dai tool commerciali legato all utilizzo di librerie di terze parti enorme mole di falsi positivi enorme enorme» enorme» (no, non mi sono addormentato sulla tastiera :-)) OWASP 10 Thursday, March 18, 2010
Code review manuale Pro rileva problemi di business logic backdoor problemi legati alla privacy e come i dati sono trattati efficace a livello tecnologico tanto quanto la code review automatica mitiga il numero di falsi positivi Contro attività time-consuming e costosa spesso si fa una revisione manuale solo di applicazioni business critical necessita di skill adeguate codice scritto male può essere difficile o impossibile da rivedere OWASP 11 Thursday, March 18, 2010
Ehi... ma ho comprato un tool di analisi statica che... La sola analisi dinamica è debole verso applicazioni senza i dovuti controlli di security niente controlli = niente codice da revisionare niente codice = nessun finding da parte del tool nessun finding = applicazione sicura controlli di tipo matematico gestione degli overflow numerici conversione tra unità di misura differenti funzionalità con precisi vincoli di policy password policy OWASP 12 Thursday, March 18, 2010
... alla pratica OWASP 13 Thursday, March 18, 2010
Owasp Orizon Project 2.0 Project leader: Paolo Perego Progetto nato nel 2006 revisionato profondamente nel 2009 in attesa di definitiva incarnazione nel 2010 La versione 2.0 dovrebbe essere rilasciata a Giugno durante l Owasp AppSEC conference a Stoccolma Highlight scritto in Java +29.000 linee di codice (commenti inclusi) per la versione 1.39 svn co https://orizon.svn.sourceforge.net/svnroot/orizon orizon download it read it love it OWASP 14 Thursday, March 18, 2010
Owasp Orizon Project 2.0 osh web gui Owasp Orizon SkyLine Owasp orizon library Owasp Orizon core (candlekeep engine) database backend OWASP 15 Thursday, March 18, 2010
Owasp Orizon Project 2.0 Pro analizza il codice sorgente (i tool commerciali analizzano l equivalente compilato) l analisi non è influenzata dalle scelte di ottimizzazione del compilatore la mancata presenza di librerie di terze parti non inficia l analisi supporto per vari linguaggi di programmazione Contro difficile da utilizzare limitata libreria di pattern di programmazione insicura scarsa documentazione OWASP 16 Thursday, March 18, 2010
Owasp O2 Platform Project Project leader: Dinis Cruz Progetto nato nel 2008 Si appoggia su diversi motori di scansione commerciali IBM Rational AppScan Source edition (aka Ounce) Fortify opensource codecrawler yasca CAT.NET Findbugs Ha lo scopo di aiutare un revisore di codice a tener traccia del flusso delle variabili e dell esecuzione del programma della propagazione dei pattern d attacco all interno della logica applicativa OWASP 17 Thursday, March 18, 2010
Owasp O2 Platform Project Insieme di moduli Sviluppato in C# O2 MODULES - DEVELOPMENT STATE ACTIVE O2 Tool - Findings Viewer O2 Tool - CirViewer O2 Tool - Rules Manager O2 Cmd - Findings Filter O2 Cmd - Spring MVC O2 Tool - Join Traces O2 Debugger Mdbg O2 Tool - CSharpScripts O2 Scanner - MsCatNet O2 Tool - Host Local Website O2 Tool - Java Execution O2 Tool - O2 Scripts O2 Tool - Python O2 Tool - Search Engine LEGACY O2 Scanners O2 Tool - DotNet Callbacks Maker O2 Tool - Findings Query O2 Tool - Search Assessment Run O2 Tool - View Assessment Run O2 Tool - WebInspect Converter O2 Tool - Filter Assessment Files O2 Tool - O2 Reflector O2 developer senior consultant security consultant analyst manager GEEK-O-METER Wednesday, 19 August 2009 Courtesy by Dinis Cruz, first appeared in O2 presentation in Ottawa, Canada, August 2009 OWASP 18 Thursday, March 18, 2010
Qualche link Owasp Code review guide:http://svel.to/v2 Owasp Orizon blog: http://svel.to/cw Owasp Orizon@twitter: http://svel.to/cx Owasp O2 Platform project: http://svel.to/v1 Mail me: thesp0nge@owasp.org OWASP 19 Thursday, March 18, 2010
Thanks! OWASP 20 Thursday, March 18, 2010
OWASP Building Guide
Agenda Introduzione Struttura di una Enterprise Application ESAPI Api Development Guide Conclusioni 15
Chi sono Security Consultant in Emaze Networks Collaboro con il gruppo di ricerca indipendente USH Co-autore dell owasp testing guide 3.0 e 2.0 Application Security Enthusiast OWASP Day III 23rd, February 2009 OWASP-Italy 3
Introduzione Ogni applicazione dovrebbe essere sviluppata tenendo ben presente il fattore sicurezza Se possibile usare un ciclo di sviluppo software security oriented (SSDLC) Tra le fasi più critiche per quel che riguarda la sicurezza vi è la fase di implementazione
Struttura di una Enterprise Application Architettura multi-layer e multi-tier Complessa Logica di Business Manipola una grande quantità di dati che spesso risultano essere riservati Necessita di rendere i dati persistenti Si deve integrare con applicazioni enterprise già esistenti La maggior parte ha una qualche forma di interazione web
Introduzione - nascita di una vulnerabilità Threat Agent Vector Vulnerability Control Technical Impact Business Impact Vector Business Impact Vector Vulnerability Control Asset Business Impact Vector Vulnerability Missing Control Vector Vulnerability Function Business Impact Asset Vector Vulnerability Control
OWASP Enterprise Security API ESAPI Definisce una serie di interfacce utili per l implementazione di codice sicuro Espone delle implementazione di base delle interfacce attraverso il pattern Singleton È possibile fornire la propria implementazione delle varie interfacce
OWASP Enterprise Security API ESAPI Custom Enterprise Web Application Enterprise Security API Authenticator User AccessController AccessReferenceMap Validator Encoder HTTPUtilities Encryptor EncryptedProperties Randomizer Exception Handling Logger IntrusionDetector SecurityConfiguration Existing Enterprise Security Services/Libraries
Validator Example using System; using Owasp.Esapi; using Owasp.Esapi.Interfaces; namespace ESAPI_Example { internal sealed class PasswordStrengthValidator { private const String ValidationRuleName = "passwordstrengthvalidator"; public PasswordStrengthValidator() { Esapi.Validator.AddRule(ValidationRuleName, new PasswordStrengthValidationRule()); } public Boolean Validate(String password) { return Esapi.Validator.IsValid(ValidationRuleName, password); } } } internal class PasswordStrengthValidationRule : IValidationRule { public Boolean IsValid(String password) { return password.length > 8; } }
Copertura ESAPI OWASP Top Ten A1. Cross Site Scripting (XSS) A2. Injection Flaws A3. Malicious File Execution A4. Insecure Direct Object Reference A5. Cross Site Request Forgery (CSRF) A6. Leakage and Improper Error Handling A7. Broken Authentication and Sessions A8. Insecure Cryptographic Storage A9. Insecure Communications A10. Failure to Restrict URL Access OWASP ESAPI Validator, Encoder Encoder HTTPUtilities (Safe Upload) AccessReferenceMap, AccessController User (CSRF Token) EnterpriseSecurityException, HTTPUtils Authenticator, User, HTTPUtils Encryptor HTTPUtilities (Secure Cookie, Channel) AccessController
Development Guide Descrive delle linee guide per l implementazione sicura delle applicazioni web È in fase di stesura la nuova release 2010 A chi è rivolta Sviluppatori, per poter apprendere in che modo scrivere del codice più sicuro Project Manager, per poter capire quali sono le attività che dovranno essere svolte per creare un software sicuro Security Guys per apprendere le tematiche di secure coding e sapere come applicarle
Development Guide Argomenti trattati Secure Coding Principles Minimize Attack Surface Area Secure Defaults Principle of Least Privilege Threat Risk Modeling Identificazione delle minacce Identificazione delle vulnerabilità Identificazione degli assets Identificazione degli errori più diffusi Cross Site Scripting SQL Injection
Conclusioni OWASP Development Guide per creare awareness nella fase di sviluppo software OWASP ESAPI un aiuto concreto all implementazione di applicazioni enterprise più sicure Un grande aiuto ma non sono sufficienti, bisogna considerare altri aspetti come Security Testing & Penetration Testing Secure deployment Code Review
Conclusioni Domande?
OWASP Testing Guide
Presentazione Ricerca OWASP Italy - Technical Director OWASP Antimalware project leader Testing Guide Contributor Analisi e scoperta di importanti problematiche di sicurezza Minded Security Chief Operation Officer Leading hundreds of Penetration Testing activities and Code Reviews; many of them for the Bank Industry Blog: http://blog.mindedsecurity.com 28
Project History & Complexity 400 350 300 250 200 150 100 50 0 Pages v1 v1.1 v2 v3 Pages
OWASP Testing Guide v3: roadmap 26th April 2008: start the new project OWASP Leaders brainstorming Call for participation: 21 authors Index brainstorming Discuss the article content 20th May 2008: New draft Index 1st June 2008: Let's start writing! 27th August 2008: started the reviewing phase: 4 Reviewers October 2008: Review all the Guide December 2008: published the new version of the OWASP Testing Guide: http://www.owasp.org/index.php/owasp_testing_project (347pages +80!)
Testing Guide v3: Index 1. Frontispiece 2. Introduction 3. The OWASP Testing Framework 4. Web Application Penetration Testing 5. Writing Reports: value the real risk Appendix A: Testing Tools Appendix B: Suggested Reading Appendix C: Fuzz Vectors Appendix D: Encoded Injection SANS Top 20 2007 NIST Technical Guide to Information Security Testing (Draft) Gary McGraw (CTO Cigital) says: In my opinion it is the strongest piece of Intellectual Property in the OWASP portfolio
Testing paragraph template Brief Summary Describe in "natural language" what we want to test. The target of this section is non-technical people (e.g.: client executive) Description of the Issue Short Description of the Issue: Topic and Explanation Black Box testing and example How to test for vulnerabilities: Result Expected:... Gray Box testing and example How to test for vulnerabilities: Result Expected:... References Whitepapers Tools Example 32
Introduction to the methodology In the next slides we will look at a few examples of tests/attacks and at some real-world cases... 33
Information Gathering The first phase in security assessment is of course focused on collecting all the information about a target application. Using public tools it is possible to force the application to leak information by sending messages that reveal the versions and technologies used by the application Available techniques include: Testing: Spiders, robots, and Crawlers (OWASP-IG-001) Search engine discovery/reconnaissance (OWASP-IG-002) Identify application entry points (OWASP-IG-003) Web Application Fingerprint (OWASP-IG-004) Application Discovery (OWASP-IG-005) Analysis of Error Codes (OWASP-IG-006) 34
Information Gathering (cont.) Application Fingerprint Knowing the version and type of a running web server allows testers to determine known vulnerabilities and the appropriate exploits to use along the tests. Netcat is the tool of choice for this very well known technique $ nc 216.48.3.18 80 HEAD / HTTP/1.0 HTTP/1.1 200 OK Date: Mon, 16 Jun 2003 02:53:29 GMT Server: Apache/1.3.3 (Unix) (Red Hat/Linux) Last-Modified: Wed, 07 Oct 1998 11:18:14 GMT ETag: "1813-49b-361b4df6" Accept-Ranges: bytes Content-Length: 1179 Connection: close Content-Type: text/html 35
Configuration Management Testing SSL/TLS Testing (OWASP-CM-001) DB Listener Testing (OWASP-CM-002) Infrastructure Configuration Management Testing (OWASP-CM-003) Application Configuration Management Testing (OWASP-CM-004) Testing for File Extensions Handling (OWASP-CM-005) Old, Backup and Unreferenced Files (OWASP-CM-006) Infrastructure and Application Admin Interfaces (OWASP-CM-007) Testing for HTTP Methods and XST (OWASP-CM-008)
Configuration Management: example Access to TomCat Admin Interface
Error codes: example http://www.example.com/index.jhtml?id_node=2222222 2222222222222222222 ERROR: --- The error occurred in ibatis/categorie_abc.xml. --- The error occurred while preparing the mapped statement for execution. --- Check the getbylogicalcategoryid. --- Cause: java.sql.sqlexception: Invalid parameter object type. Expected 'java.lang.long' but found 'java.lang.double'
Tools: OWASP Web Scarab
Tools: OWASP DirBuster
Tools: OWASP CAL 9000
Thank you! http://www.owasp.org http://www.owasp.org/index.php/italy 42