Chi si avvicina alla cyber security potrebbe essere disturbato dalle centinaia di termini non certo di uso comune che si troverà di fronte. Se vi dico “attacco Local File Inclusion” sarà difficile capire di che si tratta solo dal nome, ecco quindi che provo a spiegarlo.
Local File Inclusion, anche abbreviato in LFI, è una vulnerabilità web dovuta ad errori di programmazione presenti nel sito o servizio web. La presenza di questo tipo di vulnerabilità consente all’attaccante di inserire nel sito dei file o applicazioni maligne che potranno essere eseguite successivamente sul sito stesso. Questo tipo di vulnerabilità non è molto comune ma può essere molto pericolosa e in alcuni casi può facilitare altri tipi di attacchi come il Cross Site Scripting o Remote Code Execution.
Ma ora cerchiamo di capire come funzione LFI
Quando un’applicazione web non implementa adeguati controlli di sicurezza sulle richieste in ingresso, un utente malintenzionato potrebbe sfruttare questa vulnerabilità per passare come input un percorso di file locale o uno script malevolo attraverso una richiesta HTTP. Se l’applicazione non gestisce correttamente questa richiesta e include il file specificato dall’utente senza verificare la sua legittimità, si apre la porta a un attacco di Local File Inclusion. Una volta incluso il file, l’attaccante potrebbe ottenere informazioni sensibili, eseguire codice dannoso o compromettere il sistema.
Se ci pensate si tratta di un attacco concettualmente simile alle SQL Injection di cui abbiamo parlato tante volte, però non sfrutta SQL come vettore ma HTTP e sfrutta input non adeguatamente validati o filtrati per eseguire azioni non autorizzate.
Come si può prevenire e mitigare questo tipo di attacco?
Esistono diversi metodi per prevenire questo tipo di attacco, vediamo i più comuni:
– Validazione dell’input: verificare che l’applicazione web validi e filtri correttamente gli input degli utenti, inclusi parametri URL, cookie e dati inviati tramite form;
– Limitazione dell’accesso ai file: impostare le autorizzazioni sui file e sulle directory in modo rigoroso, consentendo solo l’accesso necessario all’applicazione e riducendo al minimo i privilegi dei file sensibili;
– Utilizzo di percorsi assoluti anziché relativi: quando l’applicazione include file locali, utilizza percorsi assoluti anziché percorsi relativi. In questo modo, l’applicazione non dipende dal contesto in cui è stata richiamata;
– Whitelisting delle risorse: limitare le risorse che l’applicazione può includere tramite LFI utilizzando un elenco “whitelist”;
– Utilizzo di framework e librerie sicure: utilizzare framework e librerie di sviluppo web sicure e aggiornate che integrino misure di sicurezza per prevenire le vulnerabilità più comuni;
– Monitoraggio e logging: implementare un robusto sistema di monitoraggio e logging per registrare le attività sospette o potenzialmente dannose.
– Formazione e consapevolezza: formare gli sviluppatori e il personale IT sulla sicurezza delle applicazioni web e sulle best practices aiuta alla prevenzione;
– Assegnazione di ID: memorizzare i percorsi dei file in un database sicuro e assegnare loro un ID univoco a ciascuno. In questo modo, gli utenti vedono solo l’ID e non hanno accesso diretto ai percorsi dei file, riducendo così il rischio di manipolazione da parte di un aggressore;
– Utilizzo di database: evitare di includere direttamente file sul server web che potrebbero essere compromessi e, invece, memorizzare i dati sensibili o le risorse in un database.
– configurazioni del server: configurare il server in modo che invii automaticamente intestazioni di download per i file anziché eseguirli direttamente nella directory specificata. Questo previene l’esecuzione accidentale di file potenzialmente dannosi e la perdita di dati.
Per finire, utilizzare un Web Application Firewall (WAF) può essere estremamente utile nella mitigazione degli attacchi di Local File Inclusion e in generale nella protezione delle applicazioni web da una grande varietà di minacce. In generale un buon WAF può contribuire a mitigare gli attacchi LFI grazie alle sue capacità di analisi e filtraggio delle richieste HTTP in ingresso, di validazione dell’input e di protezione dei file sensibili.
Implementando queste misure preventive e mantenendo costantemente aggiornate le difese dell’applicazione, è possibile ridurre significativamente il rischio di successo di un attacco di Local File Inclusion.
Qualche caso reale?
Ci si potrebbe aspettare che questo tipo di attacco sia recente, niente di più sbagliato! Nel 2005 il worm Samy si diffuse su MySpace, una popolare piattaforma di social media, sfruttando una combinazione di cross-site scripting (XSS) e Local File Inclusion (LFI). Samy sfruttò un LFI per includere del codice JavaScript dannoso da un file locale, diffondendo così il malware tra gli utenti di MySpace. Più recente l’attacco conosciuto come Panama Papers data leak, del 2016, dove sembra sia stata utilizzata una combinazione di diverse tecniche tra cui anche LFI. Con questo attacco furono esfiltrate 4,8 milioni di email, 3 milioni di record di DB e 2 milioni di file PDF., circa 20 volte il più famoso WikiLeaks. Da allora sono diversi gli attacchi di una certa rilevanza messi in opera con tale tecnica e continuano ancora oggi. Ecco perché è così importante implementare controlli di sicurezza robusti per mitigare questo tipo di minaccia.