Read the docs
TI-2026-36455 Aliases CVE-2026-49260GHSA-f5gc-qxf8-mh9g

OS command injection in pontedilana php-weasyprint

Priority HIGH 71CWE-78Published · Updated

Key facts

Attack vector
Local
Privileges required
High
User interaction
None
Attack complexity
Low
Impact type
Code execution
Confidentiality · integrity · availability
High · High · High
Fix status
Fixed

Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-78.

Summary

PhpWeasyPrint is a PHP library allowing PDF generation from a URL or an HTML page. Prior to version 2.5.1, `pontedilana/php-weasyprint` builds the shell command for WeasyPrint by passing the binary path through `escapeshellarg()` first and then checking the *quoted* result with `is_executable()`. On POSIX `escapeshellarg('/usr/local/bin/weasyprint')` returns `'/usr/local/bin/weasyprint'` with the single-quote characters as part of the string, so `is_executable()` looks for a file whose actual name includes those quotes. That file never exists, the "safe" branch is dead code, and the raw `$binary` string (set via the constructor or `setBinary()`) flows directly into `Symfony\Component\Process\Process::fromShellCommandline()`. Any deployment whose binary path is sourced from configuration, an environment variable, or a per-tenant setting reaches a shell-command-injection sink. The library is documented as a one-to-one substitute for KnpLabs/snappy and inherited the exact pre-fix codepath KnpLabs patched in GHSA-vpr4-p6fq-85jc. PhpWeasyPrint version 2.5.1 contains a patch for the issue.

Why it matters now

Exploitation Proof of concept CISA SSVC · not in CISA KEV
EPSS 0.0021 11th percentileScored 2026-11-07
Fix Fixed php-weasyprint (pontedilana): 2.5.1pontedilana/php-weasyprint (Packagist): 2.5.1

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
Poc
Automatable
No
Technical impact
Total

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
pontedilanaphp-weasyprintbefore 2.5.12.5.1Patch availableCNA
—pontedilana/php-weasyprint (Packagist)before 2.5.12.5.1Patch availableGHSA-f5gc-qxf8-mh9g
  • php-weasyprint Vendorpontedilana Affected before 2.5.1 Fixed in 2.5.1 Patch available CNA
  • pontedilana/php-weasyprint (Packagist) Vendor— Affected before 2.5.1 Fixed in 2.5.1 Patch available GHSA-f5gc-qxf8-mh9g

Remediation

  • Fix · CNA php-weasyprint (pontedilana) Fixed in 2.5.1
  • Fix · GHSA-f5gc-qxf8-mh9g pontedilana/php-weasyprint (Packagist) Fixed in 2.5.1 Advisory →

Timeline

  1. 2026-10-02 Threatist record created from CVE-2026-49260
  2. 2026-10-03 Alias added: GHSA-f5gc-qxf8-mh9g

References

  • TI-2026-36472 PhpWeasyPrint vulnerable to PHAR deserialization via output filename (CVE-2023-28115 case-insensitive bypass) CVSS 3.1HIGH 8.1
  • TI-2026-36532 PhpWeasyPrint vulnerable to SSRF and local file disclosure via the attachment option CVSS 3.1MEDIUM 6.5
  • TI-2026-36531 PhpWeasyPrint vulnerable to arbitrary file deletion at shutdown via public $temporaryFiles CVSS 3.1LOW 3.0

Sources