Pressoché ogni applicazione moderna integra componenti software open source che potrebbero includere vulnerabilità troppo spesso sottovalutate. Un valido aiuto agli sviluppatori viene da strumenti di Software Composition Analysis come CyberRes Debricked
La necessità di rispondere rapidamente a esigenze di business in costante evoluzione, di ottimizzare i flussi di lavoro e di ampliare il livello di integrazione ha portato le aziende a distaccarsi dalle applicazioni monolitiche per indirizzarsi verso nuovi modelli di sviluppo. Ciò che viene chiesto alle applicazioni moderne è, soprattutto, di rispondere a caratteristiche di flessibilità, scalabilità, integrazione e sicurezza.
Questi requisiti sono particolarmente evidenti nel caso delle applicazioni “cloud native” che devono operare in ambienti ibridi dove è essenziale la flessibilità di deployment, la capacità di adattarsi a stack software eterogeni e di adattarsi alle esigenze della rete in termini di scalabilità e prestazioni.
Questa evoluzione è legata a doppio filo (favorisce e nel contempo se ne avvantaggia) con l’affermazione di DevOps, una metodologia di sviluppo del software pensata per rispondere all’interdipendenza tra sviluppo software e IT operations e abilitare processi di sviluppo più rapidi ed efficienti, nonché della sua evoluzione DevSecOps. Quest’ultima aggiunge al processo l’ulteriore tassello della sicurezza integrata all’interno delle applicazioni a partire dall’avvio del loro ciclo di sviluppo.
L’indagine A SANS Survey – Rethinking the Sec in DevSecOps (disponibile QUI)mette bene in evidenza come i professionisti della sicurezza delle 281 aziende consultate a livello globale concordino sul fatto che il futuro della sicurezza sia rappresentato dal Security as a code ovvero la pratica di integrare la sicurezza negli strumenti e nei flussi di lavoro DevOps, mappando il modo in cui viene modificato il codice e aggiungendo controlli e test di sicurezza.
I rischi dell’open source nella catena di sviluppo del software
Un’applicazione è il risultato finale di un’intera catena di sviluppo che prevede componenti, librerie, tool e processi utilizzati per sviluppare, assemblare e rilasciare un software.
Tutti i modelli di sviluppo delle applicazioni moderne condividono l’approccio verso la modularità e l’integrazione di componenti software “pacchettizzati” e sono poche le applicazioni che non incorporino al loro interno un “pezzo” di codice open source. Secondo il CyberRes 2022 AppSec Trend Report (disponibile QUI), che analizza i trend evolutivi nel settore della sicurezza, ben il 98% di tutte le basi di codice si basa su componenti open source.
Molte della analisi di sicurezza dello sviluppo applicativo tendono, tuttavia, a trascurare i componenti open source considerandoli affidabili a priori. Ogni componente open source inserito all’interno di un’applicazione, in realtà, andrebbe pensato come un software autonomo e trattato come tale in relazione alle vulnerabilità, poiché la sua integrazione all’interno di un processo di sviluppo espone a queste vulnerabilità l’applicazione finale che ne è l’obiettivo.
I casi reali non mancano. Ricordiamo, per esempio, Log4Shell, una vulnerabilità critica individuata in Apache Log4j di tipo RCE (Remote Code Execution) che consente di eseguire da remoto codice Java arbitrario e, potenzialmente, di prendendo il controllo di un server.
Una soluzione per utilizzare in sicurezza componenti open source
Alla sicurezza delle applicazioni CyberRes, la business unit di Micro Focus dedicata alle soluzioni software per la resilienza informatica, dedica la famiglia di soluzioni Fortify. Il più recente tassello introdotto nella famiglia Fortify è Debricked, risultato di una recente acquisizione della società omonima pensato per consentire agli sviluppatori di utilizzare i componenti open source in modo sicuro.
Debricked permette di effettuare una selezione motivata dei componenti open source sicuri, riducendo drasticamente i rischi a essi associati. Mette, infatti, a disposizione, uno strumento di Software Composition Analysis (SCA) che utilizza tecniche di intelligenza artificiale e machine learning per assistere gli sviluppatori nell’individuare e correggere le vulnerabilità del codice aperto utilizzato nelle applicazioni. Fornisce, inoltre, un framework che semplifica il processo di gestione, strutturato in tre aree distinte: conoscere le vulnerabilità, correggerle o rimuoverle e prevenire l’aggiunta di nuove vulnerabilità.
L’uso di uno strumento di questo tipo consente agli sviluppatori di integrare in modo sicuro i componenti open source all’interno dei loro progetti, favorendo la rapidità di sviluppo e rispondendo ai requisiti della metodologia DevSecOps.