CVE-2024-12601
Executive Summary
CVE-2024-12601 is a Denial of Service (DoS) vulnerability in the Calculated Fields Form WordPress plugin (versions up to and including 5.2.63). The flaw resides in the CAPTCHA image generation functionality, where the height and width parameters are not properly sanitized or limited. An unauthenticated attacker can send multiple requests with arbitrarily large values for these parameters, causing the server to allocate excessive resources (CPU and memory) to generate oversized CAPTCHA images. This can lead to resource exhaustion and service unavailability, especially on shared hosting environments or servers without DoS mitigation.
This vulnerability is classified as a WordPress ecosystem issue, as it directly affects a plugin running within WordPress. The attack does not require authentication and can be executed with minimal effort, making it a significant risk for sites relying on this plugin.
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 is specific to the Calculated Fields Form WordPress plugin, which is distributed via the official WordPress plugin repository. The plugin is not an NPM, PyPI, Go, or Ruby package, but it is part of the WordPress supply chain. Administrators should verify the integrity of the plugin files and ensure they are obtained from the official repository. The lack of a patch at the time of analysis means that users must rely on alternative mitigations (e.g., Web Application Firewall rules) until an update is released.
CVSS Breakdown & Threat Level
- CVSS Score: 5.3 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
- Attack Vector: Network (AV:N)
- Attack Complexity: Low (AC:L)
- Privileges Required: None (PR:N)
- User Interaction: None (UI:N)
- Scope: Unchanged (S:U)
- Confidentiality Impact: None (C:N)
- Integrity Impact: None (I:N)
- Availability Impact: Low (A:L)
Threat Level: Medium. While the impact is limited to availability (DoS), the attack is trivial to execute and requires no authentication. In shared hosting environments, a single attacker could degrade performance for all tenants.
Deep Dive & Mechanics
The vulnerability exists in the CAPTCHA image generation endpoint of the Calculated Fields Form plugin. The plugin uses the GD library (or similar) to dynamically generate CAPTCHA images. The height and width parameters are passed directly to the image creation function without validation.
Root Cause:
- The plugin does not enforce maximum values for
heightandwidth. - An attacker can set these parameters to extremely large integers (e.g., 99999x99999 pixels).
- The server attempts to allocate memory for the image buffer, which can be several gigabytes for a single request.
- Multiple concurrent requests can exhaust available memory or CPU, leading to a denial of service.
Attack Flow:
- Attacker identifies a WordPress site using the Calculated Fields Form plugin.
- Attacker sends a crafted HTTP request to the CAPTCHA generation endpoint (e.g.,
/wp-admin/admin-ajax.php?action=cf_captcha&width=99999&height=99999). - The server allocates memory for the image, consuming significant resources.
- The attacker repeats the request in parallel, causing resource exhaustion.
Why EPSS is 0.0%: This is a newly disclosed CVE with no observed exploitation in the wild yet. However, the simplicity of the attack suggests that exploitation may increase once proof-of-concept code becomes available.
Vulnerable vs. Patched Code
Vulnerable Code (Conceptual):
// In the CAPTCHA generation function
$width = $_GET['width'];
$height = $_GET['height'];
$image = imagecreatetruecolor($width, $height);
// No validation or limits on $width and $height
Patched Code (Expected):
// Patched version should include limits
$width = min((int)$_GET['width'], 300);
$height = min((int)$_GET['height'], 100);
$image = imagecreatetruecolor($width, $height);
Note: Since no official patch is available, the above is a recommended fix. The plugin vendor has not released an update as of this analysis.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A WordPress site with the Calculated Fields Form plugin (version <= 5.2.63) installed and active.
- The CAPTCHA feature must be enabled (default in many forms).
Exploitation Steps:
- Identify the CAPTCHA endpoint. Typically, it is accessible via:
/wp-admin/admin-ajax.php?action=cf_captcha - Send a request with large dimensions:
curl "http://target.com/wp-admin/admin-ajax.php?action=cf_captcha&width=99999&height=99999" - To amplify the attack, send multiple concurrent requests:
for i in {1..100}; do curl "http://target.com/wp-admin/admin-ajax.php?action=cf_captcha&width=99999&height=99999" & done - Monitor server response times. If the server becomes unresponsive, the DoS is successful.
Expected Outcome: Server CPU and memory usage spikes, potentially causing the site to become slow or crash.
Blue Team (Detection & Defense)
Detection:
- Monitor for HTTP requests to
/wp-admin/admin-ajax.phpwithaction=cf_captchaand unusually largewidthorheightparameters. - Look for a high volume of requests from a single IP to this endpoint.
- Use the YARA and Sigma rules provided in the Detection Engineering section.
Defense:
- Immediate: Block requests with
widthorheightparameters exceeding reasonable limits (e.g., > 500 pixels) at the WAF or reverse proxy level. - Rate Limiting: Apply rate limiting to the CAPTCHA endpoint (e.g., 10 requests per minute per IP).
- Plugin Update: Monitor the plugin repository for a patched version and apply it as soon as available.
- Disable CAPTCHA: If not critical, disable the CAPTCHA feature in the plugin settings.
Indicators of Compromise (IOCs)
Network IOCs:
- HTTP requests to
/wp-admin/admin-ajax.phpwithaction=cf_captchaandwidthorheightparameters > 1000. - High volume of requests from a single IP to the CAPTCHA endpoint.
- Server logs showing
imagecreatetruecolor()failures due to memory exhaustion.
File IOCs:
- Temporary files in
/tmp/with large sizes (if the server writes CAPTCHA images to disk). - PHP error logs containing
Allowed memory size exhaustedorOut of memoryerrors.
Behavioral IOCs:
- Unusual CPU or memory spikes on the web server.
- Slow response times or timeouts for the WordPress site.
Detection Engineering
YARA Rule
rule CVE_2024_12601_Captcha_DoS {
meta:
description = "Detects requests to Calculated Fields Form CAPTCHA endpoint with oversized dimensions"
author = "Valters IT"
date = "2025-04-10"
cve = "CVE-2024-12601"
strings:
$ajax_action = "action=cf_captcha"
$width_param = "width="
$height_param = "height="
condition:
$ajax_action and ($width_param or $height_param)
}
Sigma Rule
title: CVE-2024-12601 - Calculated Fields Form CAPTCHA DoS Attempt
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects HTTP requests with large width/height parameters to the CAPTCHA endpoint
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-uri-query|contains: "action=cf_captcha"
cs-uri-query|contains|all:
- "width="
- "height="
condition: selection
falsepositives:
- Legitimate requests with standard CAPTCHA sizes (e.g., width=300, height=100)
level: high
Suricata Rule
alert http any any -> any any (
msg:"CVE-2024-12601 - Calculated Fields Form CAPTCHA DoS Attempt";
flow:to_server;
content:"action=cf_captcha";
http_uri;
content:"width=";
http_uri;
distance:0;
content:"height=";
http_uri;
distance:0;
pcre:"/width=\d{4,}/";
pcre:"/height=\d{4,}/";
classtype:attempted-dos;
sid:1000001;
rev:1;
)
Remediation & Mitigation
Immediate Actions:
- WAF Rules: Block requests to
/wp-admin/admin-ajax.phpwherewidthorheightparameters exceed 500 pixels. - Rate Limiting: Use a plugin like Wordfence or server-level rate limiting to restrict requests to the CAPTCHA endpoint.
- Disable CAPTCHA: If the CAPTCHA is not essential, disable it in the plugin settings.
Long-Term Fix:
- Monitor the plugin repository for an official patch. Apply it as soon as it becomes available.
- If the plugin is not updated within a reasonable timeframe, consider replacing it with an alternative form plugin that has proper input validation.
Workaround Code (for developers):
Add the following to your theme's functions.php to override the CAPTCHA generation:
add_filter('cf_captcha_params', function($params) {
$params['width'] = min($params['width'], 300);
$params['height'] = min($params['height'], 100);
return $params;
});
Valters IT - Securing your digital assets with precision.
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.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.