SlideShare ist ein Scribd-Unternehmen logo
1 von 28
Downloaden Sie, um offline zu lesen
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. if ($counter > 0)‫‏‬
3.      sayhello(quot;Ben tornato quot;.$myvar);}
4. else
5.      sayhello(quot;Benvenutoquot;);}
6. function sayhello($msg)‫‏‬
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 quot;Password non validaquot;;
5.    }
6.    Else {
7.          $resOk = check_login($U, $P);
8.          if ($resOk) {
9.               print quot;Accesso consentitoquot;;
10.              doAdminStuff();
11.         }
12.         else {
13.              print quot;Password e/o Username erratiquot;;
14.         }
15.   }
16.   function check_login($username, $password) {
17.         $sql = quot;SELECT count(*) FROM Utenti WHERE
18.              Username='$username' AND Password=MD5('$password')quot;;
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’];

 ?>
                                       Parser
                             Lexer
  Source Code


                                                     Abstarct Model



                                  Analyzer
          Results

          -20: SQLI

          -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
       “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
       “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,quot;charsettquot;.$_POST['charset'].quot;nquot;);
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,quot;charsettquot;.$_POST['charset'].quot;nquot;);
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

Weitere ähnliche Inhalte

Was ist angesagt?

festival ICT 2013: Sicurezza delle applicazioni web
festival ICT 2013: Sicurezza delle applicazioni webfestival ICT 2013: Sicurezza delle applicazioni web
festival ICT 2013: Sicurezza delle applicazioni webfestival ICT 2016
 
BackBox Linux: Simulazione di un Penetration Test
BackBox Linux: Simulazione di un Penetration TestBackBox Linux: Simulazione di un Penetration Test
BackBox Linux: Simulazione di un Penetration TestAndrea Draghetti
 
Mamma, da grande voglio essere un Penetration Tester HackInBo 2016 Winter
Mamma, da grande voglio essere un Penetration Tester HackInBo  2016 WinterMamma, da grande voglio essere un Penetration Tester HackInBo  2016 Winter
Mamma, da grande voglio essere un Penetration Tester HackInBo 2016 WinterSimone Onofri
 
Il CERT-PA e la Malware Analysis: Strumenti e casi di studio
Il CERT-PA e la Malware Analysis: Strumenti e casi di studioIl CERT-PA e la Malware Analysis: Strumenti e casi di studio
Il CERT-PA e la Malware Analysis: Strumenti e casi di studioGianni Amato
 
BackBox Linux: Simulazione di un Penetration Test e CTF
BackBox Linux: Simulazione di un Penetration Test e CTFBackBox Linux: Simulazione di un Penetration Test e CTF
BackBox Linux: Simulazione di un Penetration Test e CTFAndrea Draghetti
 
La complessità del malware: analisi strutturale ed ambienti di sviluppo
La complessità del malware: analisi strutturale ed ambienti di sviluppoLa complessità del malware: analisi strutturale ed ambienti di sviluppo
La complessità del malware: analisi strutturale ed ambienti di sviluppoMarco Ferrigno
 
Security and hacking engineering - metodologie di attacco e difesa con strume...
Security and hacking engineering - metodologie di attacco e difesa con strume...Security and hacking engineering - metodologie di attacco e difesa con strume...
Security and hacking engineering - metodologie di attacco e difesa con strume...Marco Ferrigno
 
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceLinux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceMario Rossano
 
Presentazione Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vuln...
Presentazione Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vuln...Presentazione Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vuln...
Presentazione Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vuln...Riccardo Melioli
 
Minded Security - Fabrizio Bugli - (3rd) party like nobody's watching...
Minded Security - Fabrizio Bugli - (3rd) party like nobody's watching...Minded Security - Fabrizio Bugli - (3rd) party like nobody's watching...
Minded Security - Fabrizio Bugli - (3rd) party like nobody's watching...Minded Security
 
Free software & Open Source (FLOSS)
Free software & Open Source (FLOSS)Free software & Open Source (FLOSS)
Free software & Open Source (FLOSS)Piergiorgio Borgogno
 
Pentesting Android with BackBox 4
Pentesting Android with BackBox 4Pentesting Android with BackBox 4
Pentesting Android with BackBox 4raffaele_forte
 
Smau Milano 2014 - Andrea Zwirner
Smau Milano 2014 - Andrea ZwirnerSmau Milano 2014 - Andrea Zwirner
Smau Milano 2014 - Andrea ZwirnerSMAU
 
Cyber Forensics - Acquisizione e analisi dei dati
Cyber Forensics - Acquisizione e analisi dei datiCyber Forensics - Acquisizione e analisi dei dati
Cyber Forensics - Acquisizione e analisi dei datiMarco Ferrigno
 
BackBox Linux e Metasploit: Una dimostrazione pratica del shellshock
BackBox Linux e Metasploit: Una dimostrazione pratica del shellshockBackBox Linux e Metasploit: Una dimostrazione pratica del shellshock
BackBox Linux e Metasploit: Una dimostrazione pratica del shellshockAndrea Draghetti
 

Was ist angesagt? (18)

festival ICT 2013: Sicurezza delle applicazioni web
festival ICT 2013: Sicurezza delle applicazioni webfestival ICT 2013: Sicurezza delle applicazioni web
festival ICT 2013: Sicurezza delle applicazioni web
 
BackBox Linux: Simulazione di un Penetration Test
BackBox Linux: Simulazione di un Penetration TestBackBox Linux: Simulazione di un Penetration Test
BackBox Linux: Simulazione di un Penetration Test
 
Mamma, da grande voglio essere un Penetration Tester HackInBo 2016 Winter
Mamma, da grande voglio essere un Penetration Tester HackInBo  2016 WinterMamma, da grande voglio essere un Penetration Tester HackInBo  2016 Winter
Mamma, da grande voglio essere un Penetration Tester HackInBo 2016 Winter
 
Il CERT-PA e la Malware Analysis: Strumenti e casi di studio
Il CERT-PA e la Malware Analysis: Strumenti e casi di studioIl CERT-PA e la Malware Analysis: Strumenti e casi di studio
Il CERT-PA e la Malware Analysis: Strumenti e casi di studio
 
Antivirus & Antivirus Evasion
Antivirus & Antivirus EvasionAntivirus & Antivirus Evasion
Antivirus & Antivirus Evasion
 
BackBox Linux: Simulazione di un Penetration Test e CTF
BackBox Linux: Simulazione di un Penetration Test e CTFBackBox Linux: Simulazione di un Penetration Test e CTF
BackBox Linux: Simulazione di un Penetration Test e CTF
 
La complessità del malware: analisi strutturale ed ambienti di sviluppo
La complessità del malware: analisi strutturale ed ambienti di sviluppoLa complessità del malware: analisi strutturale ed ambienti di sviluppo
La complessità del malware: analisi strutturale ed ambienti di sviluppo
 
Security and hacking engineering - metodologie di attacco e difesa con strume...
Security and hacking engineering - metodologie di attacco e difesa con strume...Security and hacking engineering - metodologie di attacco e difesa con strume...
Security and hacking engineering - metodologie di attacco e difesa con strume...
 
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceLinux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
 
Presentazione Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vuln...
Presentazione Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vuln...Presentazione Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vuln...
Presentazione Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vuln...
 
Minded Security - Fabrizio Bugli - (3rd) party like nobody's watching...
Minded Security - Fabrizio Bugli - (3rd) party like nobody's watching...Minded Security - Fabrizio Bugli - (3rd) party like nobody's watching...
Minded Security - Fabrizio Bugli - (3rd) party like nobody's watching...
 
Free software & Open Source (FLOSS)
Free software & Open Source (FLOSS)Free software & Open Source (FLOSS)
Free software & Open Source (FLOSS)
 
Nessus
NessusNessus
Nessus
 
Pentesting Android with BackBox 4
Pentesting Android with BackBox 4Pentesting Android with BackBox 4
Pentesting Android with BackBox 4
 
Attacchi e difese
Attacchi e difeseAttacchi e difese
Attacchi e difese
 
Smau Milano 2014 - Andrea Zwirner
Smau Milano 2014 - Andrea ZwirnerSmau Milano 2014 - Andrea Zwirner
Smau Milano 2014 - Andrea Zwirner
 
Cyber Forensics - Acquisizione e analisi dei dati
Cyber Forensics - Acquisizione e analisi dei datiCyber Forensics - Acquisizione e analisi dei dati
Cyber Forensics - Acquisizione e analisi dei dati
 
BackBox Linux e Metasploit: Una dimostrazione pratica del shellshock
BackBox Linux e Metasploit: Una dimostrazione pratica del shellshockBackBox Linux e Metasploit: Una dimostrazione pratica del shellshock
BackBox Linux e Metasploit: Una dimostrazione pratica del shellshock
 

Ähnlich wie Owasp Day 3

Sicurezza Applicatica Dalla Teoria Alla Pratica
Sicurezza Applicatica Dalla Teoria Alla PraticaSicurezza Applicatica Dalla Teoria Alla Pratica
Sicurezza Applicatica Dalla Teoria Alla PraticaPaolo Perego
 
Progetti Open Source Per La Sicurezza Delle Web Applications
Progetti Open Source Per La Sicurezza Delle Web ApplicationsProgetti Open Source Per La Sicurezza Delle Web Applications
Progetti Open Source Per La Sicurezza Delle Web ApplicationsMarco Morana
 
CMS - Analisi Vulnerabilità
CMS - Analisi VulnerabilitàCMS - Analisi Vulnerabilità
CMS - Analisi Vulnerabilitàraffaele_forte
 
Demystify web application vulnerability assessment
Demystify web application vulnerability assessmentDemystify web application vulnerability assessment
Demystify web application vulnerability assessmentAntonio Parata
 
I tool owasp per la sicurezza del software 20110315
I tool owasp per la sicurezza del software 20110315I tool owasp per la sicurezza del software 20110315
I tool owasp per la sicurezza del software 20110315Paolo Perego
 
05 sicurezza delle applicazioni per le aziende nel settore della pubblica uti...
05 sicurezza delle applicazioni per le aziende nel settore della pubblica uti...05 sicurezza delle applicazioni per le aziende nel settore della pubblica uti...
05 sicurezza delle applicazioni per le aziende nel settore della pubblica uti...IBM Italia Web Team
 
Real Spring Aop Recipes For Your Everyday Job
Real Spring Aop Recipes For Your Everyday JobReal Spring Aop Recipes For Your Everyday Job
Real Spring Aop Recipes For Your Everyday JobMassimiliano Dessì
 
Sap Security Sicurezza Audit Sap Sod Tools
Sap Security   Sicurezza Audit Sap   Sod ToolsSap Security   Sicurezza Audit Sap   Sod Tools
Sap Security Sicurezza Audit Sap Sod ToolsMassimo Manara
 
Programma il futuro: una scelta open source
Programma il futuro: una scelta open sourceProgramma il futuro: una scelta open source
Programma il futuro: una scelta open sourceMarco Ferrigno
 
Programma il futuro : una scelta Open Source
Programma il futuro : una scelta Open SourceProgramma il futuro : una scelta Open Source
Programma il futuro : una scelta Open SourceNaLUG
 
Web Application Security: Bug Hunting e Code Review
Web Application Security: Bug Hunting e Code ReviewWeb Application Security: Bug Hunting e Code Review
Web Application Security: Bug Hunting e Code ReviewAntonio Parata
 
Continuous Integration e High Quality Code
Continuous Integration e High Quality CodeContinuous Integration e High Quality Code
Continuous Integration e High Quality CodeDaniele Mondello
 
La sicurezza delle Web Application - SMAU Business Bari 2013
La sicurezza delle Web Application - SMAU Business Bari 2013La sicurezza delle Web Application - SMAU Business Bari 2013
La sicurezza delle Web Application - SMAU Business Bari 2013Massimo Chirivì
 
Smau Bari 2013 Massimo Chirivì
Smau Bari 2013 Massimo ChirivìSmau Bari 2013 Massimo Chirivì
Smau Bari 2013 Massimo ChirivìSMAU
 

Ähnlich wie Owasp Day 3 (20)

Sicurezza Applicatica Dalla Teoria Alla Pratica
Sicurezza Applicatica Dalla Teoria Alla PraticaSicurezza Applicatica Dalla Teoria Alla Pratica
Sicurezza Applicatica Dalla Teoria Alla Pratica
 
Owasp parte1-rel1.1
Owasp parte1-rel1.1Owasp parte1-rel1.1
Owasp parte1-rel1.1
 
Progetti Open Source Per La Sicurezza Delle Web Applications
Progetti Open Source Per La Sicurezza Delle Web ApplicationsProgetti Open Source Per La Sicurezza Delle Web Applications
Progetti Open Source Per La Sicurezza Delle Web Applications
 
Infosecurity 2008
Infosecurity 2008Infosecurity 2008
Infosecurity 2008
 
CMS - Analisi Vulnerabilità
CMS - Analisi VulnerabilitàCMS - Analisi Vulnerabilità
CMS - Analisi Vulnerabilità
 
Demystify web application vulnerability assessment
Demystify web application vulnerability assessmentDemystify web application vulnerability assessment
Demystify web application vulnerability assessment
 
I tool owasp per la sicurezza del software 20110315
I tool owasp per la sicurezza del software 20110315I tool owasp per la sicurezza del software 20110315
I tool owasp per la sicurezza del software 20110315
 
05 sicurezza delle applicazioni per le aziende nel settore della pubblica uti...
05 sicurezza delle applicazioni per le aziende nel settore della pubblica uti...05 sicurezza delle applicazioni per le aziende nel settore della pubblica uti...
05 sicurezza delle applicazioni per le aziende nel settore della pubblica uti...
 
Lavoro di Tesi
Lavoro di TesiLavoro di Tesi
Lavoro di Tesi
 
Slide Lavoro di Tesi
Slide Lavoro di TesiSlide Lavoro di Tesi
Slide Lavoro di Tesi
 
Lavoro di Tesi
Lavoro di TesiLavoro di Tesi
Lavoro di Tesi
 
Real Spring Aop Recipes For Your Everyday Job
Real Spring Aop Recipes For Your Everyday JobReal Spring Aop Recipes For Your Everyday Job
Real Spring Aop Recipes For Your Everyday Job
 
Sap Security Sicurezza Audit Sap Sod Tools
Sap Security   Sicurezza Audit Sap   Sod ToolsSap Security   Sicurezza Audit Sap   Sod Tools
Sap Security Sicurezza Audit Sap Sod Tools
 
Programma il futuro: una scelta open source
Programma il futuro: una scelta open sourceProgramma il futuro: una scelta open source
Programma il futuro: una scelta open source
 
Programma il futuro : una scelta Open Source
Programma il futuro : una scelta Open SourceProgramma il futuro : una scelta Open Source
Programma il futuro : una scelta Open Source
 
Web Application Security: Bug Hunting e Code Review
Web Application Security: Bug Hunting e Code ReviewWeb Application Security: Bug Hunting e Code Review
Web Application Security: Bug Hunting e Code Review
 
TTT - Test, Tools and Tips - jug roma
TTT - Test, Tools and Tips - jug romaTTT - Test, Tools and Tips - jug roma
TTT - Test, Tools and Tips - jug roma
 
Continuous Integration e High Quality Code
Continuous Integration e High Quality CodeContinuous Integration e High Quality Code
Continuous Integration e High Quality Code
 
La sicurezza delle Web Application - SMAU Business Bari 2013
La sicurezza delle Web Application - SMAU Business Bari 2013La sicurezza delle Web Application - SMAU Business Bari 2013
La sicurezza delle Web Application - SMAU Business Bari 2013
 
Smau Bari 2013 Massimo Chirivì
Smau Bari 2013 Massimo ChirivìSmau Bari 2013 Massimo Chirivì
Smau Bari 2013 Massimo Chirivì
 

Mehr von Antonio Parata

Program Analysis: a security perspective
Program Analysis: a security perspectiveProgram Analysis: a security perspective
Program Analysis: a security perspectiveAntonio Parata
 
Jackpot! sbancare un atm con ploutus.d
Jackpot! sbancare un atm con ploutus.dJackpot! sbancare un atm con ploutus.d
Jackpot! sbancare un atm con ploutus.dAntonio Parata
 
EyePyramid and other .NET malware. How to analyze them?
EyePyramid and other .NET malware. How to analyze them?EyePyramid and other .NET malware. How to analyze them?
EyePyramid and other .NET malware. How to analyze them?Antonio Parata
 
HackInBo2k16 - Threat Intelligence and Malware Analysis
HackInBo2k16 - Threat Intelligence and Malware AnalysisHackInBo2k16 - Threat Intelligence and Malware Analysis
HackInBo2k16 - Threat Intelligence and Malware AnalysisAntonio Parata
 
Securing your web applications a pragmatic approach
Securing your web applications a pragmatic approachSecuring your web applications a pragmatic approach
Securing your web applications a pragmatic approachAntonio Parata
 

Mehr von Antonio Parata (11)

Program Analysis: a security perspective
Program Analysis: a security perspectiveProgram Analysis: a security perspective
Program Analysis: a security perspective
 
Jackpot! sbancare un atm con ploutus.d
Jackpot! sbancare un atm con ploutus.dJackpot! sbancare un atm con ploutus.d
Jackpot! sbancare un atm con ploutus.d
 
EyePyramid and other .NET malware. How to analyze them?
EyePyramid and other .NET malware. How to analyze them?EyePyramid and other .NET malware. How to analyze them?
EyePyramid and other .NET malware. How to analyze them?
 
HackInBo2k16 - Threat Intelligence and Malware Analysis
HackInBo2k16 - Threat Intelligence and Malware AnalysisHackInBo2k16 - Threat Intelligence and Malware Analysis
HackInBo2k16 - Threat Intelligence and Malware Analysis
 
Securing your web applications a pragmatic approach
Securing your web applications a pragmatic approachSecuring your web applications a pragmatic approach
Securing your web applications a pragmatic approach
 
.NET for hackers
.NET for hackers.NET for hackers
.NET for hackers
 
Smau 2006
Smau 2006Smau 2006
Smau 2006
 
Smau 2007
Smau 2007Smau 2007
Smau 2007
 
Hat 2008
Hat 2008Hat 2008
Hat 2008
 
Openexp 2006
Openexp 2006Openexp 2006
Openexp 2006
 
Infosecurity 2007
Infosecurity 2007Infosecurity 2007
Infosecurity 2007
 

Owasp Day 3

  • 1. 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
  • 2. 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
  • 3. 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
  • 4. 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
  • 5. 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
  • 6. 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
  • 7. Code Review nel Secure Development Lifecycle *fonte: Applied Software Measurement, Capers Jones, 1986 OWASP Day III – 23rd , February 2009 OWASP-Italy 7
  • 8. Metodologie per la rimozione dei difetti a confronto *fonte: Applied Software Measurement, Capers Jones, 2008 OWASP Day III – 23rd , February 2009 OWASP-Italy
  • 9. 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
  • 10. 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
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. Trace Malicious Input + Control-flow sensitive 1. $myvar = $_GET['name']; 2. if ($counter > 0)‫‏‬ 3. sayhello(quot;Ben tornato quot;.$myvar);} 4. else 5. sayhello(quot;Benvenutoquot;);} 6. function sayhello($msg)‫‏‬ 7. { 8. print_header(); 9. print_menu(); 10. print $msg; 11. print_footer(); 12. } OWASP Day III – 23rd , February 2009 OWASP-Italy 15
  • 16. Candidate Point Strategies + Data-flow sensitive 1. $U = $_POST['username']; 2. $P = $_POST['password']; 3. if (!isset($U) || !isset($P)) { 4. echo quot;Password non validaquot;; 5. } 6. Else { 7. $resOk = check_login($U, $P); 8. if ($resOk) { 9. print quot;Accesso consentitoquot;; 10. doAdminStuff(); 11. } 12. else { 13. print quot;Password e/o Username erratiquot;; 14. } 15. } 16. function check_login($username, $password) { 17. $sql = quot;SELECT count(*) FROM Utenti WHERE 18. Username='$username' AND Password=MD5('$password')quot;; 19. $res = execute_query($sql); 20. return $res > 0; 21. } OWASP Day III – 23rd , February 2009 OWASP-Italy 16
  • 17. 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
  • 18. 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
  • 19. Analizzatori statici – Internals <?php print $_GET[‘str’]; ?> Parser Lexer Source Code Abstarct Model Analyzer Results -20: SQLI -25: XSS -98: LFI -… Knowledge Base OWASP Day III – 23rd , February 2009 OWASP-Italy
  • 20. Tool esistenti a confronto *fonte: Secure Programming with Static Analysis OWASP Day III – 23rd , February 2009 OWASP-Italy
  • 21. Tool di analisi web based Owasp Orizon “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 “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
  • 22. 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
  • 23. 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
  • 24. 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,quot;charsettquot;.$_POST['charset'].quot;nquot;); 18. $holidays = array(); OWASP Day III – 23rd , February 2009 OWASP-Italy
  • 25. 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,quot;charsettquot;.$_POST['charset'].quot;nquot;); 18. $holidays = array(); OWASP Day III – 23rd , February 2009 OWASP-Italy
  • 26. 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
  • 27. 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
  • 28. Domande? Antonio Parata – Security Consultant http://www.emaze.net Antonio.parata@emaze.net OWASP Day III – 23rd , February 2009 OWASP-Italy