Pillole di Pentration Testing: LFI e RFI, due facce di uno stesso problema
- Andrea Tassotti
- Visite: 4321
Pillole di #penetrationtest
Le vulnerabilità da File Inclusion, inclusione Locale o Remota che sia, dipendono (come molte vulnerabilità) da difetti di programmazione.
In sostanza in un il linguaggio che consenta l'inclusione dinamica di codice la programmazione tende a suddividere l'intero programma in moduli caricati secondo le necessità durante l'esecuzione. Questo semplifica la gestione della complessità ma apre la porta allo sfruttamento malevolo di questa tecnica quando si abbassi la soglia di controllo su cosa venga incluso dinamicamente, specialmente quando questo dipende da un input utente.
Il problema è il medesimo sia che la risorsa caricata sia locale al server erogante il servizio web (nel caso di applicazioni Web), sia che sia raggiunta via rete attraverso un qualche protocollo di comunicazione (tipicamente http).
L'esempio tipico è l'inclusione delle versioni localizzate linguisticamente delle applicazioni in ragione di una variabile CGI, un cookie o qualsivoglia ente dipendente dall'utente.
Tanto è diffuso il problema che il sistema di classificazione Common Weakness Enumeration del MITRE ha identificate alcune classi per questo problema.
Per il PHP, ad esempio, identifica la CWE-98 per il PHP: Improper Control of Filename for Include/Require Statement in PHP Program.
Ma il PHP non è l'unico linguaggio a subire le conseguenze di uno sfruttamento delle tecniche di file inclusion; ad esempio con la CWE-611 (Information Exposure Through XML External Entity Reference) e CWE-827 (Improper Control of Document Type Definition) il MITRE identifica i problemi derivanti dalla tecnica XML External Entity (XXE) Processing (che consente inclusione di porzioni di documento XML da risorse esterne) che sono alla base di alcune vulnerabilità note (per difetto di controllo sulla inclusione) di alcuni prodotti, come descritto da CVE-2019-3774 e CVE-2018-12463.