Apache Struts è un framework open-source ampiamente utilizzato per la creazione di applicazioni web moderne in Java. La sua diffusione in ambienti aziendali e siti web accessibili al pubblico lo rende una componente critica dell’infrastruttura di Internet e un obiettivo di alto valore per gli attaccanti.
Questa vulnerabilità rappresenta un rischio elevato, consentendo a un attaccante remoto non autenticato di provocare una condizione di Denial of Service (DoS). L’impatto consiste nell’esaurimento dello spazio su disco, che può rendere l’applicazione web, e potenzialmente l’intero server sottostante, non reattivi. Questo comporta interruzioni delle operazioni aziendali, impatta negativamente sull’esperienza utente e può causare perdite economiche.
Sebbene al momento non vi siano segnalazioni confermate di sfruttamento attivo in ambienti reali, è disponibile un exploit pubblico. Ciò aumenta significativamente la probabilità di attacchi opportunistici o mirati contro i sistemi vulnerabili. Qualsiasi server esposto su Internet che esegue una versione vulnerabile di Apache Struts dovrebbe essere considerato a rischio immediato.
| Apache Struts |
| 2025-12-03 16:47:36 |
Riassunto tecnico
La causa principale di questa vulnerabilità è una gestione impropria della pulizia delle risorse all’interno del componente di elaborazione delle richieste multipart di Apache Struts. Quando un utente invia dei dati, come ad esempio un file, tramite una richiesta multipart, il framework crea file temporanei sul disco del server per gestire i dati. La vulnerabilità risiede nell’incapacità di eliminare correttamente questi file temporanei una volta che la richiesta è stata elaborata.
La catena dell’attacco è la seguente:
- Un attaccante invia una serie di richieste multipart appositamente predisposte a un endpoint di un’applicazione basata su una versione vulnerabile di Apache Struts.
- L’analizzatore delle richieste multipart del framework elabora ciascuna richiesta, creando un file temporaneo sul disco per ognuna.
- A causa del difetto, il framework non esegue la logica di pulizia necessaria, lasciando i file temporanei orfani nel file system.
- Ripetendo questo processo, un attaccante può riempire progressivamente lo spazio disco disponibile, provocando infine l’esaurimento completo dello spazio. Ciò porta a un Denial of Service, poiché l’applicazione e altri processi di sistema non sono più in grado di scrivere sul disco.
Questo problema riguarda le versioni di Apache Struts dalla 2.0.0 alla 6.7.0 e dalla 7.0.0 alla 7.0.3. La vulnerabilità è stata corretta nelle versioni 6.7.1, 7.0.4 e successive. Un attaccante non autenticato può sfruttare questa vulnerabilità per negare il servizio senza la necessità di privilegi speciali.
Raccomandazioni
- Aggiornare immediatamente: Eseguire l’upgrade di tutte le istanze di Apache Struts alle versioni più recenti e sicure, come 6.7.1 o 7.0.4, che includono la correzione della vulnerabilità.
- Mitigazioni: Se non è possibile applicare subito la patch, considerare l’implementazione di un rate-limiting sugli endpoint che gestiscono richieste multipart/form-data per rallentare la creazione di file. È possibile configurare Web Application Firewall (WAF) per bloccare richieste multipart malformate, anche se ciò non sostituisce l’aggiornamento.
- Caccia alla minaccia e monitoraggio:
- Monitorare attentamente l’utilizzo dello spazio su disco dei server che eseguono applicazioni Apache Struts per eventuali aumenti rapidi e inspiegabili.
- Ispezionare la directory dei file temporanei utilizzata dal server di applicazioni Java (ad esempio, la directory
tempin Apache Tomcat) per accertarsi della presenza di file anomali che non vengono rimossi.
- Risposta agli incidenti: In caso di sospetta compromissione, procedere subito a eliminare i file temporanei orfani dal disco per ripristinare il servizio. Isolare l’host compromesso e analizzare i log di accesso del server web alla ricerca di richieste POST ripetute provenienti da un singolo indirizzo IP. Conservare i log per l’analisi forense prima di applicare la patch necessaria.
- Difesa in profondità: Assicurarsi che il servizio web venga eseguito con un utente a basso livello di privilegio, dotato di quote che limitino la capacità di esaurire lo spazio disco a livello di sistema. Questo può contribuire a confinare l’impatto del DoS all’applicazione stessa anziché all’intero server. Eseguire regolari backup dei dati e delle configurazioni critiche.