I bug sono l’ossessione degli sviluppatori di software. Quando si parla di bug, in italiano si usano come sinonimi i termini “vulnerabilità” o “buco” o “anomalia”, si fa riferimento a un errore di funzionamento di un programma. Un programma contenente un gran numero di bachi che interferiscono con la sua funzionalità è detto in gergo buggato (buggy), mentre l’atto di correzione dagli errori è detto bugfixing. Un bug è generalmente un errore logico che può provocare il crash di un programma e in certi casi può essere sfruttato da cybercriminali che portano avanti attacchi informatici.
Il primo “Bug” della storia
In inglese la parola bug indica un piccolo insetto. La correlazione tra buco informatico e insetto risale al 1947 quando, all’università di Harvard, la tenente Crace Hopper (che ebbe un ruolo primario nella progettazione del linguaggio COBOL) ed il suo gruppo erano alla ricerca della causa di un malfunzionamento nel computer Mark II. Il problema era dovuto a una falena che si era incastrata fra i relè del calcolatore, impedendone il corretto funzionamento. Dopo aver rimosso la falena e ripristinato il corretto funzionamento della macchina nel registro del computer venne aggiunta l’annotazione “First actual case of bug being found”. Probabilmente non si immaginavano di essere stati i precursori di un concetto che oggi viene usato quotidianamente nell’IT.
I bachi oggi
La crescita del mondo IT è stata impetuosa negli ultimi trent’anni. Il software è ormai ovunque: PC, TV, Smartphone, Automobili, etc. Ci sono una miriade di linguaggi, framework, metodologie di sviluppo e tutte le aziende vogliono informatizzarsi, anche quelle che con il mondo dell’informatica c’entrano poco o nulla. Di conseguenza è cresciuto il parco software da manutenere. Più software significa anche più bug: spesso il codice è talmente complesso, e i possibili scenari di utilizzo sono talmente numerosi che a volta è impossibile (anche per questioni di tempo, risorse a disposizione e costi di sviluppo) testare ogni situazione che si può potenzialmente verificare. Basti pensare al mondo dei videogiochi, uno dei più colpiti dai bug, in cui il giocatore può muoversi liberamente, compiendo un numero potenzialmente infinito di azioni in ordine casuale.
Rincorrere i bug e sistemarli ha un costo e richiede tempo. Il tempo necessario per chiudere un bug dipende da svariati fattori: dalla complessità del software e dal numero di sviluppatori che sono dedicati alla risoluzione. Il costo è relativamente basso se il bug viene scovato nelle prime fasi di sviluppo mentre cresce esponenzialmente se il software è in fase di progettazione o addirittura in produzione. Un esempio molto recente è quello di Log4shell e Log4j che è stato definito il “bug dell’anno” nel 2021. A questo proposito mi sembra calzante la frase di David Parnas, creatore del concetto di information hiding:
Un pessimo programmatore può creare due posti di lavoro all’anno.
Bounty Program
Per innalzare la qualità del proprio software e quindi soddisfare gli elevati standard di privacy e sicurezza che gli utenti si aspettano generalmente le aziende seguono diverse strade. Innanzitutto si cerca di eseguire suite di test puntuali e rigorosi in modo da effettuare una prima scrematura. In seguito si può optare per un audit. Un audit informatico è una revisione condotta da esperti esterni all’azienda che può riguardare le reti informatiche di una società, la tecnologia, il software, nonché le procedure in atto in relazione all’uso delle risorse IT.
Negli ultimi anni si sta facendo strada con forza una terza via: il bug bounty program. Un bug bounty program è un accordo, solitamente proposto da grosse aziende (Google, Microsoft, Apple, etc) dell’IT, grazie al quale un individuo può ricevere riconoscimenti e ricompense in denaro per la segnalazione di bug, exploit o vulnerabilità. Un bug bounty può essere visto come una specie di sfida: chi vi si cimenta può ricevere riconoscimenti e ricompense in denaro per la segnalazione exploit e vulnerabilità. I premi variano da azienda ad azienda e dalla gravità della vulnerabilità scoperta, ma in linea di massima si passa da poche centinaia di dollari a decine di migliaia. Facebook, ad esempio, ha pagato circa 5 milioni di dollari da quando ha avviato il suo programma di ricompense nel 2011. Anche l’Unione Europea ha recentemente deciso di offrire importanti ricompense per chi volesse cimentarsi nel lavoro di bug-hunting sul parco software open source.
BugHunting
Con la nascita del concetto di Bug Bounty sono nate diverse piattaforme che fungono da aggregatori. Tra i portali più famosi e utilizzati abbiamo Bugcrowd e HackerOne ai quali si appoggiano numerose aziende, sia di piccole che grandi dimensioni. Questi portali, attraverso le aziende che vi partecipano, erogano diversi milioni di euro di ricompense ogni anno. Ad ogni tipologia di bug è attribuita una priorità e al crescere della priorità cresce la ricompensa: qui trovate un elenco delle ricompense più importanti. Ad esempio, il programma bug-bounty di ExpressVPN, una delle aziende leader del settore, offre 100.000 dollari alla prima persona che riuscirà a scovare un bug sulla tecnologia server VPN, TrustedServer. La presenza di un’azienda su piattaforme come BugCrowd è un forte segnale di impegno e serietà: dimostra la volontà di voler migliorare il proprio prodotto. Inoltre, questi programmi fanno risparmiare denaro. Una violazione dei dati può portare a danni per svariati milioni di dollari, per non parlare del danno reputazionale.
Piattaforme come BugCrowd hanno dato vita anche a una nuova professione che chiunque sia appassionato a queste tematiche può intraprendere: il bug hunter. Il lavoro del bug hunter è letteralmente andare “alla caccia di bug” all’interno di siti, domini, applicazioni (web e mobile), programmi appartenenti ad aziende, compagnie e istituzioni.
E voi? Siete pronti a cacciare gli insetti?
Seguiteci sul nostro canale Telegram, sulla nostra pagina Facebook e su Google News. Nel campo qui sotto è possibile commentare e creare spunti di discussione inerenti le tematiche trattate sul blog.