La sicurezza delle applicazioni -dal modello tradizionale al cloud- Simone Riccetti, IT Security Architect IBM Italy 2009 IBM Corporation
Vulnerabilità riportate dai vendor 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.
Perchè il problema continua a crescere? Connettività: Internet L incremento del numero e delle tipologie d vettori di attacco è proporzionale all incremento di connettività. SOA/Web Services Applicazioni legacy non progettate per essere in rete, sono visibili come servizi. Sistemi Legacy Non sempre supportano le moderne funzionalità di sicurezza (es. Autenticazione) Estensibilità: Il software è sempre più estensibile, es browser plug-in, dynamic loadable device driver L estensibilità dei software rende difficile prevederne la superficie di attacco nel tempo Complessità: La complessità delle architetture software è sempre maggiore Nel 1990, Windows 3.1 aveva 2,500,000 linee di codice. Windows XP ha circa 40,000,000 linee di codice. Il numero di bugs è proporzionale al numero di linee di codice
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 Security by Design Security by Implementation Security by Deployment Secure Engineering non riguarda solo la fase di implementazione, ma è un approccio end-to-end
Quanto costa correggere una vulnerabilità? 80% dei costi di sviluppo sono spesi per identificare e correggere gli errori National Institute of Standards & Technology Quando il prodotto è stato rilasciato Durante la fase di coding $25/difetto Durante la fase di build $100/difetto Durante la fase di test $450/difetto $16,000/difetto + Perdita della fiducia del cliente, danni di immagine, etc. Caper Jones, Applied Software Measurement, 1996 * Source: 2008 GBS Industry standard study. Defect cost derived in assuming it takes 8 hrs to find, fix and repair a defect when found in code and unit test. Defect FFR cost for other phases calculated by using the multiplier on a blended rate of $80/hr.
Security Engineering & Software Development Life Cycle Strategia di sicurezza e metriche Definizione dei requisiti Design Implementazione Test Deploy Requisiti di sicurezza Principi di secure design Secure coding Risk analysis Vulnerability management Secure deployment Operational enablement Abuse cases Risk analysis Revisione del codice Security testing Security testing Security education
Le macro categorie di requisiti di sicurezza Auditing & logging Authentication & authorization Session management Input validation & output encoding Exception management Cryptography & integrity Data at rest Data in motion Configuration management
Use Cases e Misuse Cases Oltre agli Use Case, che definiscono gli aspetti funzionali dell applicazione, è necessario identificare i possibili scenari di attacco o Misuse Cases. E importante avere la prospettiva dell attacker Rer: http://www.owasp.org/index.php/testing_guide_introduction
Secure Design..circa il 50% dei problemi di sicurezza sono dovuti ad errori architetturali
Secure Coding Quali sono le principali cause di vulnerabilità del codice? 1. Requisiti di sicurezza non definiti o poco chiari 2. Implementazione errata di requisiti corretti 3. Nella fase di deployment e configurazione non rispecchia i requisiti e le modalità operative previste Focus sul problema #2
The 2010 CWE/SANS Top 25 Most Dangerous Software Errors Codice CWE CWE-79 CWE-89 CWE-120 CWE-352 CWE-285 CWE-807 CWE-22 CWE-434 CWE-78 CWE-311 CWE-798 CWE-805 Descrizione Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') Buffer Copy without Checking Size of Input ('Classic Buffer Overflow') Cross-Site Request Forgery (CSRF) Improper Access Control (Authorization) Reliance on Untrusted Inputs in a Security Decision Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') Unrestricted Upload of File with Dangerous Type Improper Neutralization of Special Elements used in an OS Command Missing Encryption of Sensitive Data Use of Hard-coded Credentials Buffer Access with Incorrect Length Value
The 2010 CWE/SANS Top 25 Most Dangerous Software Errors Codice CWE CWE-98 CWE-129 CWE-754 CWE-209 CWE-190 CWE-131 CWE-306 CWE-494 CWE-732 CWE-770 CWE-601 CWE-327 CWE-362 Descrizione Improper Control of Filename for Include/Require Statement in PHP Program Improper Validation of Array Index Improper Check for Unusual or Exceptional Conditions Information Exposure Through an Error Message Integer Overflow or Wraparound Incorrect Calculation of Buffer Size Missing Authentication for Critical Function Download of Code Without Integrity Check Incorrect Permission Assignment for Critical Resource Allocation of Resources Without Limits or Throttling URL Redirection to Untrusted Site ('Open Redirect') Use of a Broken or Risky Cryptographic Algorithm Race Condition
Es. Taint String //... String username = request.getparameter("username"); String password = request.getparameter("password"); //... String query = "SELECT * from tusers where " + "userid='" + username + "' " + "AND password='" + password + "'"; //... ResultSet rs = stmt.executequery(query);
Es. Concorrenza. public class Main extends HttpServlet{ int accessi = 0; public void doget(httpservletrequest in, HttpServletResponse out) throws ServletException, IOException { out.setcontenttype("text/plain"); PrintWriter p = out.getwriter(); } } accessi++; try { Thread.sleep(1000); } catch (InterruptedException e) { e.printstacktrace(); } p.println( accessi + Request effettuate ");
Combinazione dei test di sicurezza Static Analysis Null pointer dereference Threading issues Code quality issues Issues in dead code Insecure crypto functions Issues in back-end application code Stored vulnerabilities Complex SQL injection Vulnerabilità Hybrid Analysis* Client-side issues DOM-based XSS DOM-based Open Redirect HTML5 Notification Phishing HTML5 Client-side SQL Injection Etc. 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 Dynamic & Static SQL Injection Cross Site Scripting HTTP Response Splitting OS Commanding LDAP Injection XPath Injection Path Traversal Buffer Overflows Format String Issues 21
IBM Rational AppScan Ecosystem AppScan Enterprise / Reporting Console / Source Ed Core AppScan Source Ed for Developer / Remediation AppScan Ent. QuickScan (web client) AppScan Source Ed for Automation (scanning agent) (QA clients) AppScan Tester Ed AppScan Enterprise user (web client) AppScan Standard Ed (desktop) Rational Application Developer Rational Software Analyzer Rational ClearCase Rational Build Forge Rational Quality Manager AppScan Source Ed for Security Rational ClearQuest / Issue Management CODE Build security testing into the IDE* BUILD Automate Security / Compliance testing in the Build Process QA Security / compliance testing incorporated into testing & remediation workflows SECURITY Security & Compliance Testing, oversight, control, policy, audits IBM Rational Web Based Training for AppScan
Non solo i tool Security Architecture Security Implentation Code review (manuale) Vulnerabilità
Servizi Cloud per lo sviluppo e test
IBM Cloud Application Development & Test Deployment rapido di nuovi progetti Attività di transizione Demo Training POC Migration of technology Multi-site, outsourced development & test Accesso multi-sites; remote locations, etc. Team eterogeneo / contractor resources 1 Provision RTC Rational Team Concert Collaborative Development Process Facilitation Source Control Defect Management Rational Requirements Composer Dev Lead Developm ent Developme Developers Lead nt Lead 3 Developers work with RTC using web or rich client interface RTC 2 Customize preinstalled templates
Cosa cambia con i servizi tipo Cloud? In generale, la qualità del processo si riflette sulla qualità del prodotto, e questo vale anche per il Secure Engineering Il processo di Secure Engineering deve tener conto di diversi fattori: Skill di sicurezza Tecnologie di analisi disponibili Tipo di applicazioni sviluppate Processo di Sviluppo Tecnologie di comunicazione? Processo di Sviluppo Tecnologie di comunicazione Tipo di applicazioni sviluppate Skill di sicurezza Tecnologie di analisi disponibili Modello Tradizionale Modello cloud