Description
PDF::WebKit versions through 1.2 for Perl allow OS command injection via a 2-arg open() of the output path in to_pdf and of stylesheet paths in _style_tag_for.

to_pdf reads the generated PDF back from its path argument, and _style_tag_for reads each entry of the stylesheets list, by assigning the path to a local @ARGV and reading it with the diamond operator, which opens each @ARGV element with Perl's 2-arg open(). A value that begins or ends with a pipe ("| cmd", "cmd |") is run as a command rather than opened as a file, and one that begins with a redirect ("> path", ">> path") opens that path for write or append. to_file forwards its path argument to to_pdf and reaches the same read.

Any caller that forwards untrusted input as the output path or as a stylesheets entry can run a command under the process UID; with the "cmd |" form the command's output is returned in place of the PDF, and with the "> path" form the named file is truncated. Stylesheets may only be added to an HTML source, so a URL or file source exposes the output path alone.
Published: 2026-08-12
Score: 6.1 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

PDF::WebKit versions up to 1.2 for Perl rely on a two-argument open when reading the output file path inside the to_pdf function and when processing stylesheet paths inside the _style_tag_for helper. The two-argument open interprets strings that begin or end with a pipe, such as `| cmd` or `cmd |`, as shell commands, and strings that begin with a redirection operator, such as `> path`, as file redirection. As a result, if an attacker supplies an untrusted value that is used as the PDF output filename or as a stylesheet entry, the module will execute the supplied command or truncate the named file, enabling remote code execution. The necessary conditions are that the caller forwards untrusted input as an output path or a stylesheet entry; no additional privileges or interaction are required. Based on the description, it is inferred that an attacker only needs to supply an untrusted value used as the PDF output filename or as a stylesheet entry to trigger command execution and potentially compromise confidentiality, integrity, or availability.

Affected Systems

Vendor MITHALDU’s Perl module PDF::WebKit is vulnerable in all releases up to and including version 1.2. The upstream wkhtmltopdf project is no longer maintained, and there is no officially released patch; however, a community patch that replaces the two-argument open with a safe three-argument form is available. Users of PDF::WebKit who rely on untrusted input for the PDF output path or stylesheet list must be aware that these versions are susceptible to OS command injection.

Risk and Exploitability

The CVSS score of 6.1 indicates moderate severity, while the EPSS score of <1% reflects a low, but nonzero, probability of exploitation. The vulnerability is not listed in the CISA KEV catalog, but the lack of an official patch release increases the risk that the flaw goes unnoticed in production. An attacker with the ability to supply a path or stylesheet entry—such as a malicious user uploading a PDF or a compromised web application—can trigger the flaw remotely, execute arbitrary shell commands, and potentially gain full system compromise. The attack does not require privileged access beyond the process UID under which the module runs, making the risk significant for services running with elevated privileges.

Generated by OpenCVE AI on August 13, 2026 at 15:04 UTC.

Remediation

Vendor Workaround

No fixed release is available. Apply the patch, which reads both paths with a 3-arg open so the value is never interpreted as a command or redirect. Otherwise, do not pass untrusted input as the output path to to_pdf or to_file, or as an entry in the stylesheets list. Note that the wkhtmltopdf project is no longer being developed, and users of this package should migrate to alternative solutions.


OpenCVE Recommended Actions

  • Apply the vendor‑supplied community patch that changes the two‑argument open to a three‑argument form, preventing the module from interpreting paths as commands.
  • Ensure that any value used as the PDF output path or added to the stylesheets list is validated and sanitized, or avoid passing untrusted data to to_pdf or to_file altogether.
  • Migrate from PDF::WebKit to an actively maintained alternative library, as the upstream wkhtmltopdf project is no longer supported.

Generated by OpenCVE AI on August 13, 2026 at 15:04 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 13 Aug 2026 13:30:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

{'score': 6.1, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:N'}

ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Thu, 13 Aug 2026 10:15:00 +0000

Type Values Removed Values Added
First Time appeared Mithaldu
Mithaldu pdf::webkit
Vendors & Products Mithaldu
Mithaldu pdf::webkit

Thu, 13 Aug 2026 04:30:00 +0000

Type Values Removed Values Added
References

Wed, 12 Aug 2026 23:30:00 +0000

Type Values Removed Values Added
Description PDF::WebKit versions through 1.2 for Perl allow OS command injection via a 2-arg open() of the output path in to_pdf and of stylesheet paths in _style_tag_for. to_pdf reads the generated PDF back from its path argument, and _style_tag_for reads each entry of the stylesheets list, by assigning the path to a local @ARGV and reading it with the diamond operator, which opens each @ARGV element with Perl's 2-arg open(). A value that begins or ends with a pipe ("| cmd", "cmd |") is run as a command rather than opened as a file, and one that begins with a redirect ("> path", ">> path") opens that path for write or append. to_file forwards its path argument to to_pdf and reaches the same read. Any caller that forwards untrusted input as the output path or as a stylesheets entry can run a command under the process UID; with the "cmd |" form the command's output is returned in place of the PDF, and with the "> path" form the named file is truncated. Stylesheets may only be added to an HTML source, so a URL or file source exposes the output path alone.
Title PDF::WebKit versions through 1.2 for Perl allow OS command injection via a 2-arg open() of the output path in to_pdf and of stylesheet paths in _style_tag_for
Weaknesses CWE-73
CWE-78
References

Subscriptions

Mithaldu Pdf::webkit
cve-icon MITRE

Status: PUBLISHED

Assigner: CPANSec

Published:

Updated: 2026-08-13T13:09:27.451Z

Reserved: 2026-07-25T08:39:34.495Z

Link: CVE-2026-17431

cve-icon Vulnrichment

Updated: 2026-08-13T02:53:50.907Z

cve-icon NVD

Status : Deferred

Published: 2026-08-13T00:17:31.917

Modified: 2026-08-26T16:51:19.490

Link: CVE-2026-17431

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-13T15:15:13Z

Weaknesses
  • CWE-73

    External Control of File Name or Path

  • CWE-78

    Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')