CSIRTS // UNIFIED SECURITY ADVISORY FEEDSYS ● ONLINE · POWERED BY INTELFUSIONS.COM

CVE-2026-59942

mediumcovered by 2 sourcesfirst seen 2026-07-22
Summary Dompdf v3.1.5 is vulnerable to a Denial of Service (DoS) attack via resource exhaustion. An attacker can crash the PHP process by providing a specially crafted HTML document containing a single image with massive dimensions (e.g., 30,000x30,000 pixels). While Dompdf implements internal checks to validate image dimensions, these can be bypassed by using a high-entropy image (such as random noise) encoded in Base64 and wrapped in specific CSS containers. Technical Deep Dive: Standard solid-color images can often be optimized by compression algorithms or rendering engines. However, a high-entropy noise image forces the PHP engine to process each of the 900 million pixels individually. When render() is called, the engine attempts to handle the uncompressed bitmap in memory and calculate the layout for every high-variance pixel data point. This leads to: - 100% CPU Saturation: The rendering thread hangs indefinitely trying to process the pixel stream. - Process Termination: The massive memory allocation (verified at ~1.2 GB for a single image) triggers a Fatal Error or an OS-level SIGKILL (OOM), resulting in an immediate Denial of Service. Details The vulnerability exists because the dimension validation happens early, but the resource allocation for calculating the object's bounding box and internal buffers during the rendering phase does not strictly limit the cumulative CPU time or memory usage for a single object that has passed the initial check. PoC (Proof of Concept) 1. Install Dompdf v3.1.5 via Composer. composer require dompdf/dompdf:3.1.5 2. Use the following Python script to generate the malicious payload (exploit.py): from PIL import Image import base64 from io import BytesIO import os DIMENSIONS = (30000, 30000) OUTPUT_FILE = "payload.html" def generate_noise_bomb(): print(f"[*] Generating {DIMENSIONS[0]}x{DIMENSIONS[1]} High-Entropy Noise Bomb...") random_bytes = os.urandom(DIMENSIONS[0] * DIMENSIONS[1]) image = Image.frombytes('L', DIMENS

⚡ Watch CVE-2026-59942

Get an email if CVE-2026-59942 is added to CISA KEV, gains public exploit code, or a new advisory cites it — max one per day, one-click unsubscribe.

Exploitation outlook

Advisory coverage (2)

External references

NVD record for CVE-2026-59942

CVE.org record

Embed the live status

CVE-2026-59942 live status badge — this badge updates automatically when the KEV or exploit status changes. How to embed it →

[![CVE-2026-59942 status](https://www.csirts.com/badge/CVE-2026-59942)](https://www.csirts.com/cve/CVE-2026-59942)