CVE-2026-110176: file riservati esposti in Drupal 7 File Force Download, verifica e patch

Vincenzo Katriel Giuva31 ottobre 20266 min di lettura
CVE-2026-110176: file riservati esposti in Drupal 7 File Force Download, verifica e patch

CVE-2026-110176 è una vulnerabilità di controllo degli accessi nel modulo File Force Download per Drupal 7. Nelle versioni dalla 7.1.0 alla 7.1.2 un visitatore non autenticato può leggere file che non dovrebbe vedere, in particolare quelli nello schema temporary:// o in stream wrapper forniti da altri moduli, semplicemente aggiungendo il parametro download=1 all'URL del file. Il punteggio CVSS 4.0 è 8.7 (gravità alta). Non risulta sfruttamento attivo nel catalogo CISA KEV. La correzione è disponibile nella versione 7.1.3 distribuita da HeroDevs nel programma di supporto post-EOL; se il tuo sito usa questo modulo, verifica subito versione e configurazione.

Cosa è successo: la vulnerabilità CVE-2026-110176 in File Force Download

File Force Download serve a forzare il browser a scaricare un file invece di aprirlo, aggiungendo un header Content-Disposition alla risposta. Per farlo implementa hook_file_download(), il meccanismo con cui Drupal 7 chiede ai moduli se un file può essere servito. Il punto delicato è che in Drupal 7 restituire un array di header non vuoto da quell'hook equivale a concedere l'accesso al file.

Il modulo delegava il controllo agli altri moduli solo per i file nello schema private://. Per tutti gli altri schemi restituiva i propri header senza alcuna verifica. Il risultato è un bypass dei controlli di accesso che altri moduli avrebbero applicato: una classica broken access control.

Chi è colpito: versioni vulnerabili di File Force Download per Drupal 7

  • Prodotto: modulo File Force Download (progetto file_force su drupal.org) per Drupal 7.
  • Versioni vulnerabili: dalla 7.1.0 alla 7.1.2 inclusa.
  • Versione corretta: 7.1.3 nell'edizione Never-Ending Support di HeroDevs.

Sono esposti i file nello schema temporary:// e quelli serviti da stream wrapper di moduli contribuiti. I file negli schemi public:// e private:// non sono interessati. Drupal 7 è a fine vita, quindi molti siti non ricevono più aggiornamenti automatici: è il caso tipico di un sito aziendale costruito anni fa e mai migrato.

Quanto è grave: punteggio CVSS e sfruttamento attivo di CVE-2026-110176

Il vettore CVSS 4.0 è AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N. In pratica: attacco via rete, bassa complessità, nessun privilegio richiesto, nessuna interazione dell'utente, impatto alto sulla riservatezza e nullo su integrità e disponibilità. Un attaccante non modifica né blocca nulla, ma legge file riservati. È una vulnerabilità di esfiltrazione dati, non di esecuzione di codice.

Al momento non risulta nel catalogo KEV di CISA. Il requisito tecnico per sfruttarla è però minimo: basta conoscere o indovinare il percorso di un file temporaneo e aggiungere un parametro all'URL. I file temporanei di Drupal contengono spesso caricamenti in corso, export, anteprime di documenti privati.

Come capire se sei esposto: verifica versione, esposizione e log

Versione del modulo

  • Da interfaccia: Amministrazione, Moduli (/admin/modules), cerca File Force Download e leggi la versione. Oppure /admin/reports/updates.
  • Da riga di comando: drush pml | grep file_force, oppure leggi il campo version nel file sites/all/modules/file_force/file_force.info (o nel percorso dove è installato).

Se la versione è tra 7.1.0 e 7.1.2 e il modulo è abilitato, il sito è vulnerabile.

Cosa c'è negli schemi a rischio

  • Controlla il percorso della cartella temporanea in Configurazione, Media, File system (/admin/config/media/file-system) e guarda cosa contiene.
  • Verifica se moduli contribuiti registrano stream wrapper propri (per esempio moduli di archiviazione esterna o di documenti protetti).

Esposizione e log

Se il sito è raggiungibile da internet, lo è anche il percorso /system/temporary. Nei log di accesso del web server cerca richieste con il parametro download verso quel percorso o verso file di stream wrapper, provenienti da IP non autenticati:

  • grep "system/temporary" access.log | grep "download="
  • Confronta gli IP con quelli dei tuoi redattori e verifica orari e volumi anomali.

Una sola richiesta sospetta non prova una compromissione, ma più download sequenziali di file temporanei da uno stesso IP sono un indicatore concreto.

Come risolvere la vulnerabilità: patch e aggiornamento del modulo

La correzione è la versione 7.1.3 di File Force Download, pubblicata nel programma Never-Ending Support di HeroDevs e riservata ai suoi clienti. Il progetto Drupal 7 Extended Support (d7es, gestito da Tag1) ha pubblicato un advisory sulla vulnerabilità: verifica lì se è disponibile una versione corretta per il tuo canale di aggiornamento. La disponibilità di una patch pubblica su drupal.org va controllata direttamente sulla pagina del progetto.

Se usi Composer, aggiorna il pacchetto del modulo alla versione corretta indicata dal tuo fornitore di supporto, poi esegui drush updb e svuota la cache. Se non hai accesso a una versione corretta, applica i workaround della sezione successiva e valuta se il modulo è davvero necessario.

Cosa fare subito: mitigazioni e hardening contro l'exploit

  1. Disabilita il modulo se il rischio è inaccettabile e non puoi aggiornare. Si perde solo la forzatura del download, non il contenuto.
  2. Blocca le richieste anonime a /system/temporary che contengono il parametro download, sul web server o sul WAF. Su Apache si può fare con una regola mod_rewrite che intercetta il percorso e la query string; su Nginx con un blocco location e un controllo su $arg_download. Testa la regola prima di metterla in produzione.
  3. Sposta i file sensibili fuori da temporary:// e dagli stream wrapper di moduli contribuiti finché non hai applicato la correzione. Svuota la cartella temporanea dai file che non servono più.
  4. Riduci la superficie: elenca i moduli abilitati e rimuovi quelli inutilizzati. Su un Drupal 7 a fine vita ogni modulo contribuito è un rischio da valutare.
  5. Pianifica la migrazione: un CMS senza supporto non è sostenibile. Nel frattempo un contratto di manutenzione e assistenza del sito con monitoraggio degli advisory riduce il tempo tra pubblicazione della falla e intervento.

Molti controlli preventivi validi per WordPress si applicano anche a Drupal: li ho raccolti nell'articolo sui controlli di sicurezza per un sito CMS.

Se sospetti una compromissione: incident response e analisi forense

Se nei log trovi download anomali di file temporanei, trattalo come un possibile incidente di esfiltrazione dati.

  • Non cancellare i log e non svuotare la cartella temporanea prima di averne fatto una copia: sono le uniche prove di cosa è stato letto.
  • Preserva i log del web server, del WAF e di Drupal (watchdog) e metti al sicuro una copia forense del file system del sito.
  • Ricostruisci quali file erano presenti nello schema esposto nel periodo delle richieste sospette: serve a stabilire se contenevano dati personali.
  • Se i file contenevano dati personali, valuta con il titolare del trattamento la notifica al Garante entro 72 ore, come previsto dal GDPR.
  • Ruota le credenziali che potevano trovarsi in file di export o configurazione temporanei.

In un caso recente un'azienda manifatturiera mi ha contattato dopo aver notato download anomali su un Drupal 7 legacy: l'analisi dei log ha permesso di circoscrivere i file letti e di escludere dati personali, evitando una notifica non necessaria. Per un intervento di incident response il mio listino va da 1.500 a 6.000 euro a prezzo fisso, in base all'estensione dell'analisi.

Fonti ufficiali su CVE-2026-110176

Hai un sito Drupal 7 e non sai se è esposto?

Posso verificare versione del modulo, configurazione degli schemi di file e log di accesso, applicare le mitigazioni e, se serve, condurre l'analisi forense dell'incidente. Lavoro di persona tra Varese, Como e Milano e da remoto in tutta Italia. Richiedi un preventivo gratuito: rispondo entro 24 ore. Per urgenze scrivimi dalla pagina contatti, anche su WhatsApp.

#CVE#CVE-2026-110176#Drupal 7#File Force Download#Broken Access Control#Drupal

Condividi l'articolo

LinkedInTwitter