☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 4.3 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N 🐛 CWE-862
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2024-1090

CVE-2024-1090 Supply Chain Attack in Imagerecycle
📅 PUBLISHED: 2024-02-20 18:56 UTC 🔄 UPDATED: 2026-08-12 14:53 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.21%
👁️
0.21% probability
5.4× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 4.3
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: N User Interaction None
S: U Scope Unchanged
C: N Confidentiality None
I: L Integrity Low
A: N Availability None
4.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-1090 is a medium-severity vulnerability in the ImageRecycle pdf & image compression plugin for WordPress, affecting all versions up to and including 3.1.13. The flaw resides in the stopOptimizeAll function, which lacks a proper capability check, allowing authenticated attackers with subscriber-level access or higher to modify image optimization settings without authorization. This unauthorized modification can lead to denial of service or manipulation of compression processes, impacting site performance and resource usage. As a WordPress plugin vulnerability, it is part of the broader WordPress ecosystem and should be addressed within that context.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability is specific to the WordPress plugin ecosystem. The ImageRecycle plugin is distributed via the WordPress Plugin Directory and is not part of NPM, PyPI, Go, or Ruby registries. No supply chain package security implications are present beyond the standard WordPress plugin update mechanism.

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 (Subscriber-level)
  • User Interaction: None
  • Scope: Unchanged
  • Confidentiality Impact: None
  • Integrity Impact: Low
  • Availability Impact: None

The threat level is medium due to the low privileges required and the potential for unauthorized modification of settings, which could degrade service or cause misconfiguration.

Deep Dive & Mechanics

The vulnerability is a Missing Authorization (CWE-862) in the stopOptimizeAll AJAX action handler. The plugin registers an AJAX action for authenticated users but fails to verify that the user has the necessary capabilities (e.g., manage_options or edit_posts) before processing the request. This allows any authenticated user, including subscribers, to call the function and modify optimization settings.

The stopOptimizeAll function is intended to stop all ongoing image optimization processes. Without proper authorization, an attacker can:

  • Halt legitimate optimization tasks, causing denial of service.
  • Reset or alter optimization parameters, leading to performance degradation.
  • Potentially trigger repeated optimization cycles, consuming server resources.

The attack is performed via a crafted HTTP POST request to the WordPress admin-ajax.php endpoint with the action parameter set to the vulnerable function.

Vulnerable vs. Patched Code

Vulnerable Code (<= 3.1.13):

add_action('wp_ajax_stopOptimizeAll', 'stopOptimizeAll');
function stopOptimizeAll() {
    // No capability check
    update_option('imagerecycle_stop_optimization', true);
    wp_die();
}

Patched Code (Hypothetical):

add_action('wp_ajax_stopOptimizeAll', 'stopOptimizeAll');
function stopOptimizeAll() {
    if (!current_user_can('manage_options')) {
        wp_die('Unauthorized', 403);
    }
    update_option('imagerecycle_stop_optimization', true);
    wp_die();
}

The patch adds a capability check using current_user_can('manage_options') to ensure only administrators can invoke the function.

Exploitation & Lab Setup

Red Team

Prerequisites:

  • A WordPress site with ImageRecycle plugin version <= 3.1.13.
  • An authenticated user account with subscriber-level access or higher.
  • A valid WordPress nonce (if required by the plugin, though the vulnerability suggests it may not be).

Exploitation Steps:

  1. Log in as a subscriber.
  2. Obtain a valid WordPress nonce for the AJAX action (if needed, by inspecting the page source or using a tool like Burp Suite).
  3. Send a POST request to /wp-admin/admin-ajax.php with the following parameters:
    • action=stopOptimizeAll
    • _ajax_nonce=<nonce> (if required)
  4. The server will process the request and modify the optimization settings.

Example cURL Command:

curl -X POST https://target.com/wp-admin/admin-ajax.php \
  -d "action=stopOptimizeAll&_ajax_nonce=1234567890" \
  --cookie "wordpress_logged_in_<hash>=<session_cookie>"

Blue Team

Detection:

  • Monitor for AJAX requests to admin-ajax.php with the action=stopOptimizeAll parameter from low-privileged users.
  • Look for sudden changes in image optimization settings or unexpected halts in compression processes.
  • Review server logs for 403 errors if a patch is applied.

Hunting:

  • Search for stopOptimizeAll in web server access logs.
  • Correlate with user roles to identify unauthorized access attempts.

Indicators of Compromise (IOCs)

  • Network:
    • POST requests to /wp-admin/admin-ajax.php with action=stopOptimizeAll.
    • User-Agent strings from automated tools (e.g., curl, Python requests).
  • Host:
    • Changes to the imagerecycle_stop_optimization option in the WordPress database.
    • Unexpected halts in image compression tasks.
  • Logs:
    • WordPress debug logs showing stopOptimizeAll calls from non-admin users.

Detection Engineering

YARA Rule

rule Detect_ImageRecycle_StopOptimizeAll_Exploit {
    meta:
        description = "Detects attempts to exploit CVE-2024-1090 in ImageRecycle plugin"
        author = "Valters IT"
        date = "2024-01-01"
        reference = "CVE-2024-1090"
    strings:
        $ajax_action = "stopOptimizeAll"
        $admin_ajax = "admin-ajax.php"
    condition:
        $ajax_action and $admin_ajax
}

Sigma Rule

title: ImageRecycle CVE-2024-1090 Exploitation Attempt
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects unauthorized AJAX requests to stopOptimizeAll in ImageRecycle plugin
author: Valters IT
date: 2024/01/01
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: 'POST'
        cs-uri-query|contains: 'action=stopOptimizeAll'
    condition: selection
falsepositives:
    - Legitimate admin actions (if patched)
level: medium

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (
    msg:"CVE-2024-1090 ImageRecycle stopOptimizeAll Exploit Attempt";
    flow:to_server,established;
    content:"POST"; http_method;
    content:"admin-ajax.php"; http_uri;
    content:"action=stopOptimizeAll"; http_client_body;
    classtype:attempted-admin;
    sid:1000001;
    rev:1;
)

Remediation & Mitigation

Immediate Actions:

  1. Update the plugin: If a patched version becomes available, update to the latest version immediately.
  2. Disable the plugin: If no patch is available, consider disabling the ImageRecycle plugin until a fix is released.
  3. Restrict user roles: Remove subscriber-level access from untrusted users or implement additional authentication layers.

Long-term Measures:

  • Implement a Web Application Firewall (WAF) rule to block requests to admin-ajax.php with action=stopOptimizeAll from non-admin users.
  • Regularly audit WordPress plugins for missing capability checks.
  • Enforce the principle of least privilege for all user roles.

Workaround:

  • Add a custom capability check via a WordPress plugin or theme functions.php:
add_action('wp_ajax_stopOptimizeAll', function() {
    if (!current_user_can('manage_options')) {
        wp_die('Unauthorized', 403);
    }
    // Original function code here
}, 1);

Valters IT
Securing Digital Frontiers

👁️ SHODAN DORKS (THREAT HUNTING)

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.

http.title:"ImageRecycle"
http.html:"wp-content/plugins/imagerecycle-pdf-image-compression"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2024-1090/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.