Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-59941 — Dompdf: 과도한 크기의 이미지 비트맵을 이용한 리소스 고갈로 인한 서비스 거부(DoS) | Kitploit
도구/GitHubGitHub/far00t01/cve-2026-59941
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubfar00t01/cve-2026-59941

CVE-2026-59941

Dompdf: 과도한 크기의 이미지 비트맵을 이용한 리소스 고갈로 인한 서비스 거부(DoS)

저장소 보기
452개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-59942: Dompdf 리소스 고갈 DoS - 개념 증명

  • 취약점 유형: 리소스 고갈을 통한 서비스 거부(DoS)
  • 영향받는 소프트웨어: Dompdf <= 3.1.5
  • 크레딧: Fabian Rosales (far00t01).

면책 조항

이 저장소와 그 내용은 교육 및 연구 목적으로만 제공됩니다. 작성자는 여기에 제공된 정보를 사용하여 발생하는 오용, 손해 또는 불법 행위에 대해 책임지지 않습니다. 대상 환경을 테스트하기 전에 항상 승인을 받으십시오.

요약

Dompdf v3.1.5는 리소스 고갈을 통한 서비스 거부(DoS) 공격에 취약합니다. 공격자는 거대한 크기(예: 30,000x30,000 픽셀)의 단일 이미지를 포함하는 특수 제작된 HTML 문서를 제공하여 PHP 프로세스를 충돌시킬 수 있습니다.

Dompdf는 이미지 크기를 검증하기 위한 내부 검사를 구현하고 있지만, 이는 Base64로 인코딩되고 특정 CSS 컨테이너로 감싸진 고엔트로피 이미지(예: 랜덤 노이즈)를 사용하여 우회할 수 있습니다.

기술 심층 분석:

일반적인 단색 이미지는 압축 알고리즘이나 렌더링 엔진에 의해 최적화되는 경우가 많습니다. 그러나 고엔트로피 노이즈 이미지는 PHP 엔진이 9억 개의 픽셀 각각을 개별적으로 처리하도록 강제합니다. render()가 호출되면 엔진은 압축되지 않은 비트맵을 메모리에서 처리하고 모든 고분산 픽셀 데이터 포인트에 대한 레이아웃을 계산하려고 시도합니다. 이로 인해 다음과 같은 결과가 발생합니다:

  • 100% CPU 포화: 렌더링 스레드가 픽셀 스트림을 처리하려고 시도하면서 무기한 중단됩니다.
  • 프로세스 종료: 막대한 메모리 할당(단일 이미지에 대해 약 1.2 GB로 확인됨)이 치명적 오류(Fatal Error) 또는 OS 수준의 SIGKILL(OOM)을 유발하여 즉각적인 서비스 거부를 초래합니다.

세부 사항

이 취약점은 크기 검증이 초기에 수행되지만, 초기 검사를 통과한 단일 객체에 대해 렌더링 단계에서 객체의 경계 상자와 내부 버퍼를 계산하기 위한 리소스 할당이 누적 CPU 시간이나 메모리 사용량을 엄격하게 제한하지 않기 때문에 존재합니다.

개념 증명 결과

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

  1. Composer를 통해 Dompdf v3.1.5를 설치합니다.
composer require dompdf/dompdf:3.1.5
  1. 다음 Python 스크립트를 사용하여 악성 페이로드를 생성합니다(exploit.py):
  2. 별도의 터미널에서 다음 Python 스크립트를 사용하여 시스템 리소스를 모니터링합니다(monitor.py):
  3. render.php라는 파일을 생성합니다. 이 스크립트는 Dompdf 라이브러리의 표준 구현을 모방한 취약한 진입점 역할을 합니다:
  4. stdin을 통해 페이로드를 제공하여 PHP 프로세스를 실행합니다. 우리는 크래시가 제한적인 서버 구성이 아니라 통제되지 않은 할당으로 인해 발생한다는 것을 입증하기 위해 2GB 메모리 제한을 사용합니다:
php -d memory_limit=2G render.php < payload.html
  1. 엔진은 고엔트로피 이미지의 모든 픽셀을 처리하려고 시도합니다. monitor.py 스크립트는 99.8%의 CPU 포화를 기록하고, 이어서 Dompdf가 단일 작업에서 약 1.2 GB를 할당하려고 시도하면서 PHP Fatal Error(Allowed memory size exhausted)가 발생합니다. 그런 다음 프로세스가 종료되어 서비스 거부(Denial of Service)가 확인됩니다.

다음 로그는 리소스 고갈 취약점의 성공적인 악용을 보여줍니다. PHP 프로세스에 2GB라는 넉넉한 메모리 제한이 제공되었음에도 불구하고, 단일 고엔트로피 이미지가 치명적인 크래시를 유발합니다.

페이로드 생성:

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 기아 상태: 해당 프로세스가 99.7%의 CPU 사용률을 지속적으로 유지했습니다. 프로덕션 환경에서는 단일 스레드 PHP 프로세스에서 이 수준의 포화 상태가 발생하면 해당 코어의 다른 모든 작업에 대한 서비스가 사실상 거부됩니다.
  • 급격한 메모리 증가: 상주 메모리(RSS)가 953.17 MB까지 상승한 직후, 엔진이 치명적 오류를 유발한 최종 1.2 GB 할당을 시도했습니다.
  • 우회 확인: 텔레메트리는 Dompdf의 내부 "안전" 한도가 우회되었음을 입증합니다. 엔진이 호스트 환경이 감당할 수 없는 대규모 비트맵 압축 해제를 시도했기 때문입니다.

영향

인증되지 않은 원격 공격자가 조작된 HTML 문자열을 제출하여 웹 서버에 완전한 서비스 거부(DoS)를 일으킬 수 있습니다. 이는 사용자가 HTML 콘텐츠나 URL을 제공하고, 이후 해당 콘텐츠가 Dompdf를 사용하여 PDF로 변환되는 모든 애플리케이션에 영향을 미칩니다.

참고

  • https://github.com/dompdf/dompdf/security/advisories/GHSA-f5gf-2cj8-52g2
  • https://www.cve.org/CVERecord?id=CVE-2026-59942
도구 다운로드