Remote file inclusion: una panoramica

Remote file inclusion: una panoramica

Un’inclusione file remota (Rfi) accade quando un file da un server web remoto viene incluso all’interno di una pagina web. Questo può essere fatto di proposito, per visualizzare parti di applicazioni web remote all’interno di un sito, ma può succedere per errori di configurazione o errori più generici. Queste ultime situazioni possono portare ai cosidetti attacchi informatici Rfi.

Nonostante questo tipo di inclusioni file possano accadare con qualsiasi linguaggio di programmazione, le applicazioni web scritte in PHP sono notoriamente soggette agli attacchi che ne scaturiscono, in quanto PHP prevede nativamente  funzionalità che permettono l’inclusione di file remoti. Altri linguaggi richiedono solitamente funzioni più complesse per ottenere lo stesso risultato, rendendo di fatto meno frequente gli attacchi connessi.

Come funziona l’inclusione remota dei file?

Per includere un file remoto, continuando con l’esempio di PHP, deve esistere una stringa di codice che “richiami” specificatamente una risorsa che risieda in un server remoto. Il webserver del sito quindi fa una richiesta di quel particolare file, lo include nella pagina ed è processato normalmente dal parser di quel particolare linguaggio.

Vulnerabilità alle inclusioni remote di file

Di default, le funzionalità di inclusione remota dei file sono spesso disabilitate nelle versioni più recenti dei principali linguaggi di programmazione. Spesso è lo sviluppatore stesso che per particolari esigenze abilita l’Rfi ma senza le dovute precauzioni (input validation)  o per errori che sempre possono accadere, questo espone l’applicazione web ad attacchi esterni.

Senza scendere in troppi tecnicismi, diciamo che una volta che la funzionalità Rfi è attiva e non vengano adottate le necessarie best practices, un hacker ha vita piuttosto facile: cambiando la stringa che include il file remoto, può essere in grado di includere qualsiasi file esso desideri, inserendo codice malevolo con le più disparate finalità. Queste possono includere defacing del sito web, sottrazione di dati sensibili, esecuzione di codice, ransomware: nel caso peggiore, ossia quando l’utente che sta navigando il sito compromesso abbia privilegi di amministratore, questi attacchi possono portare alla compromissione dell’intera struttura informatica.

Come mettersi al riparo dalle vulnerabilità delle Rfi?

Per ottenere un ragionevole grado di sicurezza rispetto alle vulnerabilità derivanti da errate procedure di inclusioni remote dei file, bisogna innanzitutto assicurarsi che esse non siano abilitate di default laddove non sia strettamente necessario. Nel caso di PHP, ciò è facilmente ottenibile tramite il parametro allow_url_include. Quando l’attivazione del Rfi sia invece necessaria, è bene farlo con le dovute attenzioni: ricordarsi di validare sempre gli input. Oltre a questo, bisogna specificare una whitelist di file permessi per l’inclusione: qualsiasi file richiamato non inserito nella whitelist non sarà processato, scongiurando sul nascere qualsiasi tentativo di inserimento di codice malevolo.