Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain administrator session
-
DeliveryOpen Settings page
-
ExploitSubmit malicious tax_rate_decimal_places value
-
ExecutionInjected clauses execute in ALTER TABLE
-
PersistCorrupt ip_tax_rates schema / drop columns
-
ImpactFinancial data structure damaged, app unavailable
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Parameterized queries, prepared statements
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Persistence The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated administrator account, because the exploited tax_rate_decimal_places value is set through the admin-only Settings page (Settings::index()) - this is the primary limiting factor and matches CVSS PR:H. The affected code path is present by default in InvoicePlane prior to 1.7.2 with no special feature or non-default configuration needed; any version below 1.7.2 is vulnerable once an attacker reaches the settings form. No user interaction beyond the attacker's own submission is required (UI:N), and the ALTER TABLE runs on the normal MySQL/MariaDB backing store. Exploitation is blocked by upgrading to 1.7.2, which integer-casts the value and enforces a 2-3 range. |
| Impact | The CVSS 3.1 vector (AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H, base 7.2) is internally consistent with the description: the vulnerable tax_rate_decimal_places setting is explicitly 'administrator-controlled', which correctly maps to PR:H. This is the single most important limiting signal - the attacker must already hold administrator credentials to reach Settings::index(), so this is a privilege-escalation-of-impact / post-auth integrity flaw, not a pre-auth mass-exploitation risk. No EPSS score, CISA KEV listing, or public POC is present in the input, so exploitation status is 'no public exploit identified at time of analysis.' The C:H rating is the weakest part of the vendor vector: the injection occurs inside an ALTER TABLE (DDL) statement whose realistic payoff is schema corruption (column removal/alteration), which cleanly supports the described I:H/A:H (permanent financial-data-structure damage and application unavailability) but makes classic data exfiltration harder than a SELECT-based SQLi - I temper confidentiality to C:L. Net: a genuine SQL injection worth patching, but real-world urgency is bounded by the admin prerequisite, so this is a moderate priority rather than an internet-facing emergency. |
| Exploit ScenarioDerived | An authenticated InvoicePlane administrator (or an attacker who has obtained admin credentials via phishing, credential reuse, or a separate session compromise) opens the Settings page and submits a crafted tax_rate_decimal_places value that breaks out of the DECIMAL(5, ...) clause and appends additional SQL to the ip_tax_rates ALTER TABLE statement. The injected clauses drop or alter required columns, permanently corrupting the financial schema and rendering the application unavailable. No public exploit code is identified, but the payload is trivial to construct given the direct string interpolation shown in the patch diff. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 25, 2026
SQL injection in InvoicePlane's tax-rate settings allows an authenticated administrator to inject arbitrary SQL fragments into the ALTER TABLE statement that rebuilds the ip_tax_rates schema, letting them alter or drop required database columns in every release prior to 1.7.2. Because the malicious value is changed through the admin-only Settings page, exploitation requires high privileges (CVSS PR:H); the outcome is persistent schema corruption affecting financial data structures and potential loss of application availability, with integrity and availability impact rated high. No public exploit code has been identified at time of analysis, and the issue is resolved by upgrading to 1.7.2.
RemediationAI
Vendor-released patch: upgrade to InvoicePlane 1.7.2 (https://github.com/InvoicePlane/InvoicePlane/releases/tag/v1.7.2), which integer-casts tax_rate_decimal_places and enforces the 2-to-3 range so the value can no longer add clauses to the ALTER TABLE statement; the underlying changes are in pull requests 1481 and 1488 and commits 8fe41750d7c6fd039ac7353e5311bf4c140c3436, efec2d28d574ca616f218d758bd5adaa9a60b3a0 and fca7792a24de0a749d881cbbe4af6f58e9545d20, with full details in the advisory at https://github.com/InvoicePlane/InvoicePlane/security/advisories/GHSA-34g5-4hfc-g983. If upgrading immediately is not possible, the compensating control that fits the exploit prerequisites is to restrict and audit administrator access, since the setting can only be reached through the admin-only Settings page (PR:H) - remove or tightly limit admin accounts, avoid shared or over-privileged admin credentials, and restrict the settings interface to trusted networks or IP allowlists; the trade-off is reduced administrative convenience and the risk that any remaining admin can still trigger the corrupting DDL. Because the injected clause runs as a schema-changing statement, also verify the ip_tax_rates table structure against a known-good baseline and keep verified database backups, since damage to financial data structures may require restoration rather than a code-only fix; disabling the tax-rate settings feature via code changes is possible but is itself an unsupported modification and may break invoice calculations, whereas patching to 1.7.2 removes the issue entirely.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is CWE-89 (SQL injection) arising from unsafe string interpolation in a DDL statement. InvoicePlane is a PHP application built on CodeIgniter; in Settings::index(), the administrator-controlled setting tax_rate_decimal_places was concatenated directly into an ALTER TABLE ... DECIMAL(5,{$settings['tax_rate_decimal_places']}) NOT NULL statement for the ip_tax_rates table. Because CodeIgniter's Query Builder cannot parameterize DDL statements, the developer used raw string interpolation instead of a bound value, so a crafted setting can terminate the DECIMAL clause and append additional SQL clauses to the schema-changing statement. The upstream fix (visible in PR 1481 and the associated commits) casts the setting to an integer with (int) and enforces a strict 2-to-3 range, rejecting invalid input with a new invalid_tax_rate_decimal_places language string before the ALTER TABLE executes. Affected deployments are self-hosted InvoicePlane instances running on a normal MySQL/MariaDB backing store, identified by CPE cpe:2.3:a:invoiceplane:invoiceplane:*:*:*:*:*:*:*:*, with no non-default configuration required for the vulnerable code path to be reachable.
Know when Invoiceplane gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
Admin-only setting drives PR:H; injection is straightforward (AC:L) over the web app (AV:N); DDL injection yields schema corruption so I:H/A:H, but limited data-read capability tempers confidentiality to C:L.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
InvoicePlane is a self-hosted open source application for managing invoices, clients, and payments. Prior to 1.7.2, InvoicePlane interpolates the administrator-controlled tax_rate_decimal_places setting into an ALTER TABLE statement for ip_tax_rates in Settings::index() without strict integer validation. A crafted setting value can add clauses to the schema-changing statement and remove or alter required database columns. The resulting schema corruption can permanently modify financial data structures and make the application unavailable. This vulnerability is fixed in 1.7.2.
Technical POC Analysis
CWE-89 (improper neutralization of special elements in an SQL command), manifesting here as DDL injection rather than classic data exfiltration.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
InvoicePlane billing and invoicing deployments older than 1.7.2 contain a database injection flaw in the tax-rate configuration page that can corrupt core financial tables. Only users holding full administrator rights can trigger it, but success permanently damages the database schema that stores tax and invoice data, potentially taking the application offline and undermining the accuracy of financial records. Leadership should care because an internal privileged account - or one compromised through credential theft - could disrupt billing operations and data integrity across the finance function.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.
More in Invoiceplane
View allInvoicePlane through 1.6.3 allows authenticated users to upload PHP files as attachments that can be executed remotely.
Remote Code Execution in InvoicePlane self-hosted invoicing application through code injection. PoC and patch available.
InvoicePlane version 1.4.10 is vulnerable to a Arbitrary File Upload resulting in an authenticated user can upload a mal
In InvoicePlane 1.5.11 a misconfigured web server allows unauthenticated directory listing and file download. Rated high
Unauthenticated attackers can read arbitrary files from InvoicePlane servers through path traversal in the Guest control
An SQL injection vulnerability in InvoicePlane through 1.6.3 has been identified in "maxQuantity" and "minQuantity" para
InvoicePlane (all versions tested as of December 2024) v.1.6.11 and before contains a remote code execution vulnerabilit
Cross Site Scripting (XSS) vulnerability in InvoicePlane 1.6 via filter_product input to file modal_product_lookups.php.
An XSS issue was discovered in InvoicePlane 1.5.10 via the "Quote PDF Password(Optional)" field. Rated medium severity (
Stored XSS via SVG file upload in InvoicePlane 1.7.0 Login Logo functionality allows authenticated administrators to inj
Stored XSS in InvoicePlane 1.7.0's invoice editing function fails to sanitize the invoice_number parameter, allowing aut
Stored XSS in InvoicePlane 1.7.0 via malicious SVG file upload in the Invoice Logo function allows authenticated adminis
EUVD-2026-87131
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB