Vulnerabilità di sicurezza nel codice
Il software del sistema operativo, il software applicativo o il firmware di un sistema embedded sono componenti elementari di qualsiasi infrastruttura digitale. Tuttavia, la crescente accelerazione e la pressione delle scadenze nei progetti di digitalizzazione spesso portano a trascurare gli aspetti imperativi della sicurezza delle informazioni. I requisiti di sviluppo per il software sono solitamente incentrati sulle funzioni ed enfatizzano gli aspetti costruttivi, cosicché la visione distruttiva delle potenziali vulnerabilità di sicurezza è per lo più diametralmente opposta agli effettivi obiettivi di sviluppo: a molti programmatori manca semplicemente anche una visione strutturata e acuta della cybersecurity.
In queste condizioni, i team di sviluppo hanno difficoltà a rivedere continuamente e a mettere in sicurezza la codifica del loro software, come dimostrano le numerose vulnerabilità che l'organizzazione no-profit MITRE Corporation pubblica ogni anno nel suo elenco CVE (Common Vulnerabilities and Exposures). Le regolari patch di sicurezza di produttori di software anche molto noti sono un indicatore del compito di Sisifo di chiudere i bug rilevanti per la sicurezza, per non parlare dell'identificazione di tali bug prima ancora del lancio sul mercato.
Codice open source: un caso speciale
Durante la codifica di un software sviluppato in proprio, i programmatori amano ricorrere a librerie e moduli open source. I vantaggi pratici sono evidenti: se non si deve reinventare la ruota più e più volte, si beneficia di una spinta tecnologica, di uno sviluppo più rapido, di costi di sviluppo inferiori, di una maggiore trasparenza grazie al codice open source e di una maggiore interoperabilità grazie a standard e interfacce aperti.
Spesso si dice anche che il codice open source offre un alto grado di sicurezza, perché il codice è stato convalidato da molti utenti e l'intelligenza di sciame della comunità open source consente una rapida ed efficiente correzione dei bug.
In pratica, questa fiducia deve essere valutata in modo differenziato e critico. L'esempio più grave è la vulnerabilità di sicurezza zero-day Log4Shell nella libreria di logging Log4J, ampiamente utilizzata per le applicazioni Java, scoperta nel novembre 2021. Forse avrete sentito parlare del livello di allarme rosso emesso dall'Ufficio federale tedesco per la sicurezza informatica (BSI) per Log4Shell. La libreria Log4J, distribuita come quasi-standard dal funzionamento affidabile tramite la Apache Foundation, si è affermata in molti sistemi dal 2013, compresi noti servizi web come Amazon AWS.
La complessità di queste librerie, ben sviluppate e anche mantenute, fornisce implicitamente potenti funzionalità di cui uno sviluppatore importatore spesso non è consapevole nel suo nuovo sviluppo combinato, ma che possono essere sfruttate dagli aggressori.
Un altro fattore di insicurezza dei componenti open source è rappresentato dai cosiddetti attacchi di filiera, ossia le vulnerabilità incorporate da parte di soggetti malintenzionati che si fingono parte della comunità open source e contribuiscono allo sviluppo del codice. Una vulnerabilità di questo tipo è un modo estremamente efficace per gli hacker di attaccare un gran numero di organizzazioni di utenti a valle. Non stupisce quindi che questo vettore di attacco sia in rapida crescita: uno studio di Sonatype ha diagnosticato un aumento del 650% nel confronto tra il 2020 e il 2021.