Le migliori pratiche per la sicurezza delle applicazioni Web per le PMI 2022

Pubblicato: 2022-04-23

Quando si tratta di sicurezza dello stack aziendale, le applicazioni software sono l'anello più debole. In The State of Application Security, 2020 , Forrester afferma che la maggior parte degli attacchi esterni avviene sfruttando una vulnerabilità del software (42%) o tramite un'applicazione Web (35%).

The State Of Application Security

Gli sviluppatori sono sotto pressione per rilasciare le funzionalità il prima possibile poiché le applicazioni diventano più complesse e le tempistiche di sviluppo si riducono. Per ottenere funzionalità applicative differenziate e accattivanti, gli sviluppatori si affidano sempre più a librerie di terze parti.

Questo passaggio a componenti open source rende le pratiche di sicurezza più complesse per le aziende. Nuovi framework come container e API complicano ulteriormente la sicurezza delle applicazioni.

Con gli sviluppatori costretti a rilasciare costantemente nuove funzionalità, le organizzazioni affrontano un rischio molto reale che la sicurezza non riesca a tenere il passo. La sicurezza può essere raggiunta incorporando le migliori pratiche di sicurezza delle applicazioni nel ciclo di vita dello sviluppo del software e implementandole.

Sommario

Perché i test di sicurezza Web sono importanti?

Testare le applicazioni Web e le relative configurazioni per le vulnerabilità di sicurezza è l'obiettivo dei test di sicurezza Web. Gli attacchi a livello di applicazione (ad esempio, che prendono di mira le applicazioni basate su HTTP) sono gli obiettivi primari.

È comune inviare diversi tipi di input a un'applicazione Web per provocare errori e comportarsi in modo imprevisto. In questi cosiddetti “test negativi”, il sistema viene ispezionato per rilevare comportamenti non previsti.

È anche importante notare che il test della sicurezza Web non riguarda semplicemente il test delle funzionalità di sicurezza implementate nell'applicazione (ad es. autenticazione e autorizzazione).

È inoltre necessario verificare che altre funzionalità (ad es. logica di business e convalida di input e output) siano implementate in modo sicuro. L'obiettivo è l'accesso sicuro alle funzioni dell'applicazione Web.

Quali sono i diversi tipi di test di sicurezza?

  • Test dinamico di sicurezza delle applicazioni (DAST) . Per la conformità alle valutazioni della sicurezza normativa, questo test di sicurezza delle applicazioni automatizzato è l'ideale per applicazioni interne a basso rischio. Una combinazione di test di sicurezza Web manuali e DAST è l'approccio migliore per le applicazioni a rischio medio e le applicazioni critiche che stanno subendo modifiche minori.
  • Test di sicurezza delle applicazioni statiche (SAST) . Questo approccio alla sicurezza delle applicazioni verifica sia manualmente che automaticamente. Un'applicazione può essere testata in questo modo senza doverla eseguire in un ambiente di produzione. Inoltre, consente agli sviluppatori di rilevare ed eliminare sistematicamente le vulnerabilità della sicurezza del software scansionando il codice sorgente.
  • Prova di penetrazione . Soprattutto per le applicazioni soggette a modifiche sostanziali, questo test di sicurezza delle applicazioni manuale è l'ideale. Le valutazioni includono la logica aziendale e test basati sull'avversario per identificare scenari di attacco avanzati.
  • Autoprotezione dell'applicazione runtime (RASP) . In questo approccio in evoluzione alla sicurezza delle applicazioni vengono utilizzate numerose tecniche tecnologiche per strumentare un'applicazione in modo tale che gli attacchi possano essere monitorati durante l'esecuzione e, idealmente, bloccati in tempo reale.

In che modo i test di sicurezza delle applicazioni riducono i rischi della tua organizzazione?

application security

Maggior parte degli attacchi alle applicazioni Web

  • La tecnica dell'iniezione SQL
  • Script tra siti (XSS)
  • Esecuzione di comandi da remoto
  • Attraversamento del sentiero

Risultati dell'attacco

  • Contenuti soggetti a restrizioni
  • Account che sono stati compromessi
  • Installazione di software dannoso
  • Entrate perse
  • I clienti perdono fiducia
  • Danno reputazionale
  • Così come molto altro

L'ambiente Web odierno è soggetto a un'ampia gamma di problemi. Oltre a sapere come sfruttare un'applicazione, conoscere i potenziali risultati dell'attacco aiuterà la tua azienda ad affrontare preventivamente le vulnerabilità e a testarle accuratamente.

I controlli di attenuazione possono essere applicati durante le prime fasi dell'SDLC dopo aver identificato la causa principale delle vulnerabilità. Inoltre, un test di sicurezza delle applicazioni Web può sfruttare la conoscenza di come funzionano questi attacchi per prendere di mira punti di interesse noti.

Per gestire il rischio della tua azienda, devi comprendere l'impatto di un attacco, poiché può essere utilizzato per misurare la gravità totale della vulnerabilità.

Come risultato di un test di sicurezza, determinare la gravità dei problemi rilevati può aiutarti a stabilire la priorità degli sforzi di riparazione in modo efficiente ed efficace. Riduci al minimo il rischio della tua azienda iniziando con problemi di gravità critica e passando a problemi di minore impatto.

Una potenziale valutazione dell'impatto di ciascuna applicazione nella libreria delle applicazioni dell'azienda prima di identificare un problema può aiutare a stabilire la priorità dei test di sicurezza delle applicazioni.

Quando i test di sicurezza web hanno un elenco stabilito di applicazioni di alto profilo, possiamo programmare i test per indirizzare prima le applicazioni critiche della tua azienda in modo da ridurre il rischio per la tua azienda.

Quali funzionalità dovrebbero essere riviste durante un test di sicurezza delle applicazioni Web?

Web applications

Diverse funzionalità dovrebbero essere esaminate durante i test di sicurezza delle applicazioni Web, ma l'elenco non è esaustivo. La tua organizzazione potrebbe essere esposta a seri rischi da un'implementazione inappropriata di ciascuno di essi.

  • Configurazione dell'applicazione e del server : i difetti possono essere correlati alla configurazione della crittografia, alle configurazioni del server Web, ecc.
  • Convalida dell'input e gestione degli errori : le vulnerabilità di injection più comuni, tra cui SQL injection e cross-site scripting (XSS), sono il risultato di una scarsa gestione di input e output.
  • Autenticazione e gestione delle sessioni : le vulnerabilità potrebbero portare alla rappresentazione degli utenti. È inoltre essenziale una forte politica delle credenziali.
  • Autorizzazione : verifica della capacità dell'applicazione di impedire l'escalation dei privilegi verticale e orizzontale.
  • Logica aziendale : questo tipo di logica è essenziale per la maggior parte delle applicazioni aziendali.
  • Logica lato client: questo tipo di funzionalità sta diventando sempre più comune nei siti Web moderni, ricchi di JavaScript, nonché nei siti Web che utilizzano altre tecnologie lato client (ad es. Silverlight, Flash, applet Java).

Le 10 migliori pratiche per la sicurezza delle applicazioni Web

Di seguito sono elencate le prime dieci best practice per la sicurezza delle applicazioni che la tua organizzazione dovrebbe già implementare.

# 1 Tieni traccia delle tue risorse

Se non sai cosa hai, non puoi proteggerlo.

Per quali funzioni o app utilizzi server specifici? In quali app Web utilizzi componenti open source?

Track Your Assets

Pensi che non sia importante monitorare le tue risorse? È molto importante ricordare quale software è in esecuzione all'interno di ciascuna applicazione: basta chiedere a Equifax, che è stata multata di 700 milioni di dollari per non aver protetto i dati di oltre 145 milioni di clienti.

Uno dei portali web dei clienti dell'agenzia di rating del credito è stato compromesso dopo che un componente open source, Apache Struts, non è stato corretto. La società afferma di non essere a conoscenza del fatto che il portale clienti utilizzasse il componente open source vulnerabile.

Prima inizi a monitorare le tue risorse, meno mal di testa e disastri avrai in seguito. Man mano che le organizzazioni ridimensionano il loro sviluppo, questo processo può sembrare un compito di Sisifo.

Dovresti anche classificare le tue risorse, annotando quelle che sono fondamentali per le funzioni della tua azienda e quelle che sono di minore importanza. Quindi, puoi valutare le minacce e risolverle in un secondo momento.

# 2 Esegui una valutazione della minaccia

Se fai un elenco di ciò che devi proteggere, puoi identificare le minacce che devi affrontare e come possono essere mitigate.

In che modo gli hacker potrebbero entrare nella tua applicazione? Quali misure di sicurezza esistenti avete in atto? Quali strumenti aggiuntivi sono necessari?

È necessario rispondere a queste e ad altre domande nell'ambito della valutazione delle minacce.

Tuttavia, devi anche essere realistico sul livello di sicurezza di cui puoi goderti. Non importa quanto sicuro rendi il tuo sistema, puoi comunque hackerarlo. Inoltre, devi essere onesto sulle misure che il tuo team può mantenere nel tempo.

Puoi rischiare che i tuoi standard e le tue pratiche di sicurezza vengano ignorati spingendo troppo. Prendi sul serio la sicurezza e non avere fretta.

Usa la seguente formula per valutare il tuo rischio:

Rischio = Probabilità di Attacco x Impatto di Attacco.

Il rischio può anche essere considerato come la probabilità che qualcosa accada rispetto alla gravità delle conseguenze.

Anche se sarebbe catastrofico se una balena cadesse dal cielo e ti schiacciasse, è improbabile che accada.

Una puntura di zanzara durante un'escursione, d'altra parte, è abbastanza probabile, ma non è probabile che causi danni significativi al di là di alcuni urti pruriginosi.

# 3 Rimani aggiornato sulle tue patch

Installare le ultime patch sui tuoi sistemi operativi? Utilizzi software di terze parti? È probabile che tu sia in ritardo, il che significa che sei esposto.

Patching

Uno dei passaggi più importanti che dovresti intraprendere per garantire la sicurezza del tuo software è aggiornare il software, da un fornitore commerciale o da una comunità open source.

Quando una vulnerabilità viene rilevata e segnalata in modo responsabile ai proprietari del prodotto o del progetto, viene pubblicata su siti di consulenza sulla sicurezza e database come il WhiteSource Vulnerability Database.

Se possibile, è necessario creare e rilasciare una correzione prima della pubblicazione, offrendo agli utenti l'opportunità di proteggere il proprio software.

Se, tuttavia, non applichi una patch quando una diventa disponibile, non beneficerai di una maggiore sicurezza.

Se sei preoccupato che l'aggiornamento all'ultima versione possa danneggiare il tuo prodotto, gli strumenti automatizzati possono aiutare molto. In qualsiasi giorno della settimana, dovresti dare la priorità all'aggiornamento e all'applicazione di patch come parte delle best practice per la sicurezza delle tue applicazioni.

# 4 Gestisci i tuoi contenitori

Negli ultimi anni, i container sono diventati sempre più popolari man mano che più organizzazioni adottano la tecnologia grazie alla sua flessibilità, che semplifica il processo di sviluppo, test e distribuzione di componenti in vari ambienti durante il ciclo di vita dello sviluppo del software (SDLC).

È generalmente accettato che i container offrano vantaggi di sicurezza che danno loro un vantaggio. Inoltre, a causa del loro ambiente operativo autonomo, sono segmentati in base alla progettazione, riducendo così il livello di rischio.

Tuttavia, i container continuano a essere vulnerabili a exploit come un breakout attack, in cui l'isolamento è stato rotto. I contenitori possono anche contenere una vulnerabilità nel codice archiviato al loro interno.

Per la sicurezza della pipeline CI/CD, è necessario eseguire la scansione delle vulnerabilità dall'inizio alla fine, inclusi i registri.

Oltre a queste scansioni, le best practice per la sicurezza delle applicazioni nell'utilizzo dei container includono anche attività importanti come la firma delle proprie immagini con strumenti come Docker Content Trust se si utilizza Docker Hub o Shared Access Signature se il team utilizza Microsoft Azure .

# 5 Dai la priorità alle tue operazioni di riparazione

C'è stato un numero crescente di vulnerabilità negli ultimi anni e questa tendenza non mostra segni di rallentamento in tempi brevi.

Di conseguenza, gli sviluppatori sono impegnati con la riparazione. Per i team che sperano di mantenere le proprie applicazioni sicure pur rimanendo sane, la definizione delle priorità è essenziale.

Le valutazioni delle minacce vengono eseguite in base alla gravità di una vulnerabilità (valutazione CVSS), alla criticità dell'applicazione interessata e a una serie di altri fattori.

È necessario sapere se la vulnerabilità open source influisce effettivamente sul codice proprietario quando si tratta di vulnerabilità open source.

Inefficace e non ad alto rischio anche se la valutazione CVSS del componente vulnerabile è fondamentale se non riceve chiamate dal tuo prodotto.

Le strategie intelligenti sono quelle che danno la priorità alle minacce più urgenti per prime, in base ai fattori presenti, e lasciano quelle a basso rischio per dopo.

#6 Crittografa, crittografa, crittografa

La Top 10 di OWASP include da anni la crittografia dei dati inattivi e in transito, rendendola un requisito per qualsiasi elenco di best practice per la sicurezza delle applicazioni.

Gli attacchi man-in-the-middle e altre forme di intrusione possono esporre dati sensibili quando non si riesce a bloccare correttamente il traffico.

Quando archivi password e ID utente in testo normale, ad esempio, metti a rischio i tuoi clienti.

Assicurati di utilizzare SSL con un certificato aggiornato come parte della tua lista di controllo di base per la crittografia. Non lasciarti indietro ora che HTTPS è lo standard. Si consiglia anche l'hashing.

Inoltre, non dovresti mai "rotolare le tue criptovalute" come si suol dire. Prendi in considerazione i prodotti per la sicurezza supportati da un team dedicato con l'esperienza necessaria per svolgere correttamente il lavoro.

# 7 Gestisci i privilegi

Non è necessario consentire l'accesso a tutto a tutti nella tua organizzazione. Le applicazioni e i dati sono accessibili solo a coloro che ne hanno bisogno seguendo le best practice per la sicurezza della rete e le best practice per la sicurezza delle applicazioni.

Manage Privileges

Ci sono due ragioni per questo. La prima cosa che devi fare è impedire a un hacker di utilizzare le credenziali di marketing per accedere a un sistema che contiene altri dati più sensibili, come finanziari o legali.

Anche le minacce interne sono un problema, non intenzionale, come la perdita di un laptop o l'invio dell'allegato sbagliato a un'e-mail, o dannose.

Il principio del privilegio minimo di fornire ai dipendenti solo i dati di cui hanno bisogno quando si tratta di accedere ai dati potrebbe ridurre la tua esposizione rispetto all'assenza di controlli in atto.

# 8 Abbraccia l'automazione per la tua gestione delle vulnerabilità

La sicurezza delle loro applicazioni è diventata sempre più importante per gli sviluppatori negli ultimi anni, soprattutto quando si tratta di attività come la gestione delle vulnerabilità.

Per affrontare lo spostamento verso sinistra della sicurezza, i team di sviluppatori stanno testando presto e spesso, spingendo il maggior numero di controlli di sicurezza all'inizio del processo di sviluppo, quando è più facile ed economico correggere le vulnerabilità.

Per gestire l'ingombrante processo di test dovuto all'enorme quantità di vulnerabilità, gli sviluppatori richiedono strumenti automatizzati.

Per individuare potenziali vulnerabilità di sicurezza nel codice proprietario, durante lo sviluppo è possibile utilizzare test di sicurezza delle applicazioni statiche (SAST) e test di sicurezza delle applicazioni dinamici (DAST).

Le falle di sicurezza vengono chiuse con SAST e DAST, tuttavia il codice proprietario costituisce una parte relativamente piccola del codice complessivo.

In oltre il 92% di tutte le applicazioni moderne, i componenti open source costituiscono il 60-80% della base di codice. L'elenco di controllo per la sicurezza dell'applicazione dovrebbe dare la priorità alla protezione dei componenti open source.

Utilizzando gli strumenti di analisi della composizione del software, i team possono eseguire controlli e report di sicurezza automatizzati in tutto l'SDLC, identificando ogni componente open source nel proprio ambiente e indicando quale di essi presenta una vulnerabilità nota che rappresenta un rischio per la sicurezza delle applicazioni.

Puoi gestire meglio le tue vulnerabilità spostando a sinistra i test automatici per i problemi di sicurezza open source.

# 9 Test di penetrazione

Un elenco delle migliori pratiche per la sicurezza delle applicazioni sarebbe incompleto senza menzionare il test della penna, anche se gli strumenti automatizzati aiutano a rilevare la stragrande maggioranza dei problemi di sicurezza.

Il test con carta e penna ti consente di colpire e spingere la tua app per trovare punti deboli. Se un hacker determinato tenta di entrare nella tua applicazione, i bravi pen tester sanno esattamente quali passi devono intraprendere.

Le aziende di hacking possono essere assunte o i liberi professionisti possono partecipare a programmi di ricompense di bug come BugCrowd e HackerOne. La tua azienda dovrebbe sponsorizzare una taglia di bug se non lo fai già.

Se assumi pen tester, è molto meglio pagarli che affrontare le conseguenze di una vera violazione.

# 10 Fai attenzione con i token

Nonostante sia facile da proteggere, molti sviluppatori non proteggono adeguatamente i loro token per terze parti.

Tokens

Cercando nei siti Web degli sviluppatori popolari, puoi trovare facilmente token non protetti online. Invece di archiviare i dettagli dei token altrove, gli sviluppatori li includono semplicemente nei loro repository open source.

Una procedura consigliata per la sicurezza delle applicazioni di base consiste nel proteggere adeguatamente i token di terze parti. Non dovresti lasciare i token che hai acquistato in giro nel tuo codice affinché chiunque possa prenderli.

Le migliori pratiche per la sicurezza delle applicazioni come pratiche di base

Ciascuna delle migliori pratiche qui descritte dovrebbe essere integrata nel processo di sviluppo continuo della tua organizzazione. Le applicazioni ei dati della tua azienda sono a rischio se non riduci al minimo il rischio. Segui questi passaggi per ridurre al minimo il rischio.

Evitare gli errori che è probabile che altri commettano è un modo per stare al passo con gli hacker, quindi è più difficile mirare agli attacchi. Non ci sarà mai un perimetro o una misura di sicurezza dell'applicazione completamente a prova di hacker.

Tuttavia, seguire queste best practice di base può fare molto per evitare che la tua applicazione valga la pena per gli hacker.