CVE-2026-93653: Poppler: poppler: unbounded cpu loop in splashoutputdev::tilingpatternfill via unvalidated tiling-pattern repeat count (denial of service)

Published Sep 18, 2026
·
Updated

A denial of service flaw was found in Poppler's Splash backend. A crafted PDF with tiling-pattern geometry approaching the int32 boundary can cause SplashOutputDev::tilingPatternFill to compute an attacker-controlled repeat count that drives an excessively long loop in the pattern-fill scanline routine, without a corresponding memory allocation. An attacker could exploit this by supplying a malicious PDF to an application that renders it via Poppler's Splash backend, causing the rendering process to consume 100% CPU for an attacker-controlled, extended duration.

Other sources

A flaw was found in Poppler's Splash backend. In SplashOutputDev::tilingPatternFill (poppler/SplashOutputDev.cc), when a PDF's tiling pattern geometry (fill rectangle and step) drives the computed repeat count for the pattern-fill loop, the raw, PDF-controlled span (x1 - x0 / y1 - y0) is substituted directly into repeatX/repeatY whenever it exceeds the value derived from the (possibly overflowed) surface dimensions. This allows an attacker-supplied PDF to set repeatX/repeatY to a value bounded only by INTMAX (~2^31), which then drives an unconditional, unclipped loop in the tilingBitmapSrc scanline callback that executes once per output scanline. Because the source tile bitmap itself remains tiny, memory usage stays flat while the process consumes 100% CPU for an extended period, resulting in denial of service. This is a residual, distinct consequence of the same tilingPatternFill arithmetic defect addressed by CVE-2026-10118: the checkedMultiply() guard added by that fix only rejects requests where surfacewidth repeatX (or surfaceheight repeatY) would overflow an int; it does not bound repeatX/repeatY to a sane value when the product happens to fit under INTMAX, which is exactly the case exploited here. Confirmed reproducible on poppler 26.04.0, 26.06.0 (the CVE-2026-10118 fixed release), 26.08.0, and current master via an ~820-byte crafted PDF; verified against upstream source for all three references. Any application using Poppler's Splash backend to render untrusted PDFs (pdftoppm, document preview, mail-gateway attachment scanning, OCR pipelines) can be pinned to one CPU core per submitted file.

Red Hat

Affected Software

1 affected component
Poppler Poppler>26.04.0<=26.08.0

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade poppler to a version that resolves this vulnerability.

    Fixed in 26.04.0
  2. Upgrade

    Upgrade poppler to a version that resolves this vulnerability.

    Fixed in 26.06.0
  3. Upgrade

    Upgrade poppler to a version that resolves this vulnerability.

    Fixed in 26.08.0
  4. Compensating control

    For applications using Poppler's Splash backend (e.g., pdftoppm, document preview, mail-gateway attachment scanning, OCR pipelines), pin the rendering workload to one CPU core per submitted file to limit CPU-denial-of-service impact from crafted PDFs.

Event History

Sep 18, 2026
Data Sourced
via Red Hat·01:41 PM
DescriptionSeverityAffected Software
CVE Published
via MITRE·02:13 PM
Data Sourced
via MITRE·02:13 PM
DescriptionSeverityWeakness

Frequently Asked Questions

1

Which environments are exposed to this denial of service?

Applications that render attacker-supplied PDFs through Poppler's Splash backend are exposed. The impact is on the rendering process, which can consume 100% CPU for an attacker-controlled extended duration.

2

What does exploitation require?

An attacker needs to supply a crafted PDF and have a user or application render it using the affected Splash backend. The PDF uses tiling-pattern geometry near the int32 boundary to drive an excessively large repeat count.

3

Is memory exhaustion required for the attack?

No. The issue causes an excessively long, unconditional scanline loop without a corresponding memory allocation, so the primary effect is CPU consumption rather than memory exhaustion.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203