Sicurezza

10 tipi di vulnerabilità della sicurezza

10 tipi di vulnerabilità della sicurezza
Un difetto non intenzionale o accidentale nel codice del software o in qualsiasi sistema che lo renda potenzialmente sfruttabile in termini di accesso a utenti illegittimi, comportamenti dannosi come virus, trojan, worm o qualsiasi altro malware è chiamato vulnerabilità di sicurezza. L'utilizzo di software già sfruttato o l'utilizzo di password deboli e di default risulta anche nel rendere il sistema vulnerabile al mondo esterno. Questi tipi di vulnerabilità di sicurezza richiedono l'applicazione di patch per impedire agli hacker di utilizzare nuovamente gli exploit utilizzati in precedenza per ottenere l'accesso non autorizzato al sistema. Una vulnerabilità di sicurezza chiamata anche falla o debolezza di sicurezza è un difetto, un bug o un errore nell'implementazione del codice, del design e dell'architettura di un'applicazione Web e dei server, che se non affrontato può compromettere il sistema e rendere il tutta la rete vulnerabile all'attacco. Le persone che verranno infettate includono il proprietario dell'applicazione, gli utenti dell'applicazione e qualsiasi altra persona che fa affidamento su tale applicazione. Diamo un'occhiata ai rischi per la sicurezza più pericolosi e comuni per le applicazioni web.

Sommario

  1. Iniezione nel database
  2. Autenticazione interrotta
  3. Esposizione dati sensibili
  4. Entità esterne XML (XEE)
  5. Controllo degli accessi rotto
  6. Configurazione errata della sicurezza
  7. Scripting tra siti (XSS)
  8. Deserializzazione non sicura
  9. Utilizzo di componenti con vulnerabilità note
  10. Registrazione e monitoraggio insufficienti

Inserimento nel database:

In caso di invio di dati non attendibili all'interprete come parte del comando attraverso qualsiasi area che richiede l'input dell'utente i.e l'input del modulo o qualsiasi altra area di invio dei dati, si verificano errori di iniezione. Le query dannose dell'attaccante possono indurre l'interprete a eseguire comandi che possono mostrare dati riservati a cui l'utente non ha l'autorizzazione per dare un'occhiata. Ad esempio, in un attacco SQL injection, quando l'input del modulo non è adeguatamente disinfettato, l'attaccante può entrare nel database SQL e accedere al suo contenuto senza autorizzazione, semplicemente inserendo codice del database SQL dannoso in un modulo che prevede un testo. Qualsiasi tipo di campo che accetta l'input dell'utente è iniettabile i.e parametri, variabili d'ambiente, tutti i servizi web, ecc.

L'applicazione è vulnerabile all'attacco di iniezione quando i dati forniti dall'utente non vengono disinfettati e convalidati, mediante l'uso di query dinamiche senza fuga sensibile al contesto e l'uso diretto di dati ostili. I difetti di iniezione possono essere facilmente scoperti attraverso l'esame del codice e mediante l'uso di strumenti automatizzati come scanner e fuzzer. Per prevenire attacchi di iniezione, è possibile adottare alcune misure come separare i dati da comandi e query, utilizzare un'API sicura che fornisce un'interfaccia parametrizzata, utilizzare la convalida dell'input lato server "white-list" tramite strumenti come Snort, escape di caratteri speciali utilizzando una sintassi di escape specifica, ecc.

Un attacco di iniezione può portare a una massiccia perdita di dati, divulgazione di informazioni riservate, negazione dell'accesso e può persino portare a una completa acquisizione dell'applicazione. Alcuni controlli SQL come LIMIT possono essere utilizzati per controllare enormi quantità di perdita di dati in caso di attacco. Alcuni tipi di attacchi di iniezione sono SQL, OS, NoSQL, attacchi di iniezione LDAP.

Autenticazione non funzionante:

Gli aggressori possono accedere agli account utente e possono persino compromettere l'intero sistema host tramite account amministratore, sfruttando le vulnerabilità nei sistemi di autenticazione authentication. I difetti di autenticazione consentono all'attaccante di compromettere password, token di sessione, chiavi di autenticazione e possono essere concatenati con altri attacchi che possono portare all'accesso non autorizzato a qualsiasi altro account utente o sessione temporaneamente e in alcuni casi, in modo permanente. Supponiamo che un utente abbia un elenco di parole o un dizionario di milioni di nomi utente e password validi ottenuti durante una violazione. Può usarli uno per uno in un tempo estremamente ridotto utilizzando strumenti e script automatizzati sul sistema di accesso per vedere se qualcuno funziona. Una cattiva implementazione della gestione delle identità e dei controlli di accesso porta a vulnerabilità come l'autenticazione non corretta.

L'applicazione è vulnerabile agli attacchi di autenticazione quando consente di provare diversi nomi utente e password, consente attacchi con dizionario o attacchi di forza bruta senza alcuna strategia di difesa, utilizza password semplici e predefinite o password trapelate in qualsiasi violazione, espone ID di sessione nell'URL, utilizza schema di recupero password scadente, utilizza uno schema di cookie. L'autenticazione non funzionante può essere sfruttata facilmente utilizzando semplici strumenti per la forzatura bruta e attacchi con dizionario con un buon dizionario. Questi tipi di attacchi possono essere prevenuti utilizzando sistemi di autenticazione a più fattori, implementando controlli di password deboli eseguendo una password attraverso un database di password errate, non utilizzando credenziali predefinite, allineando la politica di complessità delle password, utilizzando buone gestore di sessione che genera un nuovo ID di sessione casuale dopo il login, ecc.

La vulnerabilità di autenticazione interrotta può compromettere alcuni account utente e un account amministratore, ovvero tutto ciò di cui ha bisogno un utente malintenzionato per compromettere un sistema. Questi tipi di attacchi portano a furto di identità, frode previdenziale, riciclaggio di denaro e divulgazione di informazioni altamente classificate. Gli attacchi includono attacchi del dizionario, forzatura bruta, dirottamento di sessione e attacchi di gestione della sessione.

Esposizione dati sensibili:

A volte le applicazioni web non proteggono dati e informazioni sensibili come password, credenziali del database, ecc. Un utente malintenzionato può facilmente rubare o modificare queste credenziali debolmente protette e utilizzarle per scopi illegittimi. I dati sensibili dovrebbero essere crittografati mentre sono a riposo o in transito e avere un ulteriore livello di sicurezza, altrimenti gli aggressori possono rubarli. Gli aggressori possono mettere le mani su dati sensibili esposti e rubare utenti con hash o testo in chiaro e credenziali del database dal server o da un browser web. Ad esempio, se un database di password utilizza hash non salati o semplici per archiviare le password, un difetto di caricamento del file può consentire a un utente malintenzionato di recuperare il database delle password che porterà all'esposizione di tutte le password con una tabella arcobaleno di hash precalcolati.

Il difetto principale non è solo che i dati non sono crittografati, anche se sono crittografati, ma anche la generazione di chiavi deboli, gli algoritmi di hashing deboli, l'utilizzo di crittografia debole possono anche portare a questi tipi di uno degli attacchi più comuni. Per prevenire questi tipi di attacchi, in primo luogo, classificare quale tipo di dati può essere considerato sensibile ai sensi della normativa sulla privacy e applicare i controlli come da classificazione. Cerca di non memorizzare dati classificati di cui non hai bisogno, lavalo non appena lo usi. Per i dati in transito, crittografarli con protocolli sicuri i.e TLS con cifrari PFS, ecc.

Questi tipi di vulnerabilità possono comportare l'esposizione di informazioni altamente sensibili come credenziali di carte di credito, cartelle cliniche, password e qualsiasi altro dato personale che può portare a furto di identità e frode bancaria, ecc.

Entità esterne XML (XEE):

Processori XML mal configurati elaborano riferimenti a entità esterne all'interno di documenti XML. Queste entità esterne possono essere utilizzate per recuperare i dati dei file interni come /etc/passwd file o per eseguire altre attività dannose.  I processori XML vulnerabili possono essere facilmente sfruttati se un utente malintenzionato può caricare un documento XML o includere XML, ecc. Queste entità XML vulnerabili possono essere scoperte utilizzando gli strumenti SAST e DAST o manualmente ispezionando le dipendenze e le configurazioni.

Un'applicazione Web è vulnerabile all'attacco XEE per molte ragioni, ad esempio se l'applicazione accetta input XML diretto da fonti non attendibili, le definizioni dei tipi di documento (DTD) sull'applicazione sono abilitate, l'applicazione utilizza SAML per l'elaborazione dell'identità poiché SAML utilizza XML per l'identità inserimenti, ecc. Gli attacchi XEE possono essere mitigati evitando la serializzazione di dati sensibili, utilizzando formati di dati meno complicati i.e JSON, patch per i processori XML che l'applicazione sta attualmente utilizzando e persino le librerie, disabilitando i DTD in tutti i parser XML, convalida della funzionalità di caricamento del file XML utilizzando la verifica XSD, ecc.

L'applicazione vulnerabile a questi tipi di attacchi può portare all'attacco DOS, all'attacco di Billion Laughs, alla scansione dei sistemi interni, alla scansione delle porte interne, l'esecuzione di un comando remoto che influisce su tutti i dati dell'applicazione.

Controllo di accesso interrotto:

Il controllo degli accessi offre agli utenti i privilegi per svolgere compiti specifici. La vulnerabilità del controllo degli accessi non funzionante si verifica quando gli utenti non sono adeguatamente limitati sulle attività che possono eseguire. Gli aggressori possono sfruttare questa vulnerabilità che può finire per accedere a funzionalità o informazioni non autorizzate. Supponiamo che un'applicazione web consenta all'utente di cambiare l'account da cui ha effettuato l'accesso semplicemente cambiando l'URL con l'account di un altro utente senza ulteriori verifiche.  Sfruttare la vulnerabilità del controllo degli accessi è un attacco ideale di qualsiasi utente malintenzionato, questa vulnerabilità può essere trovata manualmente e utilizzando gli strumenti SAFT e DAFT. Queste vulnerabilità esistono a causa della mancanza di test e rilevamento automatico delle applicazioni Web, sebbene il modo migliore per trovarle sia farlo manualmente.

Le vulnerabilità contengono l'escalation dei privilegi i.e agendo come un utente che non sei o agendo come amministratore mentre sei un utente, ignorando i controlli di controllo degli accessi semplicemente modificando l'URL o cambiando lo stato dell'applicazione, manipolazione dei metadati, consentendo la modifica della chiave primaria come chiave primaria di un altro utente, eccetera. Per prevenire questo tipo di attacchi, i meccanismi di controllo degli accessi devono essere implementati nel codice lato server in cui gli aggressori non possono modificare i controlli degli accessi. Per mitigare questo tipo di attacchi, è necessario garantire l'applicazione di limiti aziendali univoci per le applicazioni da parte dei modelli di dominio, la disattivazione dell'elenco delle directory del server, l'avviso dell'amministratore in caso di ripetuti tentativi di accesso non riusciti, l'invalidazione dei token JWT dopo il logout.

Gli aggressori possono agire come un altro utente o amministratore utilizzando questa vulnerabilità per eseguire attività dannose come creare, eliminare e modificare record, ecc. Può verificarsi una massiccia perdita di dati se i dati non sono protetti anche dopo una violazione.

Configurazione errata della sicurezza:

La vulnerabilità più comune è l'errata configurazione della sicurezza. Il motivo principale della vulnerabilità è l'uso della configurazione predefinita, della configurazione incompleta, delle configurazioni Adhoc, delle intestazioni HTTP mal configurate e dei messaggi di errore dettagliati contenenti più informazioni di quelle che l'utente avrebbe dovuto effettivamente conoscere. A qualsiasi livello di un'applicazione Web, possono verificarsi errori di configurazione della sicurezza se.e database, server web, server applicazioni, servizi di rete, ecc. Gli aggressori possono sfruttare i sistemi privi di patch o accedere a file e directory non protetti per avere un blocco non autorizzato sul sistema. Ad esempio, un'applicazione messaggi di errore eccessivamente dettagliati che aiutano l'attaccante a conoscere le vulnerabilità nel sistema dell'applicazione e il modo in cui funziona. Strumenti e scanner automatizzati possono essere utilizzati per rilevare questi tipi di falle di sicurezza.

Un'applicazione Web contiene questo tipo di vulnerabilità se mancano le misure di rafforzamento della sicurezza in qualsiasi parte dell'applicazione, sono aperte porte non necessarie o abilita funzionalità non necessarie, vengono utilizzate password predefinite, la gestione degli errori rivela errori informativi all'attaccante, sta utilizzando software di sicurezza non aggiornato o non aggiornato, ecc. Può essere prevenuto rimuovendo le funzioni non necessarie del codice, i.una piattaforma minima senza funzionalità, documentazione, ecc. non necessarie, che consente a un'attività di aggiornare e correggere le falle di sicurezza come parte dei processi di gestione delle patch, l'uso di un processo per verificare l'efficacia delle misure di sicurezza adottate, l'uso di un processo di rafforzamento ripetibile per rendere è facile distribuire un altro ambiente adeguatamente bloccato.

Questi tipi di vulnerabilità o difetti consentono all'attaccante di ottenere l'accesso non autorizzato ai dati di sistema che porta alla completa compromissione del sistema.

Script tra siti (XSS):

Le vulnerabilità XSS si verificano nel momento in cui un'applicazione Web incorpora dati non attendibili in una nuova pagina del sito Web senza l'approvazione legittima o l'escape, o aggiorna una pagina del sito corrente con i dati forniti dal client, utilizzando un'API del browser che può rendere HTML o JavaScript.  I difetti XSS si verificano nel caso in cui il sito Web consenta a un utente di aggiungere codice personalizzato in un percorso URL che può essere visto da altri utenti. Questi difetti vengono utilizzati per eseguire codice JavaScript dannoso sul browser del bersaglio. Diciamo che un utente malintenzionato può inviare un collegamento alla vittima contenente un collegamento al sito Web di qualsiasi azienda. Questa connessione potrebbe contenere del codice JavaScript dannoso incorporato. Nel caso in cui la pagina Web della banca non sia adeguatamente protetta dagli attacchi XSS, facendo clic sul collegamento il codice dannoso verrà eseguito sul browser della vittima.

Cross-Site Scripting è una vulnerabilità di sicurezza presente in quasi ⅔ delle applicazioni web web. Un'applicazione è vulnerabile a XSS se l'applicazione memorizza un input utente non sterilizzato che può essere visto da un altro utente, mediante l'uso di strutture JavaScript, applicazioni a pagina singola e API che incorporano in modo potente informazioni controllabili da un aggressore in una pagina sono impotenti contro DOM XSS. Gli attacchi XSS possono essere mitigati dall'uso di framework che sfuggono e disinfettano l'input XSS per natura come React JS ecc., apprendendo i limiti dei framework e coprendoli usando i propri casi, fuggendo dati HTML non necessari e non attendibili ovunque i.e negli attributi HTML, URI, Javascript, ecc., utilizzo della codifica sensibile al contesto in caso di modifica del documento lato client, ecc.

Gli attacchi basati su XSS sono di tre tipi i.e XSS riflesso, XSS DOM e XSS memorizzato. Tutti i tipi di questi attacchi hanno un impatto significativo, ma nel caso di Stored XSS, l'impatto è ancora maggiore se.e furto di credenziali, invio di malware alla vittima, ecc.

Deserializzazione non sicura:

La serializzazione dei dati significa prendere oggetti e convertirli in qualsiasi formato in modo che questi dati possano essere utilizzati per altri scopi in seguito, mentre la deserializzazione dei dati significa l'opposto di quello. La deserializzazione sta decomprimendo questi dati serializzati per l'uso delle applicazioni. Deserializzazione non sicura significa temperare i dati che sono stati serializzati appena prima che stiano per essere scompattati o deserializzati.  La deserializzazione non sicura porta all'esecuzione di codice remoto e viene utilizzata per eseguire altre attività per scopi dannosi come escalation dei privilegi, attacchi di iniezione, attacchi di riproduzione, ecc. Ci sono alcuni strumenti disponibili per scoprire questo tipo di difetti, ma l'assistenza umana è necessaria frequentemente per convalidare il problema. Sfruttare la deserializzazione è un po' difficile in quanto gli exploit non funzioneranno senza alcune modifiche manuali.

Quando l'applicazione deserializza gli oggetti dannosi forniti dall'entità attaccante. Questo può portare a due tipi di attacchi i.e attacchi relativi alla struttura dei dati e agli oggetti in cui l'attaccante modifica la logica dell'applicazione o esegue codice remoto e tipici attacchi di manomissione dei dati in cui vengono utilizzate strutture di dati esistenti con contenuti modificati ad esempio attacchi relativi al controllo degli accessi.  La serializzazione può essere utilizzata nella comunicazione di processo remoto (RPC) o in una comunicazione tra processi (IPC), memorizzazione nella cache di dati, servizi Web, server cache di database, file system, token di autenticazione API, cookie HTML, parametri del modulo HTML, ecc. Gli attacchi di deserializzazione possono essere mitigati non utilizzando oggetti serializzati da fonti non attendibili, implementando controlli di integrità, isolando il codice in esecuzione in un ambiente con privilegi limitati, monitorando le connessioni di rete in entrata e in uscita dai server che deserializzano frequentemente.

Utilizzo di componenti con vulnerabilità note:

Diversi componenti come librerie, framework e moduli software sono utilizzati dalla maggior parte degli sviluppatori nell'applicazione web. Queste librerie aiutano lo sviluppatore ad evitare il lavoro non necessario e forniscono le funzionalità necessarie. Gli aggressori cercano difetti e vulnerabilità in questi componenti per coordinare un attacco. In caso di individuazione di una falla di sicurezza in un componente, è possibile rendere vulnerabili tutti i siti che utilizzano lo stesso componente. Gli exploit di queste vulnerabilità sono già disponibili mentre scrivere un exploit personalizzato da zero richiede un grande sforzo. Questo è un problema molto comune e diffuso, l'uso di grandi quantità di componenti nello sviluppo di un'applicazione web può portare a non conoscere e comprendere nemmeno tutti i componenti utilizzati, patchare e aggiornare tutti i componenti è un lungo andare.

Un'applicazione è vulnerabile se lo sviluppatore non conosce la versione di un componente utilizzato, il software è obsoleto se.e il sistema operativo, il DBMS, il software in esecuzione, gli ambienti di runtime e le librerie, la scansione delle vulnerabilità non viene eseguita regolarmente, la compatibilità del software con patch non viene testata dagli sviluppatori. Può essere prevenuto rimuovendo dipendenze, file, documentazione e librerie inutilizzati, controllando regolarmente la versione dei componenti client e lato server, ottenendo componenti e librerie da fonti sicure ufficiali e attendibili, monitorando librerie e componenti privi di patch, garantendo un piano per aggiornare e correggere regolarmente i componenti vulnerabili.

Queste vulnerabilità portano a impatti minori ma possono anche portare alla compromissione del server e del sistema. Molte grandi violazioni si basavano su vulnerabilità note dei componenti. L'uso di componenti vulnerabili indebolisce le difese dell'applicazione e può essere un punto di partenza per un grande attacco.

Registrazione e monitoraggio insufficienti:

La maggior parte dei sistemi non adotta misure e passaggi sufficienti per rilevare le violazioni dei dati. Il tempo medio di risposta di un incidente è di 200 giorni dopo che è successo, questo è un sacco di tempo per fare tutte le cose brutte per un'entità attaccante. La registrazione e il monitoraggio insufficienti consentono all'attaccante di attaccare ulteriormente il sistema, mantenere la sua presa sul sistema, manomettere, trattenere ed estrarre i dati secondo la necessità. Gli aggressori usano la mancanza di monitoraggio e risposta a loro favore per attaccare l'applicazione web.
La registrazione e il monitoraggio insufficienti si verificano in qualsiasi momento i.I log delle applicazioni che non vengono monitorati per attività insolite, eventi verificabili come tentativi di accesso non riusciti e valori di transazione elevati non vengono registrati correttamente, avvisi ed errori generano messaggi di errore poco chiari, nessun avviso di attivazione in caso di pentest utilizzando strumenti DAST automatizzati, impossibilità di rilevare o avvisare rapidamente gli attacchi attivi, ecc. Questi possono essere mitigati garantendo che tutti gli accessi, gli errori di controllo degli accessi e la convalida dell'input lato server possano essere registrati per identificare l'account utente dannoso e conservati per un periodo di tempo sufficiente per un'indagine forense ritardata, assicurando che i log generati siano in un formato compatibile con soluzioni di gestione centralizzata dei log, garantendo controlli di integrità su transazioni di alto valore, stabilendo un sistema per segnalazioni tempestive di attività sospette, ecc.

La maggior parte degli attacchi di successo iniziano con il controllo e il rilevamento delle vulnerabilità in un sistema, consentendo a tali indagini di vulnerabilità di compromettere l'intero sistema.

Conclusione:

Le vulnerabilità di sicurezza in un'applicazione web interessano tutte le entità relative a quell'applicazione. Queste vulnerabilità devono essere curate per fornire un ambiente sicuro e protetto per gli utenti. Gli aggressori possono utilizzare queste vulnerabilità per compromettere un sistema, impossessarsi di esso e aumentare i privilegi. L'impatto di un'applicazione Web compromessa può essere visualizzato dalle credenziali della carta di credito rubate e dal furto di identità alla fuga di informazioni altamente riservate, ecc. a seconda delle esigenze e dei vettori di attacco di entità dannose.

Strumenti utili per i giocatori Linux
Se ti piace giocare su Linux, è probabile che tu abbia utilizzato app e utilità come Wine, Lutris e OBS Studio per migliorare l'esperienza di gioco. O...
Giochi rimasterizzati in HD per Linux che non hanno mai avuto una versione Linux prima
Molti sviluppatori ed editori di giochi stanno realizzando remaster HD di vecchi giochi per prolungare la vita del franchise, per favore i fan richied...
Come utilizzare AutoKey per automatizzare i giochi Linux
AutoKey è un'utilità di automazione desktop per Linux e X11, programmata in Python 3, GTK e Qt. Utilizzando la sua funzionalità di scripting e MACRO, ...