© 2010 IBM Corporation
IBM Security ServicesApplication Security per Utility
Simone Riccetti
IBM Security Services
© 2010 IBM Corporation
Agenda
Perchè la sicurezza delle applicazioni?
Secure Engineering
Security & SDLC
© 2010 IBM Corporation
Rispetto all’H1 2009 c’è stato un incremento delle vulnerabilità del 36%.
Le vulnerabilità più critiche scoperte in H1 2010 sono sfruttabili da remoto.
Diverse vulnerabilità critiche sono state pubblicate prima della disponibilità di patch.
Vulnerabilità riportate dai vendor
© 2010 IBM Corporation
Il 55% di tutte le vulnerabilità riguarda le applicazioni web.
Le vulnerabilità che permettono il Cross-Site Scripting & SQL injection sono le più diffuse.
I’ 88% delle vulnerabilità di applicazioni web riguarda i plug-in e non la piattaforma base.
Vulnerabilità riportate dai vendor
© 2010 IBM Corporation
Le vulnerabilità più importanti per le Utilities
Buffer overflows
Format string vulnerabilities
Race conditions
Resource leaks
Input/ Output validation and encoding errors
SQL injection Cross-site scripting Cross-site request
forgery OS injection
Error handling and logging vulnerabilities
Insecure error handling Insecure or inadequate
logging Data storage vulnerability
Insecure Components Malicious Code Unsafe native methods Unsupported methods Custom Cookies/ hidden
fields
Cryptography Network communication Application configuration Access control Database and file system use Access control and
authentication errors
Errori nel codiceErrori nel codice Errori nell’architettura e configurazioneErrori nell’architettura e configurazione
© 2010 IBM Corporation
© 2010 IBM Corporation
La provenienza del software cambia il problema
Sviluppato internamente – I team di sviluppo devono spesso sviluppare “deliverables” complessi in tempi
ristretti e la sicurezza è solo uno dei tanti requisiti critici
Applicazioni a pacchetto– Anche se configurate in base alle esigenze del cliente, sono normalmente
sviluppate su standard del fornitore che può non essere in linea con i requisiti delle Utility
Sviluppo in outsourcing– Vengono utilizzati sviluppatori esterni per skill e abbattimento dei costi, questo
consiste in un elevato dettaglio di requisiti di sicurezza da chiedere al fornitore, che non sempre viene fatto
Free and open source (FOSS)– Soluzioni a basso costo ma sono realizzati da gruppi di sviluppatori che possono
non applicare i requisiti necessari
© 2010 IBM Corporation
Secure Engineering Una serie di concetti, principi e best practice con l’obiettivo di integrare la
sicurezza nel software progettato. Riguarda tutte le fasi del ciclo di sviluppo del software
– Definizione dei requisiti
– Design dell’architettura
– Implementazione
– Test
– Deploy
– Post deployment
Secure Engineering non riguarda solo la fase di Secure Engineering non riguarda solo la fase di implementazione, ma è un approccio end-to-endimplementazione, ma è un approccio end-to-end
© 2010 IBM Corporation
Security educationSecurity education
Strategia di sicurezza e metricheStrategia di sicurezza e metriche
Security & Software Development Life Cycle
© 2010 IBM Corporation
© 2010 IBM Corporation
Categorie e proprietà dei requisiti di sicurezza
Es. proprietà SMART+
•Specifici
•Misurabili
•Adeguati
•Ragionevoli
•Tracciabili
Ref. http://www.owasp.org
© 2010 IBM Corporation
© 2010 IBM Corporation
Principi di Secure Design
© 2010 IBM Corporation
Definire le priorità: Risk Analysis
Analizzare software complessi può risultare un’impresa molto lunga e costosa
E’ necessario focalizzare l’attenzione sul codice più a rischio (es. componente che gestisce il login degli utenti, componente accessibile via rete, codice legacy etc.)
L’analisi dei rischi permette di:
– Definire le priorità di analisi in funzione della criticità e della funzioni di business
– Definire l’approccio all’analisi delle vulnerabilità
– “misurare” il livello di sicurezza del software prodotto (KPI)
– Individuare le contromisure più efficaci
© 2010 IBM Corporation
© 2010 IBM Corporation
Improper Input Validation
Improper Encoding or Escaping of Output
Failure to Preserve SQL Query Structure (aka 'SQL Injection')
Failure to Preserve Web Page Structure (aka XSS)
Failure to Preserve OS Command Structure
Clear text Transmission of Sensitive Information
Cross-Site Request Forgery (CSRF)
Race Condition
Error Message Information Leak
Failure to Constrain Operations within the Bounds of a Memory Buffer
External Control of Critical State Data
External Control of File Name or Path
Untrusted Search Path
Es. Vulnerabilità comuni (SANS/MITRE Top 25)
© 2010 IBM Corporation
Failure to Control Generation of Code (aka 'Code Injection')
Download of Code Without Integrity Check
Improper Resource Shutdown or Release
Improper Initialization
Incorrect Calculation
Improper Access Control (Authorization)
Use of a Broken or Risky Cryptographic Algorithm
Hard-Coded Password
Insecure Permission Assignment for Critical Resource
Use of Insufficiently Random Values
Execution with Unnecessary Privileges
Client-Side Enforcement of Server-Side Security
Es. Vulnerabilità comuni (SANS/MITRE Top 25)
© 2010 IBM Corporation
© 2010 IBM Corporation
Code Review/Testing Tools Esistono tre approcci fondamentali per analizzare le vulnerabilità di
un’applicazione:
– White Box: viene analizzato il codice sorgente e l’applicazione NON viene eseguita
– Black Box: NON si ha accesso al codice sorgente e l’applicazione viene eseguita
– Gray Box: si ha parzialmente accesso al codice sorgente e l’applicazione viene eseguita
L’analisi delle vulnerabilità può essere fatta a mano o con tool automatici
La revisione manuale è efficace per porzioni limitate di applicazione e codice. Spesso non è la strada corretta
– Richiede skill elevati di sicurezza
– Richiede molto tempo (pensate cosa significa controllare 500K LoC…)
© 2010 IBM Corporation
I potenzialiI potenzialiProblemi di sicurezzaProblemi di sicurezza
DynamicDynamicAnalysisAnalysis
StaticStaticAnalysisAnalysis
• Problemi di configurazione• Problemi di Patch Level • Problemi di privileges escalation• Problemi di autenticazione• Problemi in external 3rd party components
• Null Pointer Dereference•Problemi di qualità del codice• Problemi di Dead Code• Crypto Functions non sicure• Problemi nel codice delle Back-End Application (Applicazioni Multi-Tier)
• SQL Injection• Cross Site Scripting• HTTP Response Splitting• OS Commanding• LDAP Injection• …
Application Logic Issues
Runtime Analysis
Runtime Analysis utilizza sia la Static che Dynamic Analysis correlandone i risultati
Tipologie di Analisi
© 2010 IBM Corporation
// ... String password = request.getParameter("password");
// ... "userid='" + username + "' " + "AND password='" + password + "'"; // ...
String username = request.getParameter("username");
String query = "SELECT …" + username
ResultSet rs = stmt.executeQuery(query);
String username = request.getParameter("username");
String query = "SELECT * from tUsers where " +'
ResultSet rs = stmt.executeQuery(query);
Sistemi White-Box (es. SQL Injection)
… a un Sink
da un Source …
© 2010 IBM Corporation
AppScan Standard Ed (desktop)
AppScan Enterprise user (web client)
AppScan Source Ed for Automation
IBM Rational Web Based Training for AppScan
AppScan Source Ed for Developer / Remediation
AppScan Ent. QuickScan (web client) AppScan Tester Ed
(scanning agent)(QA clients)
Rational Build Forge
Rational Quality Manager
Rational Application Developer
Rational Software Analyzer
Rational ClearCase
Rational ClearQuest / Issue Management
AppScan Enterprise / Reporting Console / Source Ed Core
CODEBuild security testing into the IDE*
BUILDAutomate Security / Compliance testing in the Build Process
QASecurity / compliance testing incorporated into testing & remediation workflows
SECURITYSecurity & Compliance Testing, oversight, control, policy, audits
IBM Rational AppScan Ecosystem
AppScan Source Ed for Security
© 2010 IBM Corporation
Informazioni utili
NERC – CIP-003 R5 (Access control)– CIP-004 (Personnel & Training)– CIP-007-1 R5 (Account Management)
NIST– NISTIR 7628 1.0
DHS– Software Assurance working group and “Build Security In”
MITRE CVE and CWE– Common Vulnerabilities and Exploits, and Common Weakness Enumeration
OWASP– Open Web Application Security Project
Cigital BSIMM– Building Security in Maturity Model
IBM X-Force– Worldwide cyber threat and risk analysis team