Source code security testing Simone Riccetti EMEA PSS Security Services All information represents IBM's current intent, is subject to change or withdrawal without notice, and represents only IBM ISS goals and objectives. By providing this information, IBM is not committing to provide this capability.
Agenda Nuove vulnerabilità e rischi Tipologie di approcci in base al problema Selezione dei test Nuove tecnologie 2 21 March 2012
Sistemi in continua evoluzione Complessità Integrazione Estensibilità Connettività
Perché la sicurezza del codice è così importante? La maggior parte dei buchi di sicurezza del software non sono sfruttati in modo diretto da utenti malintenzionati, ma sono piuttosto sfruttati per errore da altri programmi o componenti, causando effetti imprevedibili che degradano la sicurezza e la qualità delle applicazioni.
Un esempio semplice.buffer overflow foo { void func(void) int i; char buffer[256]; for(i=0;i<512;i++) return; buffer[i]='a'; } s you can see, our 'buffer' gets filled with 256 'A's, followed by 256 more that just don't fit.
Non tutte le vulnerabilità sono facilmente individuabili. http://www.technologyreview.com
Modeling e complessità int main() { int sum = 0; int i = 1; while (i < 11) { sum = sum + i; i = i + 1; } printf( %d\n,sum); printf( %d\n,i); } Enter T T T T T T sum = 0 i = 1 while(i < 11) printf(sum) printf(i) T T sum = sum + i i = i + i
Metodologie e tecniche di test disponibili Dynamic analysis Penetration test Users priviledge escalation test Denial of service Non repudiation testing Failure testing Cryptographic validation testing Privacy and Confidential testing Software security unit test Software security regression test Static analysis altri? Challenge: Integrazione nel SDLC!!! Definizione dei requisiti Requisiti di sicurezza Abuse cases Design Principi di secure design Risk analysis Implementazione Secure coding Security testing Test Risk analysis Security testing Deploy Vulnerability management Secure deployment Operational enablement Security testing Analisi assistita o manuale?
Dynamic vs. Static Analysis Static Analysis Null pointer dereference Threading issues Code quality issues Issues in dead code Insecure crypto functions Issues in back-end application code Stored vulneabilities Complex SQL injection Total Potential Security Issues Dynamic Analysis Environment configuration issues Patch level issues Runtime privileges issues Authentication issues Protocol parser/serializer issues Session management issues Issues in external 3rd party web components Cross-site request forgery Malware analysis Manual Assessment Business logic issues Dynamic & Static SQL Injection Cross Site Scripting HTTP Response Splitting OS Commanding LDAP Injection XPath Injection Path Traversal Buffer Overflows Format String Issues
Che approccio adottare? Dipende The Balancing Act Tipo di applicazione? Numero di KLOC? Tecnologie e framework? Prospettiva? Security skills Tipo di vulnerabilità che voglio individuare Organizzazione..
Esempio: Remediation black box (SQL inj) An SQL Injection vulnerability was identified Let s fix it! Identificare la parte di codice vulnerabile Scrivere il codice che elimina la vulnerabilità
Esempio: Remediation black box (SQL inj)
Esempio: Remediation black box (SQL inj)
Esempio: Remediation black box (SQL inj)
Esempio: Remediation black box (SQL inj)
Esempio di static analysis (taint analysis) Source request.getparameter() Sink statement.executequery() Limite: binary analysis
L approccio deve essere completo.e questo vale anche per I tool Hybrid Analysis = + Black Box White Box Hybrid Analysis Technologies in IBM Rational AppScan: Correlazione JSA (JavaScript Security Analyzer) Glass box technology
La logica di business si sta sviluppando anche lato client Client-Side Logic in Web Applications 30% 25% 25% 20% 15% 10% 5% 5% 0% 5 Years Ago Today Il codice sorgente che viene inviato al browser può essere utilizzato per effettuare analisi statica
Obfuscation IBM Internet Security Systems Prima Dopo
L analisi dinamica prevede una parte statica (DOM Based XSS) 1.Reflected 2.Stored 3.DOM-based TODAY S FOCUS Example of trace provided by IBM Rational Appscan JSA
Glass Box Technology Image: Meawpong3405 / FreeDigitalPhotos.net
Glass Box Architecture E un approccio blackbox con un agente integrato nell application server La correlazione degli eventi permette di individuare con precisione i metodi vulnerabili nel codice Fondamentale per vulnerabilità di tipo Blind SQL Injection Applica tion Server Application Under Test Agent Agent AppScan Control & Report