Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-59941 — Dompdf: Отказ в обслуживании (DoS) через истощение ресурсов с помощью чрезмерно больших растровых изображений | Kitploit
Инструменты/GitHubGitHub/far00t01/cve-2026-59941
Генерация полезной нагрузкиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и Образование
GitHubfar00t01/cve-2026-59941

CVE-2026-59941

Dompdf: Отказ в обслуживании (DoS) через истощение ресурсов с помощью чрезмерно больших растровых изображений

Репозиторий
462 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-59942: Dompdf Resource Exhaustion DoS — Proof of Concept

  • Тип уязвимости: Отказ в обслуживании (DoS) через исчерпание ресурсов
  • Затронутое ПО: Dompdf <= 3.1.5
  • Авторы: Fabian Rosales (far00t01).

Отказ от ответственности

Этот репозиторий и его содержимое предоставлены исключительно в образовательных и исследовательских целях. Автор не несёт ответственности за любое неправомерное использование, ущерб или незаконную деятельность, совершённую с использованием предоставленной здесь информации. Всегда получайте разрешение перед тестированием целевых сред.

Краткое описание

Dompdf v3.1.5 уязвим к атаке типа «отказ в обслуживании» (DoS) через исчерпание ресурсов. Злоумышленник может вызвать аварийное завершение PHP-процесса, предоставив специально сформированный HTML-документ, содержащий одно изображение огромных размеров (например, 30 000x30 000 пикселей).

Хотя Dompdf реализует внутренние проверки для валидации размеров изображения, их можно обойти, используя изображение с высокой энтропией (например, случайный шум), закодированное в Base64 и обёрнутое в определённые CSS-контейнеры.

Технический разбор:

Стандартные однотонные изображения часто могут быть оптимизированы алгоритмами сжатия или движками рендеринга. Однако изображение с шумом высокой энтропии заставляет PHP-движок обрабатывать каждый из 900 миллионов пикселей по отдельности. При вызове render() движок пытается обработать несжатый растровый образ в памяти и вычислить макет для каждой точки данных пикселя с высокой дисперсией. Это приводит к:

  • 100% загрузке CPU: Поток рендеринга зависает на неопределённое время, пытаясь обработать поток пикселей.
  • Завершению процесса: Массивное выделение памяти (подтверждено на уровне ~1,2 ГБ для одного изображения) вызывает Fatal Error или SIGKILL на уровне ОС (OOM), что приводит к немедленному отказу в обслуживании.

Подробности

Уязвимость существует потому, что валидация размеров происходит на раннем этапе, но выделение ресурсов для вычисления ограничивающего прямоугольника объекта и внутренних буферов на этапе рендеринга не ограничивает строго совокупное время CPU или использование памяти для одного объекта, прошедшего начальную проверку.

Результаты Proof of Concept

https://github.com/user-attachments/assets/d1f5a07b-a7c5-4b5e-84b5-1e47e73522d9

  1. Установите Dompdf v3.1.5 через Composer.
composer require dompdf/dompdf:3.1.5
  1. Используйте следующий скрипт Python для генерации вредоносной полезной нагрузки (exploit.py):
  2. Используйте следующий скрипт Python для мониторинга системных ресурсов в отдельном терминале (monitor.py):
  3. Создайте файл с именем render.php. Этот скрипт служит уязвимой точкой входа, имитируя стандартную реализацию библиотеки Dompdf:
  4. Запустите процесс PHP, передав полезную нагрузку через stdin. Мы используем ограничение памяти в 2 ГБ, чтобы продемонстрировать, что сбой вызван неконтролируемым выделением памяти, а не ограничительной конфигурацией сервера:
php -d memory_limit=2G render.php < payload.html
  1. Движок пытается обработать каждый пиксель изображения с высокой энтропией. Скрипт monitor.py зафиксирует 99,8% загрузки CPU, после чего возникнет PHP Fatal Error (Allowed memory size exhausted), так как Dompdf попытается выделить ~1,2 ГБ за одну операцию. Затем процесс завершается, что подтверждает отказ в обслуживании.

Следующие логи демонстрируют успешную эксплуатацию уязвимости исчерпания ресурсов. Несмотря на щедрый лимит памяти в 2 ГБ, предоставленный PHP-процессу, одно изображение с высокой энтропией вызывает фатальный сбой.

Генерация полезной нагрузки:

python3 exploit.py 
[*] Generating 30000x30000 High-Entropy Noise Bomb...
[+] High-entropy payload saved to: payload.html

Целевое выполнение и отказ в обслуживании:

php -d memory_limit=2G render.php < payload.html
Output
[*] Starting Dompdf rendering process...
PHP Fatal error:  Allowed memory size of 2147483648 bytes exhausted (tried to allocate 1200355712 bytes) in /home/far00t/dompdf_exploit/vendor/dompdf/dompdf/src/Dompdf.php on line 490

При выполнении процесса render.php скрипт monitor.py зафиксировал следующие телеметрические данные, демонстрирующие влияние на системные ресурсы:

python3 monitor.py 
[*] Searching for PHP processes... (Press Ctrl+C to stop)
[MONITOR] PID: 210767 | RAM: 953.17 MB | CPU: 99.7%

Ключевые выводы из телеметрии:

  • Истощение CPU: процесс достиг устойчивого уровня использования CPU в 99,7%. В производственной среде такая степень насыщения однопоточного PHP-процесса фактически приводит к отказу в обслуживании любой другой задачи на этом ядре.
  • Быстрый рост памяти: резидентная память (RSS) выросла до 953,17 МБ непосредственно перед тем, как движок попытался выполнить финальное выделение 1,2 ГБ, что вызвало Fatal error.
  • Подтверждение обхода: телеметрия доказывает, что внутренние «безопасные» лимиты Dompdf были обойдены, поскольку движок перешёл к попытке масштабной декомпрессии битмапа, которую хост-среда не смогла выдержать.

Воздействие

Неаутентифицированный удалённый злоумышленник может вызвать полный отказ в обслуживании (Denial of Service) веб-сервера, отправив специально сформированную HTML-строку. Это затрагивает любое приложение, которое позволяет пользователям предоставлять HTML-контент или URL-адреса, впоследствии преобразуемые в PDF с помощью Dompdf.

Ссылки

  • https://github.com/dompdf/dompdf/security/advisories/GHSA-f5gf-2cj8-52g2
  • https://www.cve.org/CVERecord?id=CVE-2026-59942
Скачать инструмент