Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain Contributor+ account
-
DeliveryAuthor shortcode with malicious pdf_created_callback
-
ExploitServer AES-encrypts callback into button blob
-
ExecutionReplay blob to unauth nopriv AJAX endpoint
-
PersistPlugin invokes attacker-chosen PHP callable
-
ImpactDisclose stored PDFCrowd API key/username
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Code injection prevention, sandbox exec
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires the Save as PDF Plugin by PDFCrowd (<=4.6.1) installed and active on WordPress, plus an authenticated account with Contributor-level capability or higher to author the shortcode and cause the server to encrypt the attacker-supplied pdf_created_callback into a valid button blob. No non-default configuration or special feature toggle is needed - the vulnerable eval_shortcode()/create_button() path and the unauthenticated wp_ajax_nopriv_save_as_pdf_pdfcrowd trigger are present by default. The limiting factor is the Contributor+ authentication needed to mint the blob (the trigger replay itself is unauthenticated); the invoked callback receives only the plugin's options array as its single argument, so impact is bounded to functions abusable with that fixed input (notably API-key disclosure) rather than fully arbitrary code with attacker-controlled arguments. |
| Impact | CVSS 3.1 rates this 8.8 High (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H), and the flaw is a genuine CWE-94 code-injection: a Contributor-level user can get the server to mint a cryptographically valid AES blob whose embedded pdf_created_callback is invoked as a PHP callable at line 1722 with no is_callable(), allowlist, or capability guard. The blob is then triggerable by any unauthenticated visitor via wp_ajax_nopriv_save_as_pdf_pdfcrowd, so PR:L (the blob-crafting step) is the true gating privilege. No EPSS score, no CISA KEV listing, and no public exploit are present in the input - exploitation status is 'no public exploit identified at time of analysis' - so this is a real patch-priority code-injection but not evidence of active exploitation. One material caveat lowers the raw score's real-world impact: the invoked function receives the plugin's own options array as its SOLE argument (the attacker chooses the function NAME, not arbitrary arguments), so the clearly-demonstrated impact is disclosure of the stored PDFCrowd API key/username (C:H) while the vendor's I:H/A:H are more speculative 'further server-side abuse' than confirmed. Treat as a high-priority fix on affected sites that allow untrusted Contributor accounts; low priority where all authors are trusted. |
| Exploit ScenarioDerived | An attacker registers or compromises a WordPress Contributor account, authors a draft/post containing the plugin's shortcode with a malicious pdf_created_callback attribute, and the server AES-encrypts that callback into a valid button blob during rendering. The attacker (or any anonymous visitor) then replays the blob to the unauthenticated wp_ajax_nopriv_save_as_pdf_pdfcrowd endpoint, causing the plugin to invoke the attacker-named PHP function with the plugin option data - exfiltrating the stored PDFCrowd API key and username. No public exploit code is identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 19, 2026
Arbitrary PHP function invocation in the Save as PDF Plugin by PDFCrowd for WordPress (all versions up to and including 4.6.1) allows any authenticated user with Contributor-level access or higher to have the server AES-encrypt an attacker-chosen pdf_created_callback value into a valid button blob, which is later passed to PHP as a callable when any unauthenticated visitor POSTs that blob to the wp_ajax_nopriv_save_as_pdf_pdfcrowd AJAX endpoint. Published CVSS 3.1 is 8.8 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H); our assessment retains the High rating but bounds the impact to C:H/I:L/A:L because the invoked callback receives only the plugin's options array as its single, fixed argument, making disclosure of the site's stored PDFCrowd API key and username the most reliable outcome rather than fully attacker-controlled code execution. Contributors are required only to mint the blob - the trigger replay is unauthenticated - and no public exploit identified at time of analysis, with no confirmed actively exploited (CISA KEV) status.
RemediationAI
No vendor-released patched version is confirmed in the available data; the referenced plugin repository changeset (save-as-pdf-by-pdfcrowd changeset 3701540) indicates an upstream fix is in progress, so the primary action is to upgrade to the first release newer than 4.6.1 as soon as it is published and verify the fix against the plugin Trac diff before re-enabling. If upgrading is not immediately possible, deactivate the plugin entirely - this removes both the vulnerable eval_shortcode()/create_button() path and the wp_ajax_nopriv_save_as_pdf_pdfcrowd handler, at the cost of losing PDF button functionality. A surgical alternative is to unhook or WAF-block the unauthenticated nopriv_save_as_pdf_pdfcrowd AJAX action (and, where feasible, the matching logged-out POST route), which breaks PDF generation for logged-out visitors but blocks the replay trigger; this does not prevent a Contributor from minting blobs, so it should be paired with restricting shortcode authoring. Because the practical impact centers on secret disclosure, treat the stored PDFCrowd API key and username as compromised and rotate them in the PDFCrowd dashboard, then audit recent post/shortcode revisions for pdf_created_callback attributes, review plugin options for unexpected callbacks, and monitor logs for POSTs to admin-ajax.php with action=save_as_pdf_pdfcrowd. As a longer-term control, enforce least privilege by ensuring Contributor and Author accounts are only granted where genuinely needed and strip the pdf_created_callback attribute via a shortcode-attribute filter, accepting that legitimate custom callbacks will stop working. Advisory references: Wordfence threat-intel entry for this CVE, ENISA EUVD-2026-83481, and the plugin Trac changeset and 4.6.1 source links listed in the vendor references.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The target is a WordPress plugin (CPE cpe:2.3:a:pdfcrowd:save_as_pdf_plugin_by_pdfcrowd:*:*:*:*:*:*:*:*), and the root cause is CWE-94 improper control of code generation. The plugin's eval_shortcode() routine parses shortcode attributes and copies any attribute that does not begin with button_ or email_ verbatim into a custom options array, with no sanitization, allowlist, or capability check. create_button() then AES-encrypts that options array - including the attacker-supplied pdf_created_callback - and embeds the resulting ciphertext blob in the rendered button HTML. When an unauthenticated request later POSTs the blob to the wp_ajax_nopriv_save_as_pdf_pdfcrowd action, save_as_pdf_pdfcrowd() decrypts it and invokes $options['pdf_created_callback'] as a PHP callable (public/class-save-as-pdf-pdfcrowd-public.php line 1722) with no is_callable() guard, no allowlist, and no capability check. The AES encryption is not a mitigating boundary: the vulnerable server itself creates the ciphertext for the attacker-chosen callback, so any Contributor-level author obtains a cryptographically valid blob. The relevant code paths are at lines 157, 867, 956, and 1722 of the 4.6.1 public class file. Because the invoked callable is passed only the plugin's options array, the reachable impact is constrained to functions or static methods whose behavior with that single fixed argument is useful - notably exposure of the configured PDFCrowd API key and username - rather than arbitrary code execution with caller-controlled parameters.
Know when Save As Pdf Plugin By Pdfcrowd gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Contributor auth to craft the blob gives PR:L; network/low-complexity holds; C:H for confirmed API-key disclosure, but the fixed single-argument callback constraint limits integrity/availability to I:L/A:L rather than full impact.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The Save as PDF Plugin by PDFCrowd plugin for WordPress is vulnerable to Arbitrary Function Invocation in all versions up to, and including, 4.6.1 via the pdf_created_callback shortcode attribute. The eval_shortcode() function copies any non-button_/non-email_ shortcode attribute verbatim into a custom options array without sanitization, allowlist enforcement, or capability checks, and create_button() AES-encrypts that array - including the attacker-supplied callback value - and embeds the resulting blob in the rendered button HTML; when the blob is later POSTed to the unauthenticated wp_ajax_nopriv_save_as_pdf_pdfcrowd endpoint, save_as_pdf_pdfcrowd() decrypts it and invokes $options['pdf_created_callback'] as a PHP callable at line 1722 with no is_callable() guard, no allowlist, and no capability check. This makes it possible for authenticated attackers, with Contributor-level access and above, to invoke arbitrary PHP functions or static class methods with plugin option data as the sole argument, enabling disclosure of the site's stored PDFCrowd API key and username or further server-side abuse. Note that the encryption boundary does not mitigate this vector because the server itself encrypts the attacker-chosen callback during shortcode rendering, supplying any authenticated Contributor with a cryptographically valid blob that any unauthenticated visitor can subsequently replay to trigger invocation.
Executive ViewAI
The Save as PDF Plugin by PDFCrowd for WordPress, in all versions up to and including 4.6.1, creates a high-severity credential-exposure and third-party service abuse risk for any WordPress estate that grants Contributor-level or higher access to non-administrative users. The flaw lets a Contributor set up a condition that an unauthenticated visitor can trigger, with the most reliable outcome being disclosure of the site's stored PDFCrowd API key and username; no public exploit identified at time of analysis, but with no vendor-released patch available, affected sites remain exposed until the plugin is removed or tightly restricted. Leadership should care because this affects a commonly delegated CMS role and can compromise a paid integration credential without requiring administrator access or full site takeover.
No vendor-released patch identified at time of analysis. Interim mitigations: deactivate or remove the Save as PDF Plugin by PDFCrowd versions up to and including 4.6.1; if it must remain, restrict Contributor and higher roles, block unauthenticated POSTs to wp_ajax_nopriv_save_as_pdf_pdfcrowd, rotate the stored PDFCrowd API key and username, and monitor for suspicious callback values.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
EUVD-2026-83481
GHSA-3fg9-62hh-37mh
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB