Software Quality per Information Security

Analizzatore statico semantico per i linguaggi Java e Android, basato sulla teoria scientifica dell’interpretazione astratta, in grado di identificare una vasta gamma di errori e vulnerabilità.

Pubblicato il 05 Dic 2016

Il tema dell’Information Security e della salvaguardia della sicurezza informatica e della confidenzialità dei dati è sempre più sentito in tutti i settori di mercato, e in particolare in quello bancario; i rischi stanno infatti crescendo parallelamente al crescere della quantità e della sofisticazione delle minacce che, combinate alla diffusione delle tecnologie mobile e alla crescente complessità dei sistemi informatici, hanno reso insufficienti gli strumenti di protezione tradizionali. In risposta a questo scenario è diventato necessario focalizzarsi anche sulla application security per costruire la sicurezza partendo dall’interno delle applicazioni stesse.

È in quest’ambito che si colloca la soluzione Julia, sviluppata dalla società omonima, nata nel contesto dell’Università di Verona, oggi parte del gruppo Corvallis [azienda italiana operante nel campo dei servizi informatici – ndr]. Racconta di cosa si tratta Fausto Spoto, consulente scientifico, Julia: “Il nostro sistema ha lo scopo di trovare problemi di sicurezza nel codice informatico; è in grado di individuare automaticamente, in pochi minuti, sia nei linguaggi Java che Android, degli errori che potrebbero dare origine a problemi quali la perdita di informazioni sensibili o danni di vario genere ai sistemi informatici aziendali” [Figura 1].

Perché un agente esterno possa riuscire nel suo attacco, è infatti necessaria una “porta di accesso” all’interno del software. Idealmente queste porte non dovrebbero esistere, di fatto spesso ne vengono create involontariamente tramite errori nel codice. L’obiettivo di Julia è individuare questi errori prima che vengano trovati dagli hacker.

Figura 1 – Julia: un analizzatore statico semantico per verificare errori nella scrittura del software e costruire applicazioni sicure già nella fase del loro sviluppo

Ha adottato la soluzione la Società di Gestione Servizi (SGS) di Banco Popolare. I consulenti di Julia hanno collaborato col team tecnico del cliente analizzando inizialmente 7 diverse applicazioni. Le segnalazioni di potenziali errori rilevati (la soluzione genera automaticamente un report pdf con una rappresentazione grafica dei risultati per una facile consultazione da parte dei diversi stakeholder) sono state soggette a un’interpretazione critica dei consulenti, ordinate per importanza e priorità di intervento di correzione e presentate alla Direzione e ai referenti applicativi delle varie aree. Come racconta Spoto, data la buona riuscita di questa fase pilota lo strumento è stato inserito nel ciclo di sviluppo di tutto il software SGS.

Più qualità e sicurezza per le applicazioni e vantaggi sul piano della compliance

Tra i benefici immediati il miglioramento della sicurezza, della qualità, e dell’efficienza delle applicazioni. Il ritorno dell’investimento si ripaga a breve-medio termine attraverso l’aumentata efficacia del ciclo di sviluppo, la ridotta manutenzione del software, la diminuzione dei disservizi dovuti a crash o blocchi degli applicativi e la riduzione dei rischi di sicurezza (e dunque dei costi diretti e di immagine derivati da eventuali incidenti).

Si aggiungano i vantaggi sul piano della compliance: “A livello normativo – dice Spoto – ci sono direttive, valide per esempio per tutte le banche europee, che specificano che il software esposto all’esterno [es. siti web e applicazioni mobili – ndr] dev’essere verificato da tecniche di analisi ‘statica’, ovvero realizzata prima dell’esecuzione del codice, proprio come quelle che prevede Julia”.

Al di là del mondo bancario, tutte le aziende possono trarre beneficio da questa soluzione: “I nostri primi clienti appartengono al mondo Finance, ma possiamo applicare Julia per controllare tutti i sistemi web e mobili, per esempio le applicazioni Android, estremamente diffuse, sviluppate da aziende di ogni settore”, spiega il manager.

Fausto Spoto, consulente scientifico, Julia

Spoto ha poi sottolineato, tornando al caso utente Società di Gestione Servizi di Banco Popolare, che gli esiti delle analisi sono stati percepiti dagli sviluppatori delle applicazioni in modo positivo, ovvero non come una “pagella” sul loro operato, ma semplicemente “come una opportunità di migliorare le proprie capacità di programmazione e i propri servizi informatici, offrendo di conseguenza un servizio migliore a chi utilizza i sistemi bancari”.

Un analizzatore semantico, che previene gli injection attacks ed è in grado di controllare anche applicazioni di terzi

Tra le caratteristiche distintive della soluzione messe in evidenza dai tecnici di Julia ricordiamo le seguenti:

  1. è l’unico tool per Java in grado di prevenire – attraverso l’analisi degli errori nella scrittura del software – le diverse tipologie di injection attacks [classe di attacchi che si basano sulla tecnica dell’iniettare dati malevoli all’interno di campi di input di una applicazione web sfruttando le vulnerabilità del software – ndr];
  2. è un analizzatore statico capace di effettuare un controllo di carattere semantico del codice applicativo Java e Android (“‘Semantico’, ovvero che ragiona sul significato del programma per trovare l’errore, non su come è scritto sintatticamente”, spiega Spoto): la tecnologia, basata sulla teoria matematica dell’interpretazione astratta, riesce a ricostruire un’approssimazione corretta dei dati del programma per tutte le possibili esecuzioni garantendo una forte precisione dell’analisi, diversamente dagli strumenti concorrenti basati su tecnologie semplificate di pattern matching sintattico [verifica del costrutto sintattico del linguaggio di programmazione per individuare stringhe irregolari rispetto a un dato modello – ndr], in grado di trovare solo parte degli errori;
  3. è l’unico strumento commerciale per analizzare il bytecode Java; unicità importante perché permette l’individuazione di errori e vulnerabilità anche in applicazioni fornite da terzi: “Analizziamo il codice compilato, ovvero risultato della compilazione del codice sorgente – specifica Spoto a questo proposito – Non abbiamo bisogno dunque di quest’ultimo, il che permette alle aziende che non sviluppano software, ma lo comprano, di analizzarne comunque la correttezza”.

Presentato da Julia

Implementato presso Società Gestione Servizi BP S.C.p.A.

Per vedere tutti i dettagli del progetto vai sul sito Digital360 Awards

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati

Articolo 1 di 3