Application Security Testing e gli strumenti di scansione

triangolo

L’analisi di Web Application Security

L’Application Security Testing (AST) è processo di identificazione e valutazione delle vulnerabilità del codice sorgente di un’applicazione, finalizzato a rendere il software analizzato più resistente nei confronti di eventuali minacce esterne di sicurezza.

In particolare, l’AST è uno degli ambiti di cui si deve comporre una strategia più ampia e completa di information security, che comprende anche la gestione tutelata dei dati riservati, la sicurezza delle reti, la corretta attribuzione di accessi, autorizzazioni e permessi, la protezione degli hardware connessi al network, l’informazione e la formazione continua del personale, la definizione di un incident response plan efficace. Qui parliamo della sicurezza dei soli applicativi, sebbene tutti gli aspetti indicati siano altrettanto importanti per tutelare l’integrità e la sicurezza delle informazioni sensibili di utenti, dipendenti e soggetti contrattualizzati.

Abbiamo già affrontato l’emergente aumento di complessità e numerosità dei tipi di attacchi informatici, la cui lista è stata recentemente aggiornata a seguito dell’ultima pubblicazione della OWASP Top 10 che è divenuta ormai un punto di riferimento internazionale per tutta la comunità di sviluppatori.

Proprio questa classifica dà la misura della serietà del rischio a cui si espongono le aziende, che affidano la gestione dei dati dei propri clienti a software non correttamente manutenuti o vulnerabili. In particolare, un applicativo non protetto da attacchi del tipo injection, può esporre gli utenti a furto di dati personali, furti di identità, estrazione di password, tentativi di phishing o invio di materiale non desiderato. In questo caso oltre alle conseguenze di un attacco informatico, l’azienda dovrebbe sostenere anche il danno alla propria reputazione ed alla integrità del rapporto di fiducia con gli utenti di cui ha messo a rischio i dati.

Per questi motivi, un’attenzione sempre più crescente viene riservata all’application security, in particolare alla qualità del codice scritto nella fase di sviluppo di un nuovo applicativo. L’intera comunità dev, a questo proposito, sta gradualmente rivoluzionando il consolidato modello DevOps di fusione dei livelli operativo e di sviluppo. Tale modello si sta infatti evolvendo per integrare anche la security delle applicazioni e delle infrastrutture sin dalle prime fasi del ciclo di sviluppo, creando un nuovo paradigma denominato DevSecOps.

All’interno di questo nuovo modello vengono attivati dei controlli automatici sulla qualità del codice scritto e sullo stato di aggiornamento del codice di terze parti che viene utilizzato. In questo modo si contribuisce a garantire la sicurezza dell’applicativo, ormai percepita come un valore intrinseco da utenti e fornitori di servizi. Inoltre il nuovo paradigma permette di velocizzare i tempi di verifica. Nel caso in cui il team di cyber security non venga coinvolto nello sviluppo dell’applicativo, si assiste infatti ad una sequenza di rinvii di attività tra sviluppatori e analisti, che rallenta il time-to-market, ed aumenta la frammentazione dei task.

Se il paradigma DevSecOps risponde alla necessità di maggiore sicurezza nello sviluppo dei nuovi applicativi, che cosa si può fare invece per le applicazioni legacy? Come possono le organizzazioni verificare che i propri applicativi siano resistenti rispetto alle forme di attacco discusse?

 Application security testing: come funziona

Per rispondere alla domanda di maggior sicurezza, sono stati sviluppati alcuni strumenti di application security che scansionano automaticamente gli applicativi o il loro codice sorgente e producono un report sul numero di vulnerabilità di cui si sospetta la presenza.

Tali strumenti possono essere suddivisi nelle seguenti categorie principali:

  • Static Application security testing (SAST) = l’analisi statica è una metodologia di test che scansiona il 100% del codice sorgente per trovare le vulnerabilità della sicurezza che rendono le applicazioni dell’organizzazione suscettibili agli attacchi. L’analisi SAST (detta anche “white box security test”) esegue la scansione di un’applicazione prima della compilazione del codice, e verifica la conformità rispetto alle linee guida di coding, senza richiedere che l’applicativo sia funzionante o che il codice venga eseguito. Questo tipo di approccio è quindi utilizzabile sia sugli applicativi legacy, così come dalle prime fasi di sviluppo.
  • Dynamic Application security testing (DAST) = l’analisi dinamica è un metodo che cerca le vulnerabilità della sicurezza simulando attacchi esterni a un’applicazione mentre quest’ultima è in esecuzione. Questo metodo non ha visibilità sul codice sorgente e per questo motivo viene detto “black box security test”. L’obiettivo è quello di tentare di penetrare un’applicazione dall’esterno controllando le sue interfacce esposte per sfruttare vulnerabilità e difetti.

Proprio per la complementarietà di questi approcci SAST e DAST sono spesso usati insieme. In particolare l’analisi SAST non troverà errori di runtime mentre l’analisi DAST non sarà in grado di segnalare  errori di codifica, almeno non fino al numero della riga di codice.

Inoltre sebbene le soluzioni SAST siano più facilmente automatizzabili ed integrabili all’interno degli IDE di sviluppo, tendono a generare una quantità maggiore di falsi positivi o falsi negativi, perché non eseguendo il codice non possono comprendere se una vulnerabilità emerse in una determinata riga venga già gestita altrove attraverso altre istruzioni.

Infine la scansione SAST produce ottimi risultati quando si tratta di trovare un errore in una riga di codice, come la generazione di numeri casuali deboli, ma di solito non è molto efficiente nel trovare difetti nel flusso di dati.

Dall’altra parte, l’analisi DAST risulta molto meno scalabile, strettamente dipendente dal livello di esperienza dei testers, e particolarmente lenta nell’esecuzione.

Per completezza è necessario citare anche altri due tipi di scansione:

  • Interactive application security testing (IAST) = questo tipo di approccio mutua delle tecniche di analisi dinamica, mantenendo un agent che scansiona il codice sorgente (come avviene invece nell’approccio statico). L’analisi IAST funziona attraverso l’uso di strumenti per monitorare un’applicazione mentre viene eseguita e stimolata attraverso richieste e interazioni dinamiche. Le soluzioni IAST distribuendo agenti e sensori nelle applicazioni in esecuzione e analizzando continuamente tutte le interazioni delle applicazioni avviate da test manuali, test automatizzati o una combinazione di entrambi per identificare le vulnerabilità in tempo reale.
  • Software composition analysis (SCA) = questo tipo di analisi esegue la scansione del codice per fornire visibilità sui componenti software open source, e di terze parti, per verificare la conformità delle licenze, il livello di aggiornamento e la presenza di vulnerabilità già note e risolte da rilasci successivi.

 Application security testing software: quale soluzione adottare

Sebbene esistano molteplici soluzioni sul mercato ed altrettanti vendor in grado di fornire tool di scansione automatica o semi-automatica, è sempre necessario avere a disposizione tecnici che possano correttamente interpretare i report di sicurezza generati in modo robotizzato. Come si è già avuto modo di notare anche in altre occasioni, in mezzo a tutti questi automatismi, il ruolo di un’intelligenza umana resta insostituibile per comprendere se, dove e come intervenire.

Gli strumenti fino a questo momento descritti sono molto utili per ridurre i tempi di analisi e rispondere alla rapidità con cui evolvono le strategie di attacco. Tuttavia, solo un team di tecnici specializzati può gestire tali strumenti con la giusta consapevolezza.

Omnia Group investe strutturalmente tempo e risorse nell’aggiornamento continuo dei propri sviluppatori e consulenti informatici in modo che possano riconoscere con sicurezza quando prendere seriamente una segnalazione di vulnerabilità riscontrata tramite un software automatico. L’uso di uno strumento di application security risulta fondamentale quando si affronta un processo di refactoring o modernizzazione del software per evitare di intervenire dove non è necessario, aumentando irresponsabilmente i costi di manutenzione.

 

Vai alla pagina sull'Application Security