Curriculum
Questa sezione è dedicata all’introduzione dell’importanza dei concetti di base e dei principi dello sviluppo sicuro del software. In questo modulo verranno spiegati i concetti di sicurezza del software e verranno sottolineate le fasi fondamentali del processo di sviluppo sicuro del software. Inoltre, concentrandosi sulle conoscenze e le competenze necessarie per una pratica di sviluppo sicuro del software, i discenti saranno incoraggiati a ridurre le vulnerabilità della sicurezza e a creare software più resistenti alle minacce informatiche.
Lo sviluppo in sicurezza del software è un approccio alla creazione di software che sottolinea l’importanza di considerare la sicurezza in ogni fase del processo di sviluppo. Si tratta di una strategia proattiva per evitare che vulnerabilità del codice e le minacce alla sicurezza possano corrompere le applicazioni software. Ecco un approfondimento dell’ approccio:

Figura-1
(Source: https://integrio.net/blog/improving-software-security)
La sicurezza nel ciclo di vita dello sviluppo del software (SDLC – Software Development Life Cycle) è un aspetto critico che richiede attenzione in ogni fase dello sviluppo. L’integrazione della sicurezza nel SDLC assicura che il software sia progettato per resistere alle minacce informatiche, che sono sempre più sofisticate e in continua evoluzione. Dando priorità alla sicurezza fin dall’inizio, gli sviluppatori possono identificare e mitigare le vulnerabilità in anticipo, il che è molto più conveniente che affrontare questi problemi dopo che il software sia stato distribuito. Il rilevamento precoce non solo fa risparmiare denaro, ma riduce anche la complessità delle correzioni e il rischio di introdurre nuovi problemi con il conseguente aggiornamento..

Figura 2
(Source: https://softprodigy.com/secure-software-development-life-cycle-navigate-your-way-to-security/)
Lo sviluppo sicuro è un aspetto critico della moderna ingegneria del software che si concentra sull’integrazione dei principi di sicurezza in ogni fase del ciclo di vita dello sviluppo del software (SDLC). Aderendo ai principi dello sviluppo sicuro, si possono produrre software resilienti alle minacce informatiche, in grado di proteggere i dati degli utenti e di mantenere la funzionalità anche in caso di attacco.
Ecco alcuni dei principi fondamentali dello sviluppo sicuro:
Integrazione proattiva della sicurezza: si tratta di considerare le implicazioni per la sicurezza durante la fase di progettazione, di scegliere framework e librerie sicuri e di garantire che i requisiti di sicurezza siano definiti insieme ai requisiti funzinali.
Privilegi minimi: il software deve funzionare con il livello minimo di privilegi necessario per svolgere i suoi compiti. Questo principio limita il danno potenziale che può verificarsi se il software viene compromesso. Si applica non solo al software stesso, ma anche agli utenti e ai sistemi che interagiscono con esso.
Difesa in profondità: nessuna singola misura di sicurezza è infallibile, quindi l’impiego di più livelli di controlli di sicurezza (fisici, tecnici, amministrativi) può fornire ridondanza e mitigare il rischio di un singolo punto di fallimento.
Gestione sicura di errori ed eccezioni: in caso di errore, il software deve arrestarsi in modo sicuro per prevenire vulnerabilità.
Sicurezza nella progettazione: la sicurezza deve essere parte integrante della progettazione del software.
Test di sicurezza periodici: test di sicurezza devono essere un processo continuo, non un evento unico prima della distribuzione.
Principio della minima conoscenza (POLK – Principle of Limited Knowledge): conosciuto anche come principio di minima divulgazione, questo principio afferma che un sistema non deve esporre più informazioni o funzionalità di quanto sia necessario per il suo scopo.
Impostazioni predefinite sicure: le impostazioni di configurazione predefinite del software dovrebbero essere sicure fin dall’inizio, richiedendo agli utenti di optare per configurazioni meno sicure, se lo desiderano.
Progettazione aperta: la progettazione del software dovrebbe essere aperta alla revisione da parte di esperti, poiché la trasparenza può portare a soluzioni di sicurezza più solide.
Convalida e sanificazione degli input: la convalida e la sanificazione degli input possono prevenire attacchi comuni come SQL injection, cross-site scripting (XSS) e altri.
Gestione delle patch: mantenere il software aggiornato è fondamentale per la sicurezza. È necessario predisporre un processo per applicare rapidamente le patch e gli aggiornamenti quando vengono scoperte delle vulnerabilità.
Risposta agli incidenti e recupero: si devono disporre di piani per rispondere agli incidenti di sicurezza.
Formazione sensibilizzazione: tutte le parti interessate, compresi gli sviluppatori, i tester e gli utenti finali, devono essere formate all’importanza della sicurezza.

Figura-3
(Source: https://www.semanticscholar.org/paper/SECURE-SOFTWARE-DEVELOPMENT-FRAMEWORK-%3A-PRINCIPLES)
Not a member yet? Register now
Are you a member? Login now