banner
Centro notizie
Consegna immediata

Think Tank sulla sicurezza: per proteggere il codice in modo efficace, verificalo in ogni passaggio

Jun 23, 2023

Maksim Kabakou - Il meglio di Maksim Kabakou

È passato un bel po' di tempo dall'ultima volta che ho aggiunto una codifica effettiva e mentre eseguivo la codifica a livello macchina inizialmente mi hanno insegnato Algol e Fortran, entrambi linguaggi di alto livello.

Nei miei oltre 20 anni di esperienza nel campo della sicurezza e della garanzia delle informazioni, la questione della codifica sicura ha acquisito maggiore importanza. È a causa di procedure di codifica e di gestione inadeguate che si sono verificate molte violazioni della sicurezza, ma il ruolo dell’ambiente operativo e di qualsiasi funzione di gestione in background non dovrebbe essere trascurato perché possono, anzi, essere fondamentali.

Gran parte della codifica sicura consiste nel garantire che qualsiasi input in una porzione di codice possa provenire solo da una fonte nota (verificata) e che l'input sia soggetto a un rigoroso controllo dei confini e del contenuto e, qualora l'input non sia conforme, allora quei dati vengono completamente distrutti.

Allo stesso modo, l’output di un pezzo di codice dovrebbe provenire solo dall’interno del codice stesso e inviato a destinazioni note – verificate – e non è consentito utilizzare la memoria al di fuori di quella allocata. Il codice stesso dovrebbe accedere e utilizzare solo le posizioni di memoria allocate e l'I/O del sistema, le funzioni di pulizia dovrebbero anche ripulire eventuali posizioni di memoria temporanee dopo l'uso.

Il sistema operativo su cui viene eseguito qualsiasi codice dovrebbe allocare, monitorare e controllare l'utilizzo della memoria per impedire a un pezzo di codice di violare la memoria allocata ad altri pezzi di codice.

Il sistema operativo dovrebbe consentire l'esecuzione solo di codice verificato (certificato o contrassegnato), il codice non verificato dovrebbe essere isolato, impedita l'esecuzione e un output di errore.

Va notato che questa potrebbe essere un'operazione a più livelli in cui, ad esempio, si dispone di un sistema host e di un sistema operativo che esegue un numero di host virtuali o supporta un numero di contenitori, senza dimenticare che anche un host virtuale potrebbe essere in esecuzione una serie di contenitori che creano un ambiente molto complesso.

Sul mercato sono disponibili numerosi strumenti di test di software, contenitori e sistemi operativi, ma a meno che la tua organizzazione non disponga di un proprio reparto IT che sviluppa, mantiene e distribuisce il codice, probabilmente cercherai di esternalizzare qualsiasi lavoro di test e revisione necessario a un'agenzia competente.