Owasp Capitolo 8: le violazioni di integrità dei nostri dati e del nostro software
All’ottava posizione troviamo un’altra new entry per questa edizione 2021. Questa nuova categoria di vulnerabilità riguarda l’incapacità del software di proteggere sé stesso dalle violazioni di integrità.
Un esempio pratico è dato da un applicativo che fa uso di plugin aggiuntivi, librerie o moduli provenienti da fonti inaffidabili o non verificate, repositories insicure, e content delivery networks (CDN). Una pipeline di Continuous Integration / Continuous Delivery (CI/CD), non sicura introduce una potenziale minaccia di accesso non autorizzato, codice malevolo o compromissione di sistema. Da questo deriva un’intera categoria di attacchi detti di Supply Chain, ovvero dove il threat actor non va a colpire direttamente il bersaglio, ma lo fa in maniera indiretta, prendendo di mira appunto la catena di approvvigionamento (che sia a livello hardware o software).
Come difendersi?
L’ambito di tale vulnerabilità è molto ampio, e generalizzare sarebbe sbagliato e rischioso (nel darci sicurezze che non abbiamo). Possiamo però sicuramente andare a consigliare alcune best practices come baseline da cui partire per la nostra strategia di difesa:
- Usare le firme digitali o meccanismi simili per verificare che il software o i dati siano provenienti dalla sorgente corretta e non siano stati alterati
- Assicurarsi che le librerie e le dipendenze del software, facciano uso di repositories affidabili e verificate. In casi particolari è consigliabile crearsi delle proprie repository interne adeguatamente configurate e messe in sicurezza
- Verificare tramite software di verifica della supply chain, come ad esempio OWASP Dependency Check o OWASP CycloneDX, che i vari componenti non contengano vulnerabilità note
- Stabilire dei processi di code review per il codice e di monitoraggio dei cambiamenti (changelog) per minimizzare la possibilità che configurazioni o codice malevolo possano essere iniettati nella propria pipeline
- Segregare, configurare e stabilire controllo degli accessi sulla propria pipeline CI/CD per garantire l’integrità del codice in fase di build e deploy
- Non inviare dati, non criptati e senza firma digitale a client non affidabili, senza dei controlli di integrità, per identificare tempestivamente eventuali manomissioni o il riutilizzo dei dati serializzati