MEDIUM 5.3

CVE-2026-9172: Devs Accounting WordPress Plugin Unauthenticated Data Deletion Vulnerability

The Devs Accounting plugin for WordPress contains a critical flaw that allows anyone on the internet to delete accounting records without logging in. A REST API endpoint meant to delete account data lacks proper access controls, making it publicly accessible. An attacker can craft a simple web request targeting any account ID to permanently remove (soft-delete) accounting records from the WordPress database. This affects all installations running version 1.2.0 and earlier.

Source data · NVD / CISA · public domain

CVSS
3.1 · 5.3 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
Weaknesses (CWE)
CWE-862
Affected products
0 configuration(s)
Published / Modified
2026-06-24 / 2026-06-25

NVD description (verbatim)

The Devs Accounting – Simple Accounting and Invoicing Solution plugin for WordPress is vulnerable to unauthorized modification/deletion of data due to a missing capability check on the delete_single_account() function in versions up to, and including, 1.2.0. The REST route 'devs-accounting/v1/delete-account/(?P<id>\d+)' is registered without any permission_callback, which causes WordPress to expose the endpoint to public, unauthenticated access. This makes it possible for unauthenticated attackers to soft-delete arbitrary accounting account records (wp_dac_accounts) by issuing a simple GET request to the endpoint with any account ID.

3 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

CVE-2026-9172 exploits a missing permission_callback on the REST route 'devs-accounting/v1/delete-account/(?P<id>\d+)' in the Devs Accounting plugin. The delete_single_account() function processes DELETE or GET requests without verifying user authentication or capabilities. WordPress defaults to allowing unauthenticated access when no permission_callback is specified. Attackers can soft-delete rows in the wp_dac_accounts table by issuing requests with arbitrary numeric account IDs. The vulnerability is classified as CWE-862 (Missing Authorization).

Business impact

Organizations relying on the Devs Accounting plugin risk data loss or corruption of critical financial records. Attackers could systematically delete customer accounts, invoice records, or transaction data, disrupting accounting workflows and creating compliance or audit trail problems. The ability to target specific account IDs means targeted attacks against particular clients or projects are feasible. Soft-deletion may allow recovery depending on backup practices, but the vulnerability enables malicious modification of financial records without detection unless logging is enabled.

Affected systems

The Devs Accounting – Simple Accounting and Invoicing Solution plugin for WordPress is affected in version 1.2.0 and all earlier versions. Any WordPress site with this plugin installed and activated is at risk. The vulnerability is unauthenticated and requires only network access to the WordPress site; no special network position or user privileges are needed to exploit it.

Exploitability

Exploitability is very high. The attack requires no authentication, no user interaction, and minimal technical sophistication. An attacker needs only to know or guess an account ID and send a single HTTP request. The CVSS 3.1 score of 5.3 (MEDIUM) reflects the integrity impact (unauthorized data deletion) balanced against the lack of confidentiality or availability impact in the vector itself, though business availability may be indirectly affected. The attack vector is network-based with low complexity and no privileges required.

Remediation

Upgrade to a patched version of the Devs Accounting plugin as soon as it becomes available from the vendor. Until a patch is released, disable or deactivate the plugin to eliminate the attack surface. If continued use is critical, consider implementing additional access controls at the web server or WAF level to restrict REST API endpoints to authenticated users, though this is a temporary mitigation and does not address the root cause.

Patch guidance

Monitor the plugin vendor's repository and security advisories for a patch version above 1.2.0. Verify patch availability before upgrading to confirm the fix addresses the missing permission_callback on the delete-account endpoint. Test the patched version in a staging environment to ensure no accounting workflows are disrupted. After patching, review audit logs for any unauthorized deletion attempts and verify account records against backups.

Detection guidance

Monitor HTTP access logs for requests to the REST endpoint 'wp-json/devs-accounting/v1/delete-account/' from non-administrative users or unauthenticated sessions. Look for GET or DELETE requests with numeric ID parameters. Enable WordPress security logging and REST API audit logging if available. Check the wp_dac_accounts table for unexpected soft-deletes (records with deletion timestamps or is_deleted flags set to true) that do not correlate with legitimate administrative actions. Correlate access logs with backup restore points to identify the time window of any unauthorized deletions.

Why prioritize this

Although the CVSS score is MEDIUM (5.3), this vulnerability warrants high prioritization due to its direct impact on financial data integrity and the trivial effort required to exploit it. Unauthenticated, network-accessible REST endpoints that modify or delete data pose significant risk to data governance, audit compliance, and business continuity. Organizations using this plugin should treat this as urgent.

Risk score, explained

The CVSS 3.1 score of 5.3 reflects a MEDIUM severity rating based on the vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N. The score accounts for network accessibility (AV:N), low attack complexity (AC:L), no privileges required (PR:N), no user interaction (UI:N), and an integrity impact (I:L) from unauthorized data deletion. The scope is unchanged (S:U) and there is no confidentiality or availability impact in the base vector. However, in practice, loss of accounting records can affect business availability and continuity, making this riskier than the numeric score alone suggests.

Frequently asked questions

Can this vulnerability be exploited if the plugin is disabled but not removed?

No. A disabled plugin does not load its functions or register REST routes. However, best practice is to remove unused plugins entirely rather than simply deactivate them, to reduce code footprint and risk of accidental re-activation.

Do I need a specific account ID to exploit this, or can the attacker guess or enumerate them?

Numeric account IDs are often sequential or discoverable through other plugin features or public-facing interfaces. An attacker can attempt requests with common IDs (1, 2, 3, etc.) or use information leakage from other endpoints to discover valid IDs. No special knowledge is required if IDs are predictable.

Will a Web Application Firewall (WAF) rule block this attack?

A WAF can be configured to block unauthenticated requests to the /wp-json/devs-accounting/v1/delete-account/ endpoint, but this is a compensating control only. The root cause—the missing permission_callback in the plugin code—must be fixed by patching the plugin.

Is there any indication this vulnerability is being actively exploited in the wild?

This vulnerability is not currently listed in the CISA KEV (Known Exploited Vulnerabilities) catalog, meaning there is no confirmed evidence of active exploitation at this time. However, the low barrier to exploitation and high discoverability make it likely that attackers will attempt it once awareness spreads.

This analysis is based on vulnerability data published as of 2026-06-25. Patch availability, affected versions, and vendor responses may change; consult the official vendor advisory and security announcements for the most current information. Exploit techniques or proof-of-concept code are not provided in this document. Organizations should test any patches in non-production environments before deployment. This document does not constitute legal advice or guarantee of protection against exploitation. Source: NVD (public-domain), retrieved 2026-07-30. Analysis generated by SEC.co (claude-haiku-4-5).