CVE-2026-17431 (GCVE-0-2026-17431)
Vulnerability from cvelistv5 – Published: 2026-08-12 23:12 – Updated: 2026-08-13 13:09| Vendor | Product | Version | CPE status | |
|---|---|---|---|---|
| MITHALDU | PDF::WebKit |
Affected:
0 , ≤ 1.2
(custom)
|
guessed |
{
"containers": {
"adp": [
{
"providerMetadata": {
"dateUpdated": "2026-08-13T02:53:50.907Z",
"orgId": "af854a3a-2127-422b-91ae-364da2661108",
"shortName": "CVE"
},
"references": [
{
"url": "http://www.openwall.com/lists/oss-security/2026/08/13/3"
}
],
"title": "CVE Program Container"
},
{
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "LOCAL",
"availabilityImpact": "NONE",
"baseScore": 6.1,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "LOW",
"integrityImpact": "HIGH",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:N",
"version": "3.1"
}
},
{
"other": {
"content": {
"id": "CVE-2026-17431",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-08-13T13:09:23.223596Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-08-13T13:09:27.451Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"collectionURL": "https://cpan.org/modules",
"defaultStatus": "unaffected",
"packageName": "PDF-WebKit",
"product": "PDF::WebKit",
"programFiles": [
"lib/PDF/WebKit.pm"
],
"programRoutines": [
{
"name": "PDF::WebKit::to_pdf"
},
{
"name": "PDF::WebKit::to_file"
},
{
"name": "PDF::WebKit::_style_tag_for"
}
],
"repo": "https://github.com/kingpong/perl-PDF-WebKit",
"vendor": "MITHALDU",
"versions": [
{
"lessThanOrEqual": "1.2",
"status": "affected",
"version": "0",
"versionType": "custom"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "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.\n\nto_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\u0027s 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 (\"\u003e path\", \"\u003e\u003e path\") opens that path for write or append. to_file forwards its path argument to to_pdf and reaches the same read.\n\nAny 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\u0027s output is returned in place of the PDF, and with the \"\u003e 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."
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-78",
"description": "CWE-78 Improper Neutralization of Special Elements used in an OS Command (\u0027OS Command Injection\u0027)",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-73",
"description": "CWE-73 External Control of File Name or Path",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-08-12T23:12:57.958Z",
"orgId": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
"shortName": "CPANSec"
},
"references": [
{
"tags": [
"issue-tracking"
],
"url": "https://github.com/kingpong/perl-PDF-WebKit/issues/8"
},
{
"tags": [
"patch"
],
"url": "https://security.metacpan.org/patches/P/PDF-WebKit/1.2/CVE-2026-17431-r1.patch"
},
{
"url": "https://wkhtmltopdf.org/status.html"
}
],
"source": {
"discovery": "UNKNOWN"
},
"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",
"workarounds": [
{
"lang": "en",
"value": "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.\n\nOtherwise, do not pass untrusted input as the output path to to_pdf or to_file, or as an entry in the stylesheets list.\n\nNote that the wkhtmltopdf project is no longer being developed, and users of this package should migrate to alternative solutions."
}
],
"x_generator": {
"engine": "cpansec-cna-tool 0.1"
}
}
},
"cveMetadata": {
"assignerOrgId": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
"assignerShortName": "CPANSec",
"cveId": "CVE-2026-17431",
"datePublished": "2026-08-12T23:12:57.958Z",
"dateReserved": "2026-07-25T08:39:34.495Z",
"dateUpdated": "2026-08-13T13:09:27.451Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"epss": {
"cve": "CVE-2026-17431",
"date": "2026-11-10",
"epss": "0.00947",
"percentile": "0.61447"
},
"nvd": {
"cve": {
"affected": [
{
"affectedData": [
{
"collectionURL": "https://cpan.org/modules",
"defaultStatus": "unaffected",
"packageName": "PDF-WebKit",
"product": "PDF::WebKit",
"programFiles": [
"lib/PDF/WebKit.pm"
],
"programRoutines": [
{
"name": "PDF::WebKit::to_pdf"
},
{
"name": "PDF::WebKit::to_file"
},
{
"name": "PDF::WebKit::_style_tag_for"
}
],
"repo": "https://github.com/kingpong/perl-PDF-WebKit",
"vendor": "MITHALDU",
"versions": [
{
"lessThanOrEqual": "1.2",
"status": "affected",
"version": "0",
"versionType": "custom"
}
]
}
],
"source": "9b29abf9-4ab0-4765-b253-1875cd9b441e"
}
],
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "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.\n\nto_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\u0027s 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 (\"\u003e path\", \"\u003e\u003e path\") opens that path for write or append. to_file forwards its path argument to to_pdf and reaches the same read.\n\nAny 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\u0027s output is returned in place of the PDF, and with the \"\u003e 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."
},
{
"lang": "es",
"value": "Las versiones de PDF::WebKit hasta la 1.2 para Perl permiten la inyecci\u00f3n de comandos del sistema operativo a trav\u00e9s de una funci\u00f3n open() de 2 argumentos de la ruta de salida en to_pdf y de las rutas de las hojas de estilo en _style_tag_for.\n\nto_pdf lee el PDF generado desde su argumento de ruta, y _style_tag_for lee cada entrada de la lista de hojas de estilo, asignando la ruta a una @ARGV local y ley\u00e9ndola con el operador diamante, que abre cada elemento de @ARGV con la funci\u00f3n open() de 2 argumentos de Perl. Un valor que comienza o termina con una barra vertical (\u2019| cmd\u2019, \u2019cmd |\u2019) se ejecuta como un comando en lugar de abrirse como un archivo, y uno que comienza con una redirecci\u00f3n (\u2019\u003e path\u2019, \u2019\u003e\u003e path\u2019) abre esa ruta para escritura o adici\u00f3n. to_file reenv\u00eda su argumento de ruta a to_pdf y alcanza la misma lectura.\n\nCualquier llamador que reenv\u00ede entrada no confiable como la ruta de salida o como una entrada de hojas de estilo puede ejecutar un comando bajo el UID del proceso; con la forma \u2019cmd |\u2019 la salida del comando se devuelve en lugar del PDF, y con la forma \u2019\u003e path\u2019 el archivo nombrado se trunca. Las hojas de estilo solo pueden a\u00f1adirse a una fuente HTML, por lo que una URL o fuente de archivo expone la ruta de salida \u00fanicamente."
}
],
"id": "CVE-2026-17431",
"lastModified": "2026-10-23T19:10:00.167",
"metrics": {
"cvssMetricV31": [
{
"cvssData": {
"attackComplexity": "LOW",
"attackVector": "LOCAL",
"availabilityImpact": "NONE",
"baseScore": 6.1,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "LOW",
"integrityImpact": "HIGH",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:N",
"version": "3.1"
},
"exploitabilityScore": 1.8,
"impactScore": 4.2,
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"type": "Secondary"
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"id": "CVE-2026-17431",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-08-13T13:09:23.223596Z",
"version": "2.0.3"
}
}
]
},
"published": "2026-08-13T00:17:31.917",
"references": [
{
"source": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
"url": "https://github.com/kingpong/perl-PDF-WebKit/issues/8"
},
{
"source": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
"url": "https://security.metacpan.org/patches/P/PDF-WebKit/1.2/CVE-2026-17431-r1.patch"
},
{
"source": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
"url": "https://wkhtmltopdf.org/status.html"
},
{
"source": "af854a3a-2127-422b-91ae-364da2661108",
"url": "http://www.openwall.com/lists/oss-security/2026/08/13/3"
}
],
"sourceIdentifier": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
"vulnStatus": "Deferred",
"weaknesses": [
{
"description": [
{
"lang": "en",
"value": "CWE-73"
},
{
"lang": "en",
"value": "CWE-78"
}
],
"source": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
"type": "Secondary"
}
]
}
},
"vulnrichment": {
"containers": {
"adp": [
{
"providerMetadata": {
"dateUpdated": "2026-08-13T02:53:50.907Z",
"orgId": "af854a3a-2127-422b-91ae-364da2661108",
"shortName": "CVE"
},
"references": [
{
"url": "http://www.openwall.com/lists/oss-security/2026/08/13/3"
}
],
"title": "CVE Program Container"
},
{
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "LOCAL",
"availabilityImpact": "NONE",
"baseScore": 6.1,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "LOW",
"integrityImpact": "HIGH",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:N",
"version": "3.1"
}
},
{
"other": {
"content": {
"id": "CVE-2026-17431",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-08-13T13:09:23.223596Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-08-13T13:09:09.424Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"collectionURL": "https://cpan.org/modules",
"defaultStatus": "unaffected",
"packageName": "PDF-WebKit",
"product": "PDF::WebKit",
"programFiles": [
"lib/PDF/WebKit.pm"
],
"programRoutines": [
{
"name": "PDF::WebKit::to_pdf"
},
{
"name": "PDF::WebKit::to_file"
},
{
"name": "PDF::WebKit::_style_tag_for"
}
],
"repo": "https://github.com/kingpong/perl-PDF-WebKit",
"vendor": "MITHALDU",
"versions": [
{
"lessThanOrEqual": "1.2",
"status": "affected",
"version": "0",
"versionType": "custom"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "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.\n\nto_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\u0027s 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 (\"\u003e path\", \"\u003e\u003e path\") opens that path for write or append. to_file forwards its path argument to to_pdf and reaches the same read.\n\nAny 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\u0027s output is returned in place of the PDF, and with the \"\u003e 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."
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-78",
"description": "CWE-78 Improper Neutralization of Special Elements used in an OS Command (\u0027OS Command Injection\u0027)",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-73",
"description": "CWE-73 External Control of File Name or Path",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-08-12T23:12:57.958Z",
"orgId": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
"shortName": "CPANSec"
},
"references": [
{
"tags": [
"issue-tracking"
],
"url": "https://github.com/kingpong/perl-PDF-WebKit/issues/8"
},
{
"tags": [
"patch"
],
"url": "https://security.metacpan.org/patches/P/PDF-WebKit/1.2/CVE-2026-17431-r1.patch"
},
{
"url": "https://wkhtmltopdf.org/status.html"
}
],
"source": {
"discovery": "UNKNOWN"
},
"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",
"workarounds": [
{
"lang": "en",
"value": "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.\n\nOtherwise, do not pass untrusted input as the output path to to_pdf or to_file, or as an entry in the stylesheets list.\n\nNote that the wkhtmltopdf project is no longer being developed, and users of this package should migrate to alternative solutions."
}
],
"x_generator": {
"engine": "cpansec-cna-tool 0.1"
}
}
},
"cveMetadata": {
"assignerOrgId": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
"assignerShortName": "CPANSec",
"cveId": "CVE-2026-17431",
"datePublished": "2026-08-12T23:12:57.958Z",
"dateReserved": "2026-07-25T08:39:34.495Z",
"dateUpdated": "2026-08-13T13:09:27.451Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
}
}
Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Vulnerability timeline
Sightings and recorded dates, grouped by day · UTC
How durations are calculated
Following the VTEM framework (Black Hat USA 2015), time to patch starts when the vendor or a coordinator was informed, total time to patch at discovery, and disclosure to patch at public disclosure; vendor response time runs from the report to its acknowledgement. Time to exploit and time unpatched start at the earliest discovery or report, falling back to public disclosure. Unpatched time ends at the first recorded patch, or the calculation time when no patch is recorded. Exploitation to patch shows the interval between those two events; a published proof of concept is a public exploit, not exploitation.
Each result shows its source dates. A negative interval means the end event came first; when date-only inputs leave the order open, the result says so. Date-only inputs are approximate. The earliest evidence wins: KEV report dates and sightings are labelled as such. Records describing another vulnerability are listed but never calculated from, and a PoC alone does not establish exploitation. Missing patch evidence does not prove that no patch exists. Filters below change the event list only.
Loading timeline…
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
Related by attack behaviour
Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.