CVE-2025-30877
Executive Summary
CVE-2025-30877 is a Missing Authorization vulnerability in the Quiz Cat WordPress plugin (versions ≤ 3.0.8) developed by Fatcatapps. This flaw allows unauthenticated attackers to exploit incorrectly configured access control security levels, potentially leading to unauthorized data exposure or manipulation of quiz results. The vulnerability has a low CVSS score of 2.7 due to limited impact, but it remains unpatched, posing a risk to WordPress sites using this plugin.
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
Supply Chain & Package Security
This vulnerability affects the WordPress plugin ecosystem. Quiz Cat is distributed via the official WordPress plugin repository. Since no patch is available, users must rely on manual mitigation or removal. The lack of vendor response increases supply chain risk for sites that depend on this plugin.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
- Base Score: 2.7 (Low)
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: None
- Integrity Impact: Low
- Availability Impact: None
Threat Level: Low. The vulnerability allows unauthorized access to non-sensitive data or manipulation of quiz settings, but does not lead to full compromise.
Deep Dive & Mechanics
The vulnerability resides in the Quiz Cat plugin's REST API or AJAX handlers, where access control checks are missing or improperly implemented. Specifically, endpoints that manage quiz results, settings, or user data do not verify the user's capabilities (e.g., edit_posts or manage_options). This allows any unauthenticated visitor to:
- View or modify quiz results.
- Access quiz configuration data.
- Potentially escalate privileges if combined with other flaws.
The issue is classified under CWE-862: Missing Authorization. The plugin fails to enforce proper capability checks before executing sensitive operations.
Vulnerable vs. Patched Code
Since no patch is available, the vulnerable code remains in production. Below is a hypothetical example of the vulnerable pattern:
Vulnerable Code (quiz-cat.php):
add_action('wp_ajax_nopriv_quiz_cat_get_results', 'quiz_cat_get_results');
function quiz_cat_get_results() {
$quiz_id = $_POST['quiz_id'];
$results = get_quiz_results($quiz_id);
echo json_encode($results);
wp_die();
}
Patched Code (hypothetical):
add_action('wp_ajax_nopriv_quiz_cat_get_results', 'quiz_cat_get_results');
function quiz_cat_get_results() {
if (!current_user_can('read')) {
wp_die('Unauthorized', 403);
}
$quiz_id = $_POST['quiz_id'];
$results = get_quiz_results($quiz_id);
echo json_encode($results);
wp_die();
}
The patch adds a capability check (current_user_can('read')) to ensure only authenticated users can access the endpoint.
Exploitation & Lab Setup
Red Team
Prerequisites:
- Target WordPress site with Quiz Cat ≤ 3.0.8 installed and activated.
- No authentication required.
Exploitation Steps:
- Identify the vulnerable endpoint (e.g.,
/wp-admin/admin-ajax.php?action=quiz_cat_get_results). - Send a crafted POST request with a valid
quiz_idparameter. - Observe the response containing quiz results or configuration data.
Example cURL Command:
curl -X POST http://target.com/wp-admin/admin-ajax.php \
-d "action=quiz_cat_get_results&quiz_id=1"
Blue Team
Detection:
- Monitor for unusual AJAX requests to
admin-ajax.phpwithactionparameters starting withquiz_cat_. - Look for requests from unauthenticated users (no
Cookieheader with WordPress auth cookies).
Mitigation:
- Disable the Quiz Cat plugin until a patch is available.
- Implement a Web Application Firewall (WAF) rule to block unauthenticated access to
quiz_cat_*actions.
Indicators of Compromise (IOCs)
- Network: HTTP requests to
/wp-admin/admin-ajax.phpwithaction=quiz_cat_*parameters. - Logs: WordPress debug logs showing
wp_ajax_nopriv_quiz_cat_*actions triggered by unauthenticated IPs. - File: Presence of
quiz-cat/quiz-cat.phpwith version ≤ 3.0.8.
Detection Engineering
YARA Rule
rule CVE_2025_30877_QuizCat_Missing_Auth {
meta:
description = "Detects Quiz Cat plugin files with missing authorization vulnerability"
author = "Valters IT"
date = "2025-04-17"
reference = "CVE-2025-30877"
strings:
$vuln_func = "wp_ajax_nopriv_quiz_cat_" nocase
$vuln_file = "quiz-cat.php" nocase
condition:
$vuln_file and $vuln_func
}
Sigma Rule
title: CVE-2025-30877 Quiz Cat Missing Authorization
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects unauthenticated AJAX requests to Quiz Cat plugin endpoints
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
c-uri|contains: '/wp-admin/admin-ajax.php'
cs-uri-query|contains: 'action=quiz_cat_'
condition: selection
falsepositives:
- Legitimate admin actions (rare)
level: medium
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-30877 Quiz Cat Missing Authorization"; flow:to_server; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=quiz_cat_"; http_client_body; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the Quiz Cat plugin until a patch is released.
- Implement a WAF rule to block unauthenticated requests to
quiz_cat_*AJAX actions. - Monitor logs for exploitation attempts.
Long-Term Fix:
- Contact the vendor for a patch or consider replacing the plugin with an alternative.
- Apply the principle of least privilege to all WordPress plugins.
Workaround:
- Add the following code to your theme's
functions.phpto block unauthenticated access:
add_action('init', function() {
if (defined('DOING_AJAX') && DOING_AJAX && !is_user_logged_in()) {
$action = $_REQUEST['action'] ?? '';
if (strpos($action, 'quiz_cat_') === 0) {
wp_die('Unauthorized', 403);
}
}
});
Valters IT
DevSecOps & Cyber Threat Intelligence
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.