by Ken van Wyk
Nonostante la sicurezza sia di vitale importanza per la nostra esistenza, l’attenzione che le dedichiamo è minima. Sto parlando della sicurezza dei computer e, in particolare, del software. Tutti i tipi di software, dai sistemi operativi fino alle applicazioni che si utilizzano quotidianamente sul desktop, così come tutto il software che gira su un qualsiasi mainframe e quello che si impiega su dispositivi mobili intelligenti.
E’ senz’altro vero, non siamo interessati più di tanto alla sicurezza, altrimenti non si spiega per quale motivo continuiamo a ripetere all’infinito sempre gli stessi errori. Se diamo un’occhiata al software che utilizziamo troviamo ripetutamente difetti che sono legati ad aspetti di sicurezza conosciuti da un sacco di tempo. Prendiamo per esempio le applicazioni Web. Se si prende in esame la Top 10 delle vulnerabilità definite dall’Open Web Application Security Project (Owasp) ci si accorge che è possibile eliminarle applicando semplicemente una positive input validation. Il problema è che questo non accade quasi mai. Perché? Attribuisco la colpa a una serie di fattori, tra questi:
• La corsa frenetica al mercato. La pressione per rendere disponibile il software sul mercato non è mai stata così grande. Una tendenza che è stata amplificata dall’affermazione di una logica simile a una corsa all’oro, come nel caso delle applicazioni per l’iPhone di Apple. L’inevitabile risultato è stata una sempre più debole attenzione verso gli aspetti di sicurezza dei prodotti finali.
• Focalizzazione sulle funzionalità. A causa della divergenza nello sviluppo del software e della sicurezza (le due discipline si sono raramente integrate) si è assistito a un’attenzione esasperata alla semplice funzionalità del software. I problemi di sicurezza si rivelano invece negli aspetti non funzionali o, per essere più corretti, in quella parte di software che non è un’esplicita conseguenza dell’implementazione funzionale.
• Collaudo inadeguato. Proprio perché lo sviluppo software è primariamente concentrato sugli aspetti funzionali, le attività di collaudo sono per lo più dirette alla verifica delle specifiche funzionali. Non solo, ma nei casi in cui realmente viene eseguito un test di sicurezza, che per sua natura è per lo più slegato dagli aspetti funzionali, si effettua un banale test di penetrazione.
• Incapacità di imparare dagli errori. In quasi tutte le discipline ingegneristiche gli errori costituiscono la base della conoscenza. Paradossalmente questo non è vero per l’ingegneria del software. Nonostante esista un’ampia documentazione sulle vulnerabilità di sicurezza del software è raro che gli sviluppatori abbiano un accesso diretto a quelle informazioni. Un comportamento che non sarebbe accettato in altre comunità ingegneristiche, come per esempio nell’ingegneria civile dove difficilmente si disegna un ponte senza prendere in considerazione gli aspetti di sicurezza.
I punti appena elencati sono soltanto alcuni dei fattori che ostacolano una ricerca della sicurezza, ma sono tutti importanti per comprendere la situazione con la quale abbiamo oggi a che fare.
Naturalmente non vi sono solo notizie cattive. Alla fine degli anni Sessanta iniziò a emergere una vera disciplina legata agli aspetti di sicurezza del software e da allora sono state condotte attività estremamente significative. Senza dubbio le capacità che abbiamo oggi nel gestire la materia sono aumentate enormemente. Uno tra i più importanti progressi conseguiti è il miglioramento dei processi legati allo sviluppo del software, così come la comprensione di aspetti tecnici e la creazione di alcuni strumenti che si sono dimostrati essere di grande aiuto.
Con l’aumentare della comprensione della sicurezza del software sono emerse anche delle metodologie di sviluppo orientate alla sicurezza. Queste ultime sono state ben documentate in numerosi libri pubblicati negli ultimi anni. Tra questi, The Security Development Lifecycle, di Michael Howard e Stephen Lipner edito da Microsoft Press, oppure Software Security, di Gary McGraw edito da Addison Wesley. Questi due libri descrivono i due principali approcci allo sviluppo di un software sicuro.
L’approccio Microsoft SDL definisce un processo a 12 step o livelli che può essere considerato maturo e rigoroso. Creato da e per Microsoft al fine di essere utilizzato internamente per lo sviluppo dei propri prodotti è stato oggetto di continui miglioramenti ed è considerato da molti come l’insieme di pratiche più avanzato attualmente disponibile.
In sintesi, i passi, o livelli, definiti dal processo SDL sono i seguenti:
L’SDL, creato ovviamente con l’idea di favorire lo sviluppo di prodotti software di grandi dimensioni, risente di una forte normalizzazione ed è molto rigoroso. Per essere realmente implementato richiede che vengano messi in atto dei cambiamenti sostanziali alle pratiche software di una specifica organizzazione. Quest’ultimo è uno degli aspetti che rappresenta il maggiore ostacolo perché l’SDL possa essere adottato su larga scala.
Nel suo libro Software Security, McGraw definisce invece un processo chiamato il modello “Touchpoint”. In buona sostanza quest’ultimo differisce dal precedente per essere fondamentalmente un processo basato sulla revisione. Il libro fu scritto per conto della Cigital, ovvero l’azienda di consulenza, in tema di sicurezza, presso cui lavorava McGraw.
L’approccio Touchpoint tende a non mettere in atto cambiamenti sostanziali al processo di sviluppo software corrente, ma a integrare le analisi dei più significativi interventi adottati nel corso dello sviluppo del software.
Il Touchpoint process definisce numerose attività, tra queste:
Abuse cases
Security requirements
Architectural risk analysis
Code review
Penetration testing
Risk-based security testing
Security operations
External analysis
Essendo un processo review-oriented, Touchpoint permette alle organizzazioni di adottare con facilità le misure che sono indicate senza che vengano messe completamente in discussione le pratiche correnti. Dall’altra parte, poiché è un processo basato sulla ricerca degli errori, non contiene le rigidità presenti nel modello SDL di Microsoft.
Se è vero che è importante ispirarsi a processi consolidati, come per esempio quelli appena descritti, è anche vero che senza una conoscenza di base si rischia di non raggiungere alcun valido risultato. Pertanto è indispensabile che gli sviluppatori software abbiano una comprensione dei difetti di sicurezza del software e del modo più corretto per contrastarli. Il punto migliore da cui iniziare a sviluppare queste conoscenze, quanto meno per gli sviluppatori Web, è Owasp.
I contributi resi da Owasp in merito a questi aspetti sono stati numerosi e significativi e includono due affermati tool, WebGoat e WebScarab. Come succede per tutto quanto prodotto da Owasp, WebGoat e WebScarab sono tool open source e vengono resi disponibili gratuitamente alla comunità degli sviluppatori. I due tool sono estremamente utili per creare una solida conoscenza di base.
WebGoat è una semplice applicazione Web basata sul server J2ee Tomcat di Apache. E’ un tool di apprendimento organizzato che permette di eseguire vari esercizi in numerose categorie, come cross-site scripting (Xss), Sql injection, e altre aree della Top 10 di Owasp.
In tutta onestà posso affermare che WebGoat sia uno dei più potenti tool che abbia mai incontrato nella mia ventennale esperienza in questo campo. Senza alcuna eccezione, qualsiasi persona che si interessa di tecnologia software e di tecnologia Web – dall’architetto, al programmatore, al collaudatore – avrebbe l’obbligo di riuscire a superare con successo tutti gli esercizi previsti da WebGoat. E’ un’affermazione un po’ ardita, ma la sottoscrivo pienamente. WebGoat è davvero così come l’ho descritto.
A complemento di WebGoat, esiste WebScarab, un tool general purpose per il testing di software orientato al Web. Funziona interponendosi tra il Web browser del collaudatore e l’applicazione da collaudare e permette di intercettare tutte le richieste e risposte Http che intercorrono tra client e server. I messaggi intercettati possono essere esaminati o essere oggetti di editing a seconda delle necessità del collaudatore. Queste capacità di base, simili a un debugger di un’applicazione desktop, permettono al programmatore e al collaudatore di operare con un ricco set di funzionalità. Esercitandosi con WebGoat e utilizzando WebScarab per eseguire potenziali attacchi si è così in grado di imparare tutte le più importanti lezioni sulla sicurezza delle applicazioni Web.
Nel corso degli ultimi anni sono emersi prodotti commerciali nell’ambito dei tool per la sicurezza del software. I più significativi sono senza dubbio i tool di analisi del codice sorgente statico, strumenti che sono frutto dell’evoluzione di un paio di progetti di ricerca compiuti a fine anni Novanta e che ora costituiscono un’offerta matura di prodotti commerciali. Le più importanti aziende per questi tipi di prodotto sono Coverity, Fortify e Ounce Labs. I tool di analisi del codice statico esaminano il codice sorgente per rilevare i più comuni difetti di sicurezza. La maggior parte dei tool può essere estesa per verificare la conformità alle policy di sicurezza aziendali. Se usati nel modo appropriato, e integrati nel processo di sviluppo del codice, questi strumenti possono apportare un grande beneficio ai team di sviluppo e possono aiutare a prevenire alcuni dei più comuni errori.
Queste tre cose — processi consolidati, conoscenza di base e tool di sicurezza – possono essere di grande vantaggio per gli sviluppatori che devono garantire la produzione di software a prova di sicurezza. Quest’ultima, a ogni modo, è un bersaglio in continuo movimento ed è quindi importante mantenersi costantemente aggiornati sulle nuove tipologie di attacco, sulle vulnerabilità e sulle tecnologie correlate.
L’evoluzione dell’IT tra sfide e promesse
Frank Greco
Verso la new digital economy. Quale architettura per la trasformazione digitale?
Mike Rosen
Ecco come capire il cliente. I diversi punti di vista della Business Analysis
James Robertson
Ecco come capire il cliente I diversi punti di vista della Business Analysis
Suzanne Robertson
E se il Design Sprint fosse il nuovo asso nella manica? Come risolvere grandi problemi e testare nuove idee
James Hobart
Come essere veramente data driven. L’importanza dell’architettura dati
Mike Ferguson
Il Machine Learning in azienda. Come migliorare performance e previsioni
Frank Greco
Portfolio management avanzato: Come trasformare gli investimenti in cambiamento
Chris Potts
L’imbuto e le biglie. Ovvero la metafora della produttività dei team
Sander Hoogendoorn
Dal Data Warehouse al digital business. Un’architettura di trent’anni ancora valida
Barry Devlin
Dai silos a un ecosistema analitico integrato. Un approccio per avere dati da usare su più sistemi
Mike Ferguson
Come accelerare l’innovazione in azienda. La nuova generazione dell’IT enterprise
Frank Greco
Tassonomie e ricerche. Ecco come ottenere migliori risultati
Heather Hedden
Viaggio verso il data warehouse logico
Il grande dilemma della business intelligence
Rick van der Lans
Enterprise information catalog. I requisiti per fare la scelta giusta
Mike Ferguson
La nuova era dell’analisi predittiva - Le aziende alla prova del Machine Learning
Frank Greco
Uno sguardo Agile - Per capire il passato e progettare il futuro
Arie van Bennekum
Trasformazione Agile
Se il product owner diventa un collo di bottiglia
Sander Hoogendoorn
Una Fiat o una Ferrari?
Qual è la più adatta per il business digitale?
Barry Devlin
Vincere la complessità dei dati. È l’ora dello smart data management
Mike Ferguson
Big Data e Analytics - Se il machine learning accelera anche la data science
Mike Ferguson
I dati al centro del business
Christopher Bradley
I Big Data forniscono il contesto e la ricchezza predittiva attorno alle transazioni di business Avere dati coerenti e di qualità resta fondamentale per il processo decisionale
Barry Devlin
Cosa c’è dietro l’angolo? Cinque mosse per diventare un digital leader
Jeroen Derynck
Managing information technology Gestire l’IT come un business nel business
Mitchell Weisberg
Data integration self-service Miglioramento della produttività o caos totale?
Mike Ferguson
Project manager vecchi miti e nuove realtà
Aaron Shenhar
La catena alimentare dei requisiti
Suzanne Robertson
Come diventare un’azienda data-centric
Lindy Ryan
Enterprise analytical ecosystem - Come comprendere il comportamento online dei clienti e capitalizzare il valore dei dati nell’era Big Data
Mike Ferguson
Agilità? Basta Volere
Suzanne Robertson
Ma la vostra architettura è efficace?
Mike Rosen
Se il NoSQL diventa SQL
Rick van der Lans
La data quality e l’impatto sul business
Danette McGilvray
Business analysis e regole di business By Ronald G. Ross con Gladys S.W. Lam
Ronald Ross
Usare Scrum su larga scala: cosa cambia?
Craig Larman
Le architetture per ridurre il debito tecnico
Mike Rosen
Conversando con un marziano
Suzanne Robertson
Cosa c’è di nuovo nel project management?
Aaron Shenhar
Reinventare la Business Intelligence
Barry Devlin
Il nuovo volto della business intelligence
Shaku Atre
Alla ricerca del valore tra i pomodori nell'orto
John Favaro
I big data cambiano il mercato dei Database Server
Rick van der Lans
Un “superstorm” di informazioni
Barry Devlin
I dieci step per la qualità dei dati
Danette McGilvray
Perché è meglio evitare il private cloud?
Jason Bloomberg
Leonardo da Vinci aveva ragione!
Chris Date
Mobile user experience: Come adottare una strategia sostenibile
James Hobart
Cosa significa occuparsi di architettura?
Mike Rosen
Virtualizzazione dei dati e sistemi di Business Intelligence Agili
Rick van der Lans
Modelli e linguaggi naturali, quale il modo migliore per definire i requisiti?
James Robertson
Extreme Scoping: un approccio Agile all'Edw e alla BI
Larissa Moss
BI², la Business Intelligence al quadrato
Barry Devlin
I test di regressione in ambienti legacy
Randy Rice
Le conseguenze della consumerizzazione e del Cloud
Chris Potts
Come vanno gli affari? Chiedetelo al vostro cruscotto
Shaku Atre
Organizzare team di progetto efficienti in ambienti DW/BI
Larissa Moss
Big Data, come e perché
Colin White
Business Capabilities e l'allineamento del business all'IT
Mike Rosen
Il valore della tassonomia nella ricerca delle informazioni
Zach Wahl
BI, ma il Data Warehouse è ancora necessario?
Colin White
Reinventare la Business Intelligence
Barry Devlin
Il cruscotto delle prestazioni: il nuovo volto della Business Intelligence
Shaku Atre
Modelli e processi di User acceptance testing
Randy Rice
I limiti nel gestire l'IT come un Business
Chris Potts
Le componenti fondamentali del Cloud
George Reese
Metadati e DW 2.0
Derek Strauss
BI Open Source: basso costo e alto valore?
Jos van Dongen
Semplicità e requisiti
Suzanne Robertson
Business intelligence e analisi testuale
Bill Inmon
Extreme Scoping™: approcci agili al DW e alla BI
Larissa Moss
Dalla BI a un'architettura IT di livello Enterprise
Barry Devlin
Ambiente efficiente di ricerca di informazioni
James Hobart
Il Business deve trainare la Strategia IT
Chris Potts
Web database: la questione MapReduce (seconda parte)
Colin White
Web database: la questione MapReduce
Colin White
Misura delle prestazioni. I sette comandamenti
Harry Chapman
Le dieci cose che un architetto deve fare per creare valore
Mike Rosen
Sviluppare applicazioni a prova di sicurezza
Ken van Wyk
The ECM Landscape in 2008
Alan Pelz-Sharpe
Ma chi sono gli operatori dell’informazione?
Colin White
Qualità dell’informazione e trasformazione del management
Larry English
Classificazione sistematica delle informazioni
Zach Wahl
L’uso intensivo del Web nelle applicazioni di Bi
Colin White
Enterprise Search
Theresa Regli
La forza dell'astrazione
Steve Hoberman
La strada verso una BI pervasiva
Cindi Howson
Soa, una strategia di test
Randy Rice
Verso una BI più semplice e a minor costo
Colin White
I contenuti “Killer” del Web
Gerry McGovern
Sviluppo iterativo del software per i Dw
Larissa Moss
Qualità delle Informazioni e Datawarehousing
Larry English
Lo scenario Ecm 2008
Alan Pelz-Sharpe
La nascita del Web 3.0
John Kneiling
Documentazione: il dossier del crimine
Suzanne Robertson
L’impatto del Web 2.0 sui portali delle imprese
Colin White
Le tecniche vincenti di IT Management
Ken Rau
Web di successo se si conosce il cliente
Gerry McGovern
Un approccio alla BI incentrato sui processi
Colin White
Integrare Master Data Management e BI (Parte Seconda)
Mike Ferguson
Integrare Master Data Management e BI (Parte Prima)
Mike Ferguson
Il Project Manager è una Tata
Suzanne Robertson
Web di successo se si conosce il cliente
Gerry McGovern
L'informazione personalizzata
Colin White
La Tassonomia dell'Impresa
Zach Wahl
Managed Meta Data Environment (II parte)
David Marco
Managed Meta Data Environment
David Marco
Migliorare le applicazioni dell'impresa con Web 2.0
James Hobart
La Balanced Scorecard migliora la Performance dell'IT
Harry Chapman
La fusione dei processi dell'impresa grazie a Soa (II parte)
Max Dolgicer
La fusione dei processi dell'impresa grazie a SOA (I parte)
Max Dolgicer
Volere è Potere, in Ogni Senso
Suzanne Robertson
Dimostrate con i numeri il valore dei contenuti del web
Gerry McGovern
Il Back-end della pianificazione strategica dell'It
Ken Rau
L'audit delle prescrizioni di progetto (II parte)
Suzanne Robertson
L'audit delle prescrizioni di progetto (I parte)
Suzanne Robertson
Il Processo di gestione delle informazioni
Ted Lewis
I requisiti come strumento di gestione dei progetti
Suzanne Robertson
Il futuro è nel contenuto killer del web
Gerry McGovern
Alla ricerca del valore tra i pomodori nell'orto
John Favaro
Rilevare i costi sulla base delle attività
Ken Rau
Un percorso verso l'impresa intelligente (II parte)
Mike Ferguson
Un percorso verso l'impresa intelligente (I parte)
Mike Ferguson
Il Data Store Operativo: un lavoro di martello
Claudia Imhoff
Il data warehouse orientato all'impresa
Michael Schmitz
Dieci punti chiave per realizzare balanced scorecard di successo
Harry Chapman
Content management: i contenuti al primo posto
Gerry McGovern
Applicazioni Web ad alta disponibilità
John Kneiling
Il 2004, sarà l'anno in cui abbandoneremo html?
James Hobart
La tecnologia EII ripropone il data warehousing virtuale?
Colin White
Volere è Potere, in Ogni Senso
Suzanne Robertson
Realizzare il CPM e l'integrazione della BI
Mike Ferguson
Tutti i punti della FPA
Koni Thompson
Requiem per il Portale?
Colin White
Business Intelligence: dalla teoria alla realtà (II parte)
Shaku Atre
Business Intelligence: dalla teoria alla realtà (I parte)
Shaku Atre
I portali Corporate e di E-business: la nuova generazione del posto di lavoro
Mike Ferguson
I 10 errori da evitare nella realizzazione di un Meta Data Repository (II Parte)
David Marco
I 10 errori da evitare nella realizzazione di un Meta Data Repository (I parte)
David Marco
Usare i modelli per acquisire l'esperienza di progettazione
James Hobart
Realizzare l'Impresa Intelligente
Colin White
.NET or J2EE - Choosing the Right Web Services Framework
John Kneiling
Progettare Applicazioni Mobili di Successo
James Hobart
La Sociologia del Progetto: Identificare e Coinvolgere tutti i Partecipanti
Suzanne Robertson
Integrare la Business Intelligence nell'Impresa (II parte)
Mike Ferguson
Integrare la Business Intelligence nell'Impresa (I parte)
Mike Ferguson
L'Evoluzione del Portale di e-Business (II parte)
Colin White
L'Evoluzione del Portale di e-Business (I parte)
Colin White
Il Consulente WebEAI: Servizi Web, XML e l'Impresa
John Kneiling
Data Mining: Come Gestire le Relazioni con i Clienti Secondo i Principi del CRM
Weaver James