Secure Code Review: dalla teoria alla pratica



Похожие документы
Web Application Security: Bug Hunting e Code Review

Domenico Ercolani Come gestire la sicurezza delle applicazioni web

L'analisi di sicurezza delle applicazioni web: come realizzare un processo nella PA. The OWASP Foundation. Stefano Di Paola. CTO Minded Security

Il processo di sviluppo sicuro. Kimera Via Bistolfi, Milano

Ciclo di vita del software: strumenti e procedure per migliorarne la sicurezza. Roberto Ugolini roberto.ugolini@postecom.it

Simone Riccetti. Applicazioni web:security by design

NCP Networking Competence Provider Srl Sede legale: Via di Porta Pertusa, Roma Tel: , Fax:

GDB. The GNU Debugger

Verifica del codice con Interpretazione Astratta

SPIKE APPLICATION SECURITY: SICUREZZA DIRETTAMENTE ALL INTERNO DEL CICLO DI VITA DEL SOFTWARE

Test e collaudo del software Continuous Integration and Testing

OWASP Day IV: introduzione

Introduzione all OWASP- Day II

Ciclo di vita del software: strumenti e procedure per migliorarne la sicurezza

Automazione Industriale (scheduling+mms) scheduling+mms.

RELAZIONE PROGETTO DATABASE GESTIONE BIBLIOTECA PERSONALE

Realizzazione di un tool di instrumentazione automatica a supporto della failure analysis

INFORMATICA 1 L. Mezzalira

DigitPA - P@norama sulle tecnologie innovative

VULNERABILITY ASSESSMENT E PENETRATION TEST

Ciclo di vita dimensionale

Applicazioni software e gestione delle vulnerabilità: un caso concreto di successo

Tesi di Laurea Automazione del testing delle Interfacce utente di applicazioni WEB:

Application Security Governance

FONDAMENTI di INFORMATICA L. Mezzalira

Associazione Italiana Information Systems Auditors

L approccio di Consip alla sicurezza applicativa. Matteo Cavallini

GESTIONE INFORMATICA DEI DATI AZIENDALI

Esempi pratici, risultati e contromisure consigliate. Massimo Biagiotti

Qualification Program in Information Security Management according to ISO/IEC Cesare Gallotti Milano, 23 gennaio 2009

Ibpm è lo strumento per la gestione dei processi, dalla modellazione, all esecuzione, al monitoraggio.

Introduzione al Simple Cloud API

Configuration Management

penetration test (ipotesi di sviluppo)

Rational Unified Process Introduzione

La strada per sviluppare più rapidamente: Unit Test & Continuous Integration

Corso di Sicurezza Informatica. Sicurezza del software. Ing. Gianluca Caminiti

Database. Si ringrazia Marco Bertini per le slides

The quest for secure code

Training For Excellence L'offerta formativa. La semplicità della perfezione

Problem Management proattivo di sicurezza secondo ITIL: attività di Etichal Hacking

The approach to the application security in the cloud space

Governare il processo della sicurezza

SPARQL Injection attacking the triple store

[1] Cross Site Scripting [2] Remote / Local File Inclusion [3] SQL Injection

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Programma del corso TP1- (TECNOLOGIA ONYX HD) Obiettivo pratico Conoscenza e corretto utilizzo della tecnologia ONYX HD.

Corso di PHP. Prerequisiti. 6.1 PHP e il web 1. Conoscenza HTML Tecnica della programmazione Principi di programmazione web

Concetti base di sicurezza applicativa web. Massimo Carnevali Responsabile Esercizio dei Sistemi Informativi Comune di Bologna

BiblioTech - Personal Digital Library

Ciclo di vita del software

Esperienze di analisi del rischio in proggeti di Information Security

Realizzazione di un Tool per l iniezione automatica di difetti all interno di codice Javascript

MService La soluzione per ottimizzare le prestazioni dell impianto

ISTITUTO TECNICO ECONOMICO MOSSOTTI

Titolo della tesi Testing Black Box di un Web Service : sperimentazione su di un servizio con stato

con ANTLR tesi di laurea Anno Accademico Relatore Ch.mo prof. Porfirio Tramontana Candidato Fabio Canova Matr

Come valutare la maturità del proprio modello di sviluppo del software

La formazione sul campo

Analisi di vulnerabilità e prevenzione di attacchi SQL injection e Cross-site Scripting

Ma il software open source è sicuro?

Lo stato dell'arte dei progetti OWASP ed i falsi miti sull'uso dei tool

CONCETTO DI ANNIDAMENTO

CIG CCB COD. ALICE G00292

Navigazione automatica e rilevazione di errori in applicazioni web

Debian Security Team

IL PERFORMANCE MANAGEMENT

AGENDA. Dip. Scienze aziendali ed economico giuridiche Univ. Roma Tre. GdR ISMS II RM LUIGI CARROZZI Il Percorso di Ricerca

PHP. A. Lorenzi, R. Giupponi, D. Iovino LINGUAGGI WEB. LATO SERVER E MOBILE COMPUTING Atlas. Copyright Istituto Italiano Edizioni Atlas

Algoritmi di Ricerca. Esempi di programmi Java

SCHEDA REQUISITI PER LA CERTIFICAZIONE DEGLI ITSMS (IT SERVICE MANAGEMENT SYSTEMS) AUDITOR/RESPONSABILI GRUPPO DI AUDIT

Progettaz. e sviluppo Data Base

Università degli Studi di Salerno Ingegneria del Software: Tecniche Avanzate

Università degli Studi "Roma Tre" Dipartimento di Informatica ed automazione. Facoltà di Ingegneria. Laurea Magistrale in Ingegneria Informatica

Banking Cybercrime: Attacchi e scenari di banking malware in Italia IEEE-DEST The OWASP Foundation. Giorgio Fedon Owasp Italy Technical Director

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

ALLEGATO 8.1 DESCRIZIONE PROFILI PROFESSIONALI

BOLLETTINO DI SICUREZZA INFORMATICA

tesi di laurea Anno Accademico 2009/2010 relatore Ch.mo prof. Porfirio Tramontana candidato Pasquale Ludi Matr. 534\000438

Riepilogo delle modifiche di PA-DSS dalla versione 2.0 alla 3.0

Agenti Mobili Intelligenti e Sicurezza Informatica Utilizzare un nuovo paradigma applicativo per la realizzazione di sistemi informatici sicuri.

Security by example. Alessandro `jekil` Tanasi LUG Trieste. Alessandro Tanasi - alessandro@tanasi.

SISTEMI E RETI 4(2) 4(2) 4(2) caratteristiche funzionali

Il Project Management nell Implementazione dell'it Service Operations

Associazione Italiana Information Systems Auditors

Piano di gestione della qualità

OLTRE IL MONITORAGGIO LE ESIGENZE DI ANALISI DEI DATI DEGLI ASSET MANAGER

Транскрипт:

Secure Code Review: dalla teoria alla pratica Antonio Parata http://www.emaze.net Antonio.parata@emaze.net OWASP-Day III Centro di Competenza ICT-Puglia - Dipartimento di Informatica Università degli Studi di Bari 23rd February 2009 - Bari (Italy) Copyright 2009 - 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 Introduzione Come condurre un Code Review Tool di analisi statica Code Review in pratica Conclusioni OWASP Day III 23rd, February 2009 OWASP-Italy 2

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

Code Review Chi, Come, Dove, Quando e Perchè Chi: tipicamente svolto da un team di sviluppatori ed esperti di sicurezza (auditors) Come: gli auditor analizzano il codice sorgente alla ricerca di vulnerabilità Dove: in sessioni di circa 4 ore con una o due pause OWASP Day III 23rd, February 2009 OWASP-Italy 4

Code Review Chi, Come, Dove, Quando e Perchè Quando: durante la fase di implementazione del software (o post rilascio) Perché: Permette di identificare un maggior numero di vulnerabilità Permette di applicare delle soluzioni ottimali già dalle prime fasi del ciclo di sviluppo Verifica che il codice sia scritto seguendo best practices e coding standards OWASP Day III 23rd, February 2009 OWASP-Italy 5

Stato della sicurezza delle applicazioni web *fonte: IBM Internet Security Systems X-Force 2008 Trend & Risk Report OWASP Day III 23rd, February 2009 OWASP-Italy

Code Review nel Secure Development Lifecycle *fonte: Applied Software Measurement, Capers Jones, 1986 OWASP Day III 23rd, February 2009 OWASP-Italy 7

Metodologie per la rimozione dei difetti a confronto *fonte: Applied Software Measurement, Capers Jones, 2008 OWASP Day III 23rd, February 2009 OWASP-Italy

Agenda Introduzione Come condurre un Code Review Tool di analisi statica Code Review in pratica Conclusioni OWASP Day III 23rd, February 2009 OWASP-Italy 9

Attività di Code Review Code Walkthroughs Simulazione del codice by hand Durante la simulazione si cerca di identificare eventuali errori di qualsiasi tipo Code Inspection Si guarda il codice da una prospettiva diversa, ovvero si cerca di identificare specifiche tipologie di errori È bene specificare o avere in mente che tipologie di errore si intende identificare OWASP Day III 23rd, February 2009 OWASP-Italy 10

Code walkthroughs Gruppi da massimo 3/5 persone I partecipanti sono in possesso (da prima di inizio della review) di un documento scritto che esponde l architettura dell applicazione I meeting hanno una durata prefissata (alcune ore) Il focus è l identificazione degli errori e non la loro risoluzione I ruoli sono: designer, moderatore, auditor e esperti di sicurezza del codice Mutua cooperazione; non bisogna valutare l operato dei programmatori L esperienza mostra che la maggior parte degli errori viene individuata dal designer all atto della spiegazione del design dell applicazione OWASP Day III 23rd, February 2009 OWASP-Italy 11

Code inspection Tecnica di lettura del codice basata sull identificazione di errori attraverso delle Checklist Checklist basate su Uso di funzioni considerate non safe Uso di variabili non inizializzate Array indexes out of bounds Confronti tra varibili di tipo signed e unsigned Esistono svariate Checklist già pronte all uso http://www.sans.org/score/checklists/webapplicationchecklist.pdf OWASP Day III 23rd, February 2009 OWASP-Italy 12

Condurre un Code Review Modalità di navigazione del codice Control-flow sensitive Data-flow sensitive Strategia di Code Auditing Trace Malicious Input (taint propagation) Candidate Point Strategies (sink point) OWASP Day III 23rd, February 2009 OWASP-Italy 13

Control-flow sensitive VS Data-flow sensitive 1. int bob(int c) { 2. if (c == 4) 3. fred(c); 4. if (c == 72) 5. jim(); 6. for (; c; c) 7. updateglobalstate(); 8. } Control-flow sensitive 123 45 67 8 Data-flow sensitive (var c) 123 46 8 OWASP Day III 23rd, February 2009 OWASP-Italy 14

Trace Malicious Input + Control-flow sensitive 1. $myvar = $_GET['name']; 2. ( 0 > ($counter if 3. sayhello("ben tornato ".$myvar);} 4. else 5. sayhello("benvenuto");} 6. ( sayhello($msg function 7. { 8. print_header(); 9. print_menu(); 10. print $msg; 11. print_footer(); 12. } OWASP Day III 23rd, February 2009 OWASP-Italy 15

Candidate Point Strategies + Data-flow sensitive 1. $U = $_POST['username']; 2. $P = $_POST['password']; 3. if (!isset($u)!isset($p)) { 4. echo "Password non valida"; 5. } 6. Else { 7. $resok = check_login($u, $P); 8. if ($resok) { 9. print "Accesso consentito"; 10. doadminstuff(); 11. } 12. else { 13. print "Password e/o Username errati"; 14. } 15. } 16. function check_login($username, $password) { 17. $sql = "SELECT count(*) FROM Utenti WHERE 18. Username='$username' AND Password=MD5('$password')"; 19. $res = execute_query($sql); 20. return $res > 0; 21. } OWASP Day III 23rd, February 2009 OWASP-Italy 16

Agenda Introduzione Come condurre un Code Review Tool di analisi statica Code Review in pratica Conclusioni OWASP Day III 23rd, February 2009 OWASP-Italy 17

Analisi statica Analizza il codice senza eseguirlo (simulazione) Considera più fattori e path di esecuzione (anche dette tracce di esecuzione) Non é a conoscenza di cosa fa il codice (cosa buona) Permette di ripetere l analisi periodicamente in modo automatico (valutazione dell andamento della sicurezza) OWASP Day III 23rd, February 2009 OWASP-Italy

Analizzatori statici Internals <?php print $_GET[ str ];?> Source Code Lexer Parser Abstarct Model Results -20: SQLI Analyzer -25: XSS -98: LFI - Knowledge Base OWASP Day III 23rd, February 2009 OWASP-Italy

Tool esistenti a confronto *fonte: Secure Programming with Static Analysis OWASP Day III 23rd, February 2009 OWASP-Italy

Tool di analisi web based Owasp Orizon Pixy This project born in 2006 in order to provide a framework to all Owasp projects developing code review services. The project is in a quite stable stage and it is usable for Java static code review and some dynamic tests against XSS. Owasp Orizon includes also APIs for code crawling, usable for code crawling tools. Project Leader: Paolo Perego Pixy is a Java program that performs automatic scans of PHP 4 source code, aimed at the detection of XSS and SQL injection vulnerabilities. Pixy takes a PHP program as input, and creates a report that lists possible vulnerable points in the program, together with additional information for understanding the vulnerability. OWASP Day III 23rd, February 2009 OWASP-Italy

Tool di analisi web based Codeminer Tool di analisi statica per PHP Identifica vulnerabilità di vario genere (non è legato a nessuna tipologia in particolare) Simulazione delle funzioni più comuni di PHP (maggiore efficienza e minor numero di falsi positivi) Estendibile attraverso plugin ancora in fase di sviluppo OWASP Day III 23rd, February 2009 OWASP-Italy

Agenda Introduzione Come condurre un Code Review Tool di analisi statica Code Review in pratica Conclusioni OWASP Day III 23rd, February 2009 OWASP-Italy 23

Spot the Bug Candidate Point Strategies 1. function _holiday_cmp($a,$b) { 2. if (($year_diff = ($a['occurence'] <= 0? 3. 0 : $a['occurence']) - ($b['occurence'] <= 0? 4. 0 : $b['occurence']))) 5. { 6. return $year_diff; 7. } 8. return $a['month'] - $b['month']? 9. $a['month'] - $b['month'] : $a['day'] - $b['day']; 10.} 11.$send_back_to=str_replace('&locale='.$_POST['locale'],'',$send_back_to); 12.$file = './holidays.'.$_post['locale'].'.csv'; 13.if(!file_exists($file) filesize($file) < 300) { 14. if (count($_post['name'])) { 15. $fp = fopen($file,'w'); 16. if ($_POST['charset']) 17. fwrite($fp,"charset\t".$_post['charset']."\n"); 18. $holidays = array(); OWASP Day III 23rd, February 2009 OWASP-Italy

Spot the Bug Candidate Point Strategies 1. function _holiday_cmp($a,$b) { 2. if (($year_diff = ($a['occurence'] <= 0? 3. 0 : $a['occurence']) - ($b['occurence'] <= 0? 4. 0 : $b['occurence']))) 5. { 6. return $year_diff; 7. } 8. return $a['month'] - $b['month']? 9. $a['month'] - $b['month'] : $a['day'] - $b['day']; 10.} 11.$send_back_to=str_replace('&locale='.$_POST['locale'],'',$send_back_to); 12.$file = './holidays.'.$_post['locale'].'.csv'; 13.if(!file_exists($file) filesize($file) < 300) { 14. if (count($_post['name'])) { 15. $fp = fopen($file,'w'); 16. if ($_POST['charset']) 17. fwrite($fp,"charset\t".$_post['charset']."\n"); 18. $holidays = array(); OWASP Day III 23rd, February 2009 OWASP-Italy

Agenda Introduzione Come condurre un Code Review Tool di analisi statica Code Review in pratica Conclusioni OWASP Day III 23rd, February 2009 OWASP-Italy 26

Conclusioni Code Review Identifica le vulnerabilità già durante la fase di implementazione (diminuiscono i costi di patching) Molto efficace nell identificazione di errori Attività Brain Intensive (utilizzare tool di analisi statica) Analisi statica e Secure Code Review vanno di pari passo Secure Code Review è un servizio artigianale e non può essere simulato da un programma OWASP Day III 23rd, February 2009 OWASP-Italy

Domande? Antonio Parata Security Consultant http://www.emaze.net Antonio.parata@emaze.net OWASP Day III 23rd, February 2009 OWASP-Italy