Segui su:
Programmazione Web Italia

La Security by Design - scopri quali sono i 10 paradigmi della Sicurezza Web

La Security by Design - scopri quali sono i 10 paradigmi della Sicurezza Web

Come e perchè integrare i principali paradigmi di sicurezza nell'implementazione del nostro sistema software fin dalle primissime fasi di progettazione. Che cosa significa il concetto di "Security by Design" e quali sono i vantaggi che offre?

Il concetto di Security by Design

La Security by Design è un approccio fondamentale nello sviluppo software che mira ad integrare l'implementazione della sicurezza fin dalle prime fasi del ciclo di vita del software. In un tale approccio, gli strumenti e le tecniche di sicurezza fanno parte integrante dello sviluppo e non sono una sua appendice da integrare una volta che il lavoro di sviluppo principale è concluso. Il costo derivante dalla applicazione di questi principi è affrontato fin dalle prime fasi di sviluppo diventando un investimento piuttosto che un debito tecnico da affrontare in un momento successivo.

I principali pilasti su cui si basa la Cybersecurity sono raccolti sotto l'acronimo CIA (Confidentiality, Integrity, Availability) e sono definiti nel modo seguente.

  • Confidenzialità - garantisce la protezione delle informazioni da accessi non autorizzati facendo in modo che solo le persone autorizzate possano visualizzare o accedere ai dati sensibili.
  • Integrità - si concentra sulla protezione dei dati da modifiche non autorizzate, garantendo che le informazioni rimangano accurate e integre nel corso del tempo.
  • Disponibilità - si concentra sulla garanzia che i sistemi, le applicazioni e i dati siano accessibili agli utenti autorizzati quando ne hanno bisogno.

I 10 principi della Security by Design

I seguenti sono 10 paradigmi essenziali per la progettazione di applicazioni Web sicure "by Design".

1. Minimo privilegio

Il principio del minimo privilegio

Il principio del minimo privilegio mira a limitare l'accesso delle risorse agli utenti, processi e applicazioni. Gli utenti, i processi e le applicazioni ricevono i privilegi minimi necessari per svolgere le loro funzioni e solo ciò che è strettamente necessario viene autorizzato.

Un esempio riguarda la gestione degli accessi utente: un dipendente di un reparto finanziario dovrebbe avere accesso solo ai dati e ai sistemi necessari per le sue funzioni specifiche, senza accesso alle informazioni del reparto IT o HR.

2. Evitare la Security by Obscurity

Evitare la Security by Obscurity

Si riferisce alla pratica di proteggere un sistema informatico nascondendo i dettagli del suo funzionamento, confidando che, tenendo segrete alcune informazioni e le debolezze intrinseche, si possa migliorare la sicurezza complessiva del sistema. Questo principio va evitato in quanto si tratta di un anti-pattern perchè intrinsecamente debole e strutturalmente insufficiente.

Per esempio, l'accesso ad un pannello di controllo potrebbe essere possibile attraverso l'accesso ad una url non protetta del tipo "www.miosito.com/control-panel". Il fatto che questa url sia conosciuta solo dalle persone autorizzate ad accedervi non costituisce affatto una sicurezza.

3. Adottare gli Standard di Settore

Adottare gli Standard di Settore

il principio del "Do not invent Security" consiste nell'evitare la creazione di soluzioni di sicurezza proprie, a meno che non sia strettamente necessario. Questo principio incoraggia l'uso di soluzioni di sicurezza consolidate, ben testate e ampiamente accettate, sviluppate e mantenute da esperti nel campo. Questo approccio riduce il rischio di vulnerabilità, risparmia risorse e garantisce conformità alle normative di sicurezza.

4. Gestire gli errori in modo sicuro

Gestire gli errori in modo sicuro

Garantire che in caso di errori o eccezioni del codice il sistema non sia compromesso e non renda accessibili informazioni private. Questo principio contribuisce significativamente a limitare i danni in situazioni impreviste e a mantenere l'integrità e la sicurezza complessiva del sistema.

Per esempio, in caso di guasto nei meccanismi di controllo degli accessi, il sistema dovrebbe impostare le risorse come non accessibili piuttosto che come accessibili a tutti.

5. La Sicurezza come default

La Sicurezza come default

Il "Secure Defaults" (impostazioni predefinite sicure) è il principio che aiuta a garantire che i sistemi siano configurati inizialmente con impostazioni che offrono il massimo livello di sicurezza possibile senza necessità di modifiche aggiuntive.

Un semplice esempio di applicazione di questo principio è quello di implementare come default l'uso di password complesse e l'obbligo di cambiarle periodicamente.

6. Separazione delle responsabilità

Separazione delle responsabilità

Questo principio implica la divisione delle responsabilità tra più individui o gruppi, in modo che nessuna persona possa avere il controllo completo su una serie di operazioni critiche.

Per esempio, l'implementazione della regola secondo la quale due persone diverse debbano approvare un'azione particolarmente critica.

7. Ridurre la "Superficie di attacco"

Ridurre la "Superficie di attacco"

Con superficie di attacco si intende l'insieme delle risorse hardware e software esposte a possibili atacchi malevoli. Questo principio si concentra sulla minimizzazione delle opportunità che gli attaccanti hanno di penetrare nei sistemi e sfruttare le loro vulnerabilità.

Per esempio, disabilitare o rimuovere servizi e porte di rete non utilizzati significa ridurre ridurre le possibilità di un attacco mirato a specifiche vulnerabilità.

8. Difesa in profondità (o a strati)

Difesa in profondità (o a strati)

Questo principio offre una strategia multilivello per proteggere i sistemi da una vasta gamma di minacce e attacchi informatici. Prevede l'implementazione di multiple misure di sicurezza che si sovrappongono e si integrano tra loro, creando una rete di difese che aumenta la resistenza complessiva del sistema e riduce le possibilità di successo degli attacchi.

Ad esempio, installare un certificato HTTPS non è sufficiente a considerare sicuro il canale di comunicazione, è necessario implementare politiche e strategie multistrato per ridurre la vulnerabilità complessiva del sistemi in ogni suo livello.

9. Ridurre la complessità

Ridurre la complessità

Ridurre la complessità significa semplificare l'architettura, i processi e le operazioni IT, eliminando o minimizzando componenti, procedure o configurazioni complesse che possono aumentare il rischio di errori, vulnerabilità e difficoltà di gestione.

Per esempio, utilizzare un numero limitato di piattaforme software o hardware standard per ridurre la complessità delle integrazioni e delle operazioni.

Ridurre la complessità non solo protegge i dati e i sistemi critici, ma contribuisce anche a migliorare la resilienza aziendale e a supportare una crescita sostenibile nel lungo termine.

10. Tenere traccia di eventi critici

Tenere traccia di eventi critici

E' fondamentale nella sicurezza informatica tenere traccia delle attività effettuate perché fornisce una traccia dettagliata degli accessi sensibili all'interno di un sistema o di un'organizzazione. Questo principio consente di monitorare e registrare gli eventi che potrebbero indicare comportamenti anomali, accessi non autorizzati o altre attività sospette che potrebbero mettere a rischio la sicurezza dei dati e delle risorse.