La necessità di dotarsi di misure di cybersecurity sempre più puntuali riguarda le aziende di tutte le dimensioni. La sicurezza digitale trova una base fondamentale nello sviluppo software sicuro, che protegga le informazioni strategiche per il business e i dati personali: ma come si arriva a sviluppare un software effettivamente sicuro?
Vediamo insieme quali sono le norme di riferimento, come vengono definite le misure di cybersecurity a partire dalle minacce e la metodologia che applichiamo nei nostri progetti di trasformazione digitale.
Cybersecurity e privacy: la normativa di riferimento
Con l’aumento degli attacchi cyber negli ultimi anni e lo sviluppo della criminalità informatica, in cui i casi di richiesta di riscatti si fanno sempre più frequenti, la cybersecurity sta diventando un tema sempre più urgente.
Un segnale importante è arrivato a giugno 2021 con l’istituzione dell’Agenzia per la Cybersicurezza Nazionale: la sicurezza cyber deve diventare una priorità per le aziende di tutte le dimensioni, a cominciare da quella dei software che utilizza.
Tra i diversi riferimenti disponibili in letteratura per costruire una metodologia per lo sviluppo di codice sicuro, troviamo:
- Requisiti del Regolamento n° 679/2016 in materia di protezione dei dati personali (nel seguito GDPR);
- Requisiti della norma ISO 27001 in materia di sicurezza delle informazioni;
- Requisiti dello standard OWASP (Open Web Application Security Project);
- Indicazioni contenute nel documento dell’Agenzia per l’Italia digitale “Linee guida per la modellazione delle minacce ed individuazione delle azioni di mitigazione conformi ai principi del secure/privacy by design”.
Il GDPR non formalizza precise specifiche per lo sviluppo di software conformi al Regolamento, ma pone come capisaldi i principi di protezione dei dati fin dalla progettazione (Privacy by Design) e di protezione per impostazione predefinita (Privacy by Default). In generale possiamo quindi ritenere che le applicazioni software che trattano dati personali debbano essere progettate sulla base di principi e indicazioni ispirati alle pubblicazioni in materia di privacy.
Leggi le nostre Linee Guida di Sviluppo Software Sicuro:
Definire la sicurezza di un software a partire dalle minacce
Durante le fasi di analisi della sicurezza applicativa di un’architettura di sistema (da definire o in fase di rivisitazione) è necessario mettere in atto pratiche di progettazione sicura attraverso l’individuazione di requisiti di sicurezza e contromisure, con un approccio di Defense in Depth dell’applicazione.
Esiste davvero un sistema informatico sicuro? In base a cosa arriviamo a definirlo tale?
Un software è da considerare “sicuro” in relazione a:
- Le minacce che sono identificate per le funzioni previste;
- Il livello di rischio calcolato per le singole minacce;
- Le misure di sicurezza poste in essere per mitigare i livelli di rischio associati alle minacce.
Il processo di individuazione e modellazione delle minacce relative alla sicurezza informatica viene definito Threat modeling ed è fondamentale sia come misura proattiva in fase di design e sviluppo, sia come misura reattiva nel deploy del software.
Gli approcci di Threat modeling che possono essere adottati sono diversi, focalizzandosi sugli asset da difendere, sugli attacker o su uno specifico software. Una delle metodologie più applicate è il modello STRIDE:
- Spoofing, attacco informatico che impiega in diversi modi la falsificazione d’identità;
- Tampering, ossia le azioni che modificano o manipolano senza autorizzazione i dati;
- Repudiation, la capacità di un utente di negare di aver eseguito una determinata azione;
- Information disclosure, nota anche come privacy breach o data leak;
- Denial of service, un attacco che tenta di impedire l’uso autorizzato di una risorsa;
- Elevation of privilege, ossia un attacco che trasforma un account utente limitato a un account con maggiori privilegi e accessi.
Il livello di rischio viene calcolato sulla base della composizione di Impatto e Probabilità. Questo modello può essere adottato per valutare le minacce all’interno dei progetti di trasformazione digitale: per esempio, nei nostri progetti seguiamo un approccio mutuato da OWASP per assegnare un valore (alto-medio-basso) alla probabilità che una minaccia venga sfruttata (exploited) e un valore (alto-medio-basso) al relativo impatto.
Consulta il nostro documento di Assessment per Sviluppo Software Sicuro:
Il metodo Intesys per lo sviluppo di un software sicuro
Per garantire la sicurezza delle informazioni e la protezione dei dati personali, abbiamo raccolto un vasto insieme di misure di sicurezza suddivise nelle sei categorie di minacce modellate da STRIDE, identificando a priori quelle proporzionate a un livello di rischio basso e quelle proporzionate ai livelli di rischio medio e alto.
Per ogni nuovo progetto software e per ogni major release di software esistenti, effettuiamo una accurata analisi dei rischi attraverso una precisa metodologia, che prevede:
- Identificazione delle minacce per la sicurezza che lo possono riguardare;
- Calcolo del livello di rischio per ogni minaccia;
- Identificazione e implementazione delle misure di sicurezza che mitigano i rischi calcolati.
Il nostro approccio e le linee guida che adottiamo per lo sviluppo di software sicuro sono strutturati in modo da tenere conto della compliance con il GDPR, sia a livello di sicurezza dei dati personali che dei diritti degli interessati, e includono anche un processo di Software Quality Assurance (SQA) con l’obiettivo di assicurare che il processo di sviluppo software sia monitorato e conforme con lo standard ISO 27001 e il GDPR.
Per testare automaticamente la qualità e il rispetto dei requisiti di sicurezza lungo tutto il processo di sviluppo, abbiamo standardizzato un sistema preciso e strutturato di software testing e di analisi del codice statico (ACS), affiancando alle scansioni effettuate in logica di continuous integration da ogni sviluppatore una scansione SonarQube per ogni merge in develop/master da una pull request.
La metodologia che abbiamo standardizzato, figlia della nostra “cultura” della sicurezza del software, consente di:
- Garantire la sicurezza del software partendo dalle minacce;
- Realizzare progetti ritagliati sulle esigenze puntuali del cliente;
- Garantire la sicurezza per i sempre più numerosi utilizzatori finali.
Identificare i requisiti di sicurezza prima dello sviluppo e della manutenzione di ogni sistema applicativo strategico è il fondamento per rispondere alle nuove esigenze di cybersecurity e alle garanzie richieste dal mercato.