CVE-2026-15104: SQL Injection in BetterDocs WordPress Plugin – Patch & Detection Guide
The BetterDocs plugin for WordPress—used to build internal documentation, knowledge bases, and FAQ systems—contains a SQL injection vulnerability in versions up to 4.6.0. An authenticated user with custom-level access or higher can manipulate a language parameter to inject malicious SQL commands and extract sensitive data from the site's database. The attack requires a supported multilingual plugin (WPML, Polylang, qTranslate, Weglot, or TranslatePress) to be active, which gates the vulnerable code path.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 6.5 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
- Weaknesses (CWE)
- CWE-89
- Affected products
- 0 configuration(s)
- Published / Modified
- 2026-07-10 / 2026-07-10
NVD description (verbatim)
The BetterDocs – AI Documentation, Knowledge Base, Docs, Wikis, FAQ with Chatbot plugin for WordPress is vulnerable to generic SQL Injection via the 'lang' parameter in all versions up to, and including, 4.6.0 due to insufficient escaping on the user supplied parameter and lack of sufficient preparation on the existing SQL query. This makes it possible for authenticated attackers, with custom-level access and above, to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database. Exploitation requires a supported multilingual plugin (WPML, Polylang, qTranslate, Weglot, or TranslatePress) to be active on the site, as the vulnerable code path is gated by Helper::is_multilingual_active().
5 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
CVE-2026-15104 is a database query injection flaw (CWE-89) in BetterDocs versions ≤4.6.0. The 'lang' parameter is passed into SQL queries without adequate escaping or prepared statement binding. The vulnerability is conditional on the Helper::is_multilingual_active() function returning true, meaning at least one of five multilingual plugins must be enabled. An authenticated attacker with custom-level access (or roles above it) can craft malicious input to append arbitrary SQL clauses, bypassing the intended query logic and accessing unauthorized database records. The CVSS 3.1 score of 6.5 reflects confidentiality risk with no integrity or availability impact, assuming the attacker already holds valid WordPress credentials.
Business impact
Data breach risk is the primary concern. Attackers with WordPress accounts (even low-privilege ones) can extract customer records, user credentials, private documentation, or other sensitive business information stored in the database. For organizations using BetterDocs to host proprietary technical documentation or internal wikis, unauthorized disclosure could expose architectural details, API keys, or confidential processes. The impact is contained to confidentiality—the flaw does not allow data modification or denial of service—but the threat increases if the site also stores regulated data (PII, PHI, PCI) that would trigger compliance incident response.
Affected systems
Any WordPress site running BetterDocs plugin version 4.6.0 or earlier AND with at least one of these active: WPML, Polylang, qTranslate, Weglot, or TranslatePress. If a site uses BetterDocs but has no multilingual plugin enabled, the vulnerable code path is not reachable and the site is not affected. Organizations should inventory BetterDocs deployments, check version numbers, and verify which multilingual plugins are enabled.
Exploitability
Exploitation requires valid WordPress authentication credentials and custom-level access or higher—a meaningful barrier, but not prohibitive. Many WordPress sites have looser role management, and custom user accounts for documentation editors or contributors may exceed the minimum privilege needed. An attacker must also have direct knowledge or discovery of the 'lang' parameter and its injection point. No public exploit code or detailed technical walkthrough is known to be in active circulation as of the publication date, but the vulnerability is straightforward SQL injection and would be trivial for a competent adversary with valid credentials. The conditional dependency on a multilingual plugin being active does limit the total attack surface.
Remediation
Update BetterDocs to the latest version above 4.6.0 as soon as the vendor releases a patch. Until then, mitigate by (1) disabling or removing the BetterDocs plugin if not actively in use, (2) temporarily deactivating all multilingual plugins to block the vulnerable code path (if operationally feasible), or (3) restricting WordPress user roles to prevent non-administrative accounts from accessing documentation editing features. Apply the principle of least privilege: audit existing user accounts and downgrade roles where possible.
Patch guidance
Monitor the BetterDocs plugin repository and the vendor's security advisory for version 4.6.1 or later. Verify compatibility notes before upgrading. Test the update in a staging environment first to ensure no functional regression with your multilingual setup. Once patched versions are available, schedule patching within 2–4 weeks given the MEDIUM severity and the requirement for authenticated access. Organizations with high-sensitivity data should prioritize sooner.
Detection guidance
Monitor WordPress access logs for POST/GET requests containing unusual SQL keywords ('UNION', 'SELECT', 'DROP', 'INSERT') in the 'lang' parameter or related query strings. Check application firewall (WAF) logs for SQL injection attempts. Review database query logs for unexpected UNION-based or stacked query patterns originating from authenticated WordPress sessions. Enable WordPress security plugins (e.g., Wordfence, Sucuri) to flag suspicious SQL strings in request logs. Audit WordPress user accounts with custom-level access or above to identify unexpected or dormant accounts that could be leveraged.
Why prioritize this
Although listed as MEDIUM severity with a CVSS score of 6.5, the vulnerability merits near-term attention because: (1) it affects a publicly available, widely used documentation plugin; (2) exploitation requires only existing credentials, not zero-day access; (3) the impact is confidentiality breach, which can be damaging in regulated or competitive environments; (4) the conditional gate (multilingual plugin active) is a common deployment pattern. Prioritize organizations with BetterDocs + multilingual setup and sensitive data in the database.
Risk score, explained
CVSS 3.1 score of 6.5 (MEDIUM) reflects: Network-accessible attack surface (AV:N), low attack complexity (AC:L), and requirement for low-privilege authentication (PR:L), resulting in a high confidentiality impact (C:H) with no integrity or availability impact (I:N, A:N). The 'low' privilege requirement—not 'none'—and the absence of integrity or availability risk prevent a higher score. The conditional nature of the exploit (multilingual plugin must be active) is not quantified in CVSS but lowers real-world risk for organizations without multilingual support enabled.
Frequently asked questions
Do we need to patch if we use BetterDocs but no multilingual plugins?
No. The vulnerable code path is protected by a check for active multilingual plugins. If you have not installed or enabled WPML, Polylang, qTranslate, Weglot, or TranslatePress, the injection vector is not reachable. However, verify your plugin list to be certain.
Can unauthenticated attackers exploit this vulnerability?
No. The flaw requires valid WordPress login credentials with at least custom-level access. Attackers without an active account or with insufficient role permissions cannot trigger the vulnerable code. That said, this means internal threats or compromised low-privilege accounts pose a meaningful risk.
What data is at risk if this is exploited?
Any sensitive information stored in the WordPress database could be extracted: user records, email addresses, post content, custom database tables, API keys, or other metadata. The risk depends on what data your site stores. If BetterDocs is used for public-facing documentation only and the database contains no PII or secrets, risk is lower; if the database includes customer records or credentials, risk is higher.
How do I check if my site is vulnerable?
Visit wp-admin, go to Plugins, and check if BetterDocs is installed and active, and its version number (should be ≤4.6.0 to be vulnerable). Then verify whether any of WPML, Polylang, qTranslate, Weglot, or TranslatePress are also active. If yes to both, your site is vulnerable and should be patched or mitigated immediately.
This analysis is based on published vulnerability data current as of the advisory date. Exploit details, patch availability, and affected product lists may change; verify against the official BetterDocs security advisory and WordPress plugin repository before implementing remediation. Organizations should conduct their own risk assessment and testing in a sandbox environment. SEC.co does not guarantee the completeness or accuracy of third-party vendor information and recommends independent verification of all patch versions and compatibility statements. Source: NVD (public-domain), retrieved 2026-08-17. Analysis generated by SEC.co (claude-haiku-4-5).
Weaknesses (CWE)
Related vulnerabilities
- CVE-2025-53648MEDIUMSQL Misconfiguration in Apache Gravitino UI – MEDIUM Severity
- CVE-2025-71332MEDIUMSQL Injection in Flowise importChatflows API – MEDIUM Severity Credential Extraction
- CVE-2026-0075MEDIUMAndroid SQL Injection in Contacts Database – Privilege Escalation Risk
- CVE-2026-10039MEDIUMFrontend Admin WordPress Plugin SQL Injection Vulnerability
- CVE-2026-10155MEDIUMSQL Injection in Bdtask Multi-Store Inventory Management System 1.0
- CVE-2026-10170MEDIUMSQL Injection in code-projects Visitor Management System 1.0
- CVE-2026-10171MEDIUMSQL Injection in code-projects Online Music Site 1.0 AdminUpdateAlbum.php
- CVE-2026-10176MEDIUMSQL Injection in Aider-AI Aider 0.86.3 Code Generation