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
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