CVE-2026-49286

Published: June 19th, 2026
PhpWeasyPrint is a PHP library allowing PDF generation from a URL or an HTML page. Prior to version 2.6.0, `pontedilana/php-weasyprint` guarded the output filename against the `phar://` stream wrapper with a case-sensitive blacklist. PHP stream wrappers are case-insensitive, so `PHAR://`, `Phar://`, etc. bypass the check and reach `fileExists()` (`file_exists()`) in `prepareOutput()`. On PHP 7 (which the library still supports — PHP 7.4+), this triggers deserialization of a crafted PHAR archive's metadata, leading to remote code execution. This is the patch-bypass of CVE-2023-28115. The same issue and fix were handled upstream in KnpLabs/snappy (GHSA-92rv-4j2h-8mjj). PhpWeasyPrint version 2.6.0 contains a patch for the issue.
HIGH
CVSS v3: 8.1

Status

DocFilters Release Package State Justification Comment
26.3 snappy (1.1.3) False Positive Code Not Present This CVE affects the PhpWeasyPrint PHP library (pontedilana/php-weasyprint), a downstream of the KnpLabs/snappy PHP library. It is a case-sensitivity patch-bypass of CVE-2023-28115 in the PHP prepareOutput() function’s phar:// blacklist. Document Filters bundles the unrelated Google Snappy C++ compression library (version 1.1.3, external/snappy-1.1.3), which contains no PHP code, no prepareOutput()/fileExists() logic, and no PHAR stream-wrapper handling. CVE-2023-28115, the original vulnerability this bypasses, is already tracked here as a false positive for the same library-name confusion.
26.2 snappy (1.1.3) Needs Triage
26.1 snappy (1.1.3) Needs Triage
25.4 snappy (1.1.3) Needs Triage
25.3 snappy (1.1.3) Needs Triage
25.2 snappy (1.1.3) Needs Triage
25.1 snappy (1.1.3) Needs Triage
24.4 snappy (1.1.3) Needs Triage
24.4.0 snappy (1.1.3) Needs Triage
24.3 snappy (1.1.3) Needs Triage
24.2 snappy (1.1.3) Needs Triage
24.1 snappy (1.1.3) Needs Triage
23.3 snappy (1.1.3) Needs Triage
23.2 snappy (1.1.3) Needs Triage
23.1 snappy (1.1.3) Needs Triage
22.4 snappy (1.1.3) Needs Triage
22.3 snappy (1.1.3) Needs Triage
22.2 snappy (1.1.3) Needs Triage
22.1 snappy (1.1.3) Needs Triage
21.11 snappy (1.1.3) Needs Triage
21.8 snappy (1.1.3) Needs Triage
21.5.0 snappy (1.1.3) Needs Triage
21.2.0 snappy (1.1.3) Needs Triage
11.4.19.3667 snappy (1.1.3) Needs Triage
11.4.18.3599 snappy (1.1.3) Needs Triage
11.4.16.3445 snappy (1.1.3) Needs Triage
11.4.15.3368 snappy (1.1.3) Needs Triage
11.4.14.3263 snappy (1.1.3) Needs Triage
11.4.13.3179 snappy (1.1.3) Needs Triage
11.4.12.3054 snappy (1.1.3) Needs Triage
11.4.11.3040 snappy (1.1.3) Needs Triage
11.4.11.2990 snappy (1.1.3) Needs Triage
11.4.10.2934 snappy (1.1.3) Needs Triage
11.4.9.2878 snappy (1.1.3) Needs Triage
11.4.8.2822 snappy (1.1.3) Needs Triage

Severity score breakdown

Attack Complexity
HIGH
Attack Vector
NETWORK
Availability Impact
HIGH
Base Score
8.1
Base Severity
HIGH
Confidentiality Impact
HIGH
Integrity Impact
HIGH
Privileges Required
NONE
Scope
UNCHANGED
User Interaction
NONE
Vector String
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Version
3.1

References