Nell’era dell’informazione, la digitalizzazione dei processi operativi ha reso centrale l’importanza delle applicazioni software per lo svolgimento di qualunque attività lavorativa e professionale, dalla gestione della contabilità a quella di un magazzino, di un impianto di produzione o di un dispositivo medico.

Per questa ragione, la sicurezza applicativa dei software utilizzati in questi ambiti è diventata di primaria importanza per garantire la continuità operativa di qualunque tipo di organizzazione.

Le vulnerabilità software possono infatti esporre dati sensibili, ad esempio di clienti, fornitori o contratti, compromettere la privacy degli utenti o causare fermi operativi, anche in contesti molto delicati, come stabilimenti produttivi, portali e-commerce o, ancora peggio, ospedali o cliniche mediche.

Ed è proprio alla luce di queste ragioni che si deve leggere l’incessante aumento delle minacce che indirizzano i software applicativi, dovuto proprio alla loro sempre maggiore centralità all’interno delle organizzazioni.

Software e applicazioni sono diventati obiettivi molto attrattivi per la criminalità informatica perché sono strumenti ormai indispensabili per operare in qualsiasi ambito, pertanto, prendendone il controllo, può guadagnare una posizione di forza senza precedenti nei confronti dell’organizzazione vittima dell’attacco.

Per garantire la sicurezza dell’operatività e dei dati delle organizzazioni è quindi indispensabile indirizzare le vulnerabilità dei software applicativi che utilizzano. Questo compito spetta ovviamente ai produttori dei software stessi, quali ad esempio software house e service provider.

Nel contesto della sicurezza delle applicazioni ci si concentra spesso sugli ultimi anelli della catena, lavorando prevalentemente sull’interazione tra utente, eventualmente malevolo, e applicazione, senza dare la dovuta importanza al resto dello “stack applicativo”, ovvero l’insieme delle tecnologie che compongono la pila (stack) delle componenti che concorrono al corretto funzionamento dell’applicazione, dal livello più basso fino a quello più alto.

Lo stack applicativo può essere rappresentato come una serie strati che vanno dall’utente all’hardware, passando per l’applicazione, le librerie ed i servizi locali su cui si appoggia ed il sistema operativo, cui poi vanno aggiunte le componenti esterne utilizzate dall’applicazione, dalle librerie fino ai servizi di terze parti, come in questa immagine.

schema stack applicativo e servizi esterni - application security

Oltre ad indirizzare il più intuitivo ambito della sicurezza del codice sorgente, risulta quindi necessario dedicare attenzione a ciascuna delle altre componenti dello stack applicativo, incluse le componenti esterne, come framework, librerie e servizi di terze parti utilizzati dall’applicazione, e implementare misure che indirizzino efficacemente le minacce che le affliggono, per ottenere infine un adeguato livello di sicurezza generale dell’applicazione.

Per fare un esempio calzante, librerie e servizi esterni devono essere scelti secondo criteri non solo funzionali, ma anche legati alla sicurezza, ed essere quindi configurati ed utilizzati in modo sicuro. Ricadono in questo caso l’implementazione di configurazioni sicure “by default” per la sicurezza delle comunicazioni con i servizi esterni e le configurazioni di archiviazione, backup e capacità di ripristino di dati da parte di questi ultimi.

Ciò mette in luce un aspetto fondamentale della sicurezza informatica in generale: per risolvere le problematiche legate alle diverse componenti degli asset informatici coinvolti, la sicurezza informatica richiede una visione di processo, oltre che tecnica e puntuale, in quanto solo attraverso l’applicazione di misure organizzativo-procedurali si può garantire la sicurezza dello stack applicativo nel suo complesso.

Alcuni esempi di misure organizzativo-procedurali riguardano l’implementazione di processi e linee guida, come: 

  • linee guida per la selezione di componenti esterne;
  • linee guida per l’utilizzo di certificati di sicurezza, chiavi di cifratura, storage locali e remoti, etc;
  • processi per la gestione degli aggiornamenti del software e delle componenti esterne;
  • linee guida per l’hardening dei sistemi e della rete, sia interni, sia perimetrali e la gestione delle configurazioni di sicurezza dei servizi interni ed esposti;
  • linee guida per l’implementazione di bilanciatori e dispositivi di sicurezza come Firewall, Web Application Firewall (WAF), Intrusion Detection e Prevention Systems (IDS/IPS) ed altri.

 

Per ottenere i risultati desiderati in questi e numerosi altri ambiti, la sicurezza applicativa deve necessariamente coinvolgere tutti gli attori facenti parte della catena di sviluppo del software, quali analisti, sviluppatori e beta tester, che devono conoscere l’importanza di una corretta organizzazione di processi come la progettazione, la scrittura del codice e dei controlli di sicurezza da implementare nelle fasi di test, revisione, rilascio e gestione del servizio.

Più in generale, il coinvolgimento del team deve portare alla consapevolezza dell’importanza e delle modalità per progettare ed implementare le componenti che fanno evolvere un tradizionale Ciclo di Sviluppo del Software (Software Development Life Cycle o SDLC) verso un Ciclo di Sviluppo Sicuro del Software (o Secure-SDLC o S-SDLC).

In questo primo articolo abbiamo proposto una visione introduttiva delle criticità da considerare nell’ambito della sicurezza delle applicazioni e della necessità di applicare una visione d’insieme, di prodotto e di processo per realizzare e rilasciare software con adeguati livelli di sicurezza.

Nei prossimi articoli, ci occuperemo, invece, dei principali temi di application security.

Descriveremo le componenti tecniche ed organizzative necessarie per evolvere verso un Ciclo di Sviluppo Sicuro del Software, integrando la sicurezza dalle prime fasi di progettazione fino all’automazione di controlli di sicurezza in fase operativa di rilascio in produzione, anche tramite processi di Continuous Integration e Continuous Delivery (CI/CD).

Tratteremo inoltre come possono essere implementati ed in che misura sono efficaci altri meccanismi di protezione come WAF ed IDS/IPS.

Continua a seguirci, anche sui nostri profili social, per non perdere i prossimi articoli di approfondimento.

Se stai cercando un partner strategico per implementare un percorso di Application Security, i nostri esperti sono a tua disposizione per affiancarti e guidarti passo passo.