Nel settore della Sicurezza Informatica, delle applicazioni, dei Sistemi Operativi e delle Reti Wireless esistono diverse modalità tramite le quali è possibile richiedere una verifica dei propri asset critici.
Le attività eseguite più comuni per garantire la sicurezza sono:
- Penetration Test, che possono essere effettuati in modo automatico o manuale, quasi sempre da un team esterno;
- Vulnerability Assessment, una versione più rapida (e spesso meno accurata) dei Penetration Test;
- Code Review, ovvero la verifica manuale del codice dell’applicazione da parte del tester.
Un’ulteriore possibilità, spesso non sufficientemente conosciuta, è rappresentata dai cosiddetti Bug Bounty Program. Essi sono tra le forme più moderne di verifica della sicurezza dei sistemi e stanno diventando sempre più importanti, soprattutto negli Stati Uniti, oltre a continuare a diffondersi sempre di più anche in tutto il resto del mondo.
Cerchiamo quindi di capire assieme le peculiarità di queste modalità, concentrandoci in particolare sulle differenze esistenti tra i Penetration Test e i Bug Bounty Program.
Che cosa è un Penetration Test?
Il Penetration Test è la verifica, tipicamente black box, dello stato di sicurezza di uno o più asset specifici, oppure indirizzi IP, effettuata in un preciso e concordato spazio temporale. Esso rappresenta quindi la fotografia della sicurezza di alcuni sistemi informatici ed è esclusivamente relativa al loro stato nel tempo considerato per i test. Qualora dunque venissero aggiornate le stesse applicazioni o sistemi nei mesi successivi, i Pen Test precedentemente eseguiti potrebbero non essere del tutto coerenti e consistenti con lo stato di sicurezza corrente.
Essi vengono tipicamente eseguiti in modo semi-manuale, al contrario dei Vulnerability Assessment che sono invece eseguiti in modo prevalentemente automatico, e si focalizzano principalmente sui punti deboli veri e propri, nonché più comuni e più pericolosi per il target considerato, seguendo alcuni standard internazionali quale OWASP. Nella pratica consiste dunque nella simulazione di un attacco reale, ma con regole di ingaggio precise e in ambiente controllato.
Alcuni dei vantaggi del Penetration Testing derivano dalla possibilità di verificare software o hardware ancora non rilasciato al pubblico, dall’accuratezza e qualità del Report di output ricevuto e infine dalle maggiori garanzie dal punto di vista legale, come NDA (Non Disclosure Agreement), che legano il tester con il cliente finale.
Al contrario, alcuni degli svantaggi di tale modalità potrebbero essere rappresentati dal costo elevato, nonché dai limiti temporali che riguardano sia il tempo limitato per effettuare i test che il fatto che essi non siano continuativi. Inoltre, al contrario di quanto vedremo in seguito relativamente ai Bug Bounty, gli asset vengono verificati solamente da parte di un numero di tester limitato e sono quindi particolarmente soggetti all’esperienza e capacità individuali del tester.
Che cosa è un Bug Bounty Program?
Innanzitutto, un Bug Bounty è una ricompensa offerta in cambio dell’individuazione di punti deboli all’interno di un insieme di asset concordato.
Un Bug Bounty Program utilizza quindi un modello che si basa sul ricompensare solo in cambio di risultati (cioè vulnerabilità segnalate), facendo leva sulla potenza del crowdsourcing, ovvero il numero molto maggiore di tester coinvolti rispetto ad un Pen Test.
Uno dei benefici principali di un Bug Bounty Program è quindi il fatto che il cliente paghi solo in cambio di risultati validi, al contrario dei Penetration Test nei quali invece viene retribuito innanzitutto il tempo e lo sforzo impiegato oltre, ovviamente, alle vulnerabilità riportate.
Un Bug Bounty Program può essere pubblico o privato, oppure solo su invito, dando alle aziende la possibilità di scegliere la quantità di tester, oppure le loro capacità, il tutto all’interno di un ambiente controllato.
Dal punto di vista del tester, egli viene ricompensato solo se individua una vulnerabilità valida e se è il primo ad averla riportata.
Un Bug Bounty Program rappresenta quindi una sorta di test di sicurezza continuo nel quale vengono, in un certo qual modo, preconcordate le ricompense a seconda della categoria alla quale appartiene la vulnerabilità eventualmente segnalata.
La differenza principale con il Penetration Testing è che i Bug Bounty Program offrono test continui di sicurezza ad un prezzo che la stessa azienda decide!
Esistono ovviamente anche degli svantaggi nei Bug Bounty Program.
Ad esempio, i tester potrebbero essere in grado di testare solamente le parti pubblicamente accessibili delle applicazioni web o interfacce disponibili.
Inoltre, nel caso dei Bug Bounty Program si rende spesso necessario un team interno all’azienda che sia in grado di gestire e rimediare in modo autonomo le vulnerabilità segnalate, le quali potrebbero essere in numero piuttosto elevato, duplicate e, a volte, non di qualità.
Infine, qualora l’azienda stabilisca ricompense basse, si potrebbe creare un meccanismo di falso senso di sicurezza dovuto al fatto che in realtà pochissimi tester si stanno dedicando a quel Programma, preferendone altri più remunerativi.
A titolo informativo, sia per le aziende che per i tester, le piattaforme principali che gestiscono Bug Bounty Program sono HackerOne (https://hackerone.com) e BugCrowd (https://www.bugcrowd.com).
Conclusioni
Sarebbe un errore credere che una modalità di verifica della sicurezza sia in assoluto da preferire rispetto ad un’altra.
Infatti, nessuna delle due garantisce in modo totale e sicuro di individuare tutte le security vulnerabilities presenti, per i motivi precedentemente elencati.
La realtà è che Penetration Test e Bug Bounty Program devono essere visti come strumenti complementari tramite i quali raggiungere la massima sicurezza possibile dei propri sistemi.
Ad esempio, prima che il proprio sito ufficiale o servizio venga pubblicato, oppure in caso di un aggiornamento importante, si consiglia di richiedere prima un Pen Test in modo che l’ambiente di test sia maggiormente controllato, nonché sia ristretto il numero di tester autorizzati ad effettuare le verifiche. In questo modo è possibile rimuovere le vulnerabilità principali e, tipicamente, più critiche.
Una volta che queste sono state fixate, potrebbe essere dunque consigliabile l’utilizzo di un Bug Bounty Program che, quindi, andrà a ricompensare solamente le vulnerabilità prima non individuate, per motivi di tempo o capacità del Penetration Tester, oppure a causa del cambiamento dello stato degli asset sui quali erano stati richiesti i test.