Skip to main content

InvoicePlane CVE-2026-54790

| EUVDEUVD-2026-87121 MEDIUM
SQL Injection (CWE-89)
2026-09-25 GitHub_M
6.0
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain admin access to InvoicePlane
  2. Delivery
    Store crafted custom_field_table value
  3. Exploit
    Open custom-field edit form
  4. Execution
    Mdl_custom_fields::used() concatenates value into query
  5. Persist
    Second-order SQL executes
  6. Impact
    Read arbitrary schema or cause DoS

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 InvoicePlane administrator account (PR:H): the vulnerable custom_field_table value can only be written by an admin managing custom fields, per the description ('administrator-controlled custom_field_table value'). The injection is second-order - it does not execute at save time but when the custom-field edit form is later opened and Mdl_custom_fields::used() builds its query. Affected versions are all releases prior to 1.7.2. What LIMITS exploitation: the mandatory administrator privilege level, which restricts this to malicious insiders or attackers who have already compromised an admin session, meaning it grants broader database schema read rather than initial unauthenticated access.

Impact

This is a genuine second-order SQL injection (CWE-89) but a modest-priority one because exploitation requires administrator privileges. The provided CVSS vector (CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:L/A:L, 6.0 Medium) is internally consistent with the description: the malicious custom_field_table value can only be stored by an administrator (PR:H), and the injection fires when the custom-field edit form is later opened (a second-order trigger performed by the same privileged operator, so UI:N). The C:H rating is defensible - the source-code evidence confirms the tainted value is concatenated into FROM-table and WHERE-column identifier positions in Mdl_custom_fields::used(), which the description says allows querying arbitrary schema data. No EPSS score, no CISA KEV listing, and no public exploit are present in the input, so there is no signal of active or automated exploitation. The core caveat is the trust model: an attacker must already hold administrator access to InvoicePlane, which substantially blunts real-world urgency - a compromised or malicious admin gaining broader DB read is an escalation-of-scope issue rather than an initial-access one. Signals are consistent (no conflicts between CVSS, CWE, and the confirmed patch), so this is a real-but-not-urgent Medium: patch on a normal cycle.

Exploit ScenarioDerived

An authenticated InvoicePlane administrator (or an attacker who has already seized an admin session) saves a custom field with a crafted custom_field_table value containing SQL syntax, which is stored without validation. When the custom-field edit form is subsequently opened, Mdl_custom_fields::used() concatenates that stored value into the query's table and column identifier positions, executing the injected SQL and returning arbitrary schema data or triggering application errors/DoS. No public exploit code is identified at time of analysis; exploitation is deterministic (AC:L) but gated behind administrator privilege (PR:H).

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 25, 2026

Authenticated InvoicePlane administrators can store a crafted custom_field_table value that is later concatenated into SQL identifier positions when the custom-field edit form is opened, producing a second-order SQL injection in releases prior to 1.7.2. The flaw can expose arbitrary database schema data and cause application errors or denial of service, but it requires a high-privilege administrator account (PR:H), so it is a modest-priority issue that mainly affects malicious insiders or already-compromised admin sessions. Vendor-released patch: 1.7.2; no public exploit identified at time of analysis.

RemediationAI

Upgrade to InvoicePlane 1.7.2 or later, which is the vendor-released patch and includes the validated custom_field_table handling from PR 1573 (commit d3724169420758de7687c1a52c0003277aedfa95); see https://github.com/InvoicePlane/InvoicePlane/security/advisories/GHSA-vv4r-cgmw-w6x2 and https://github.com/InvoicePlane/InvoicePlane/releases/tag/v1.7.2. If immediate upgrade is not possible, restrict administrator access to trusted personnel and treat admin sessions as high-value compromise targets, since exploitation requires PR:H; enforce strong authentication and MFA where available, and review admin accounts for signs of compromise. Disabling or restricting the custom-fields module would remove the attack surface but sacrifices legitimate custom-field functionality, and database-level restrictions or application-level allowlisting of custom_field_table values can compensate until patched.

Affected VersionsENISA

InvoicePlane < 1.7.2

Affected Packages

euvd invoiceplane fix: 1.7.2

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

InvoicePlane is a self-hosted PHP invoice, client, and payment management application; the affected CPE cpe:2.3:a:invoiceplane:invoiceplane:*:*:*:*:*:*:*:* covers releases before 1.7.2. The root cause is CWE-89 SQL injection in the custom-fields model: an administrator-controlled custom_field_table value is saved without being validated against the list of allowed custom-field table names, and Mdl_custom_fields::used() later concatenates that stored value into the FROM table and WHERE column identifier positions. This makes it second-order: the payload is persisted first and executes when the custom-field edit form is opened; related code in Mdl_custom_values::used() can also be reached, and the fix in 1.7.2 adds in_list validation and checks that custom_field_table is within array_keys(custom_tables()) before use. The provided PR and commit evidence (PR 1573, commit d3724169420758de7687c1a52c0003277aedfa95) confirms the upstream fix.

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

Vendor (GitHub_M) PRIMARY 6.0 MEDIUM
AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:L/A:L
vuln.today AI 6.0 MEDIUM

Admin-only storage of the tainted value forces PR:H; the same operator triggers the second-order query so UI:N; arbitrary schema read gives C:H, with limited I/A from errors/DoS.

3.1 AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:L/A:L
4.0 AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:L/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
High
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
Low
Availability
Low

Lifecycle Timeline

1
Patch available
Sep 25, 2026 - 17:04 EUVD

DescriptionCVE.org

InvoicePlane is a self-hosted open source application for managing invoices, clients, and payments. Prior to 1.7.2, InvoicePlane stores an administrator-controlled custom_field_table value without validating it against the allowed custom-field table names. Mdl_custom_fields::used() later concatenates that stored value into the FROM table and WHERE column identifier positions, so opening the custom-field edit form executes a second-order SQL injection. The injection can query arbitrary schema data and can cause application errors or denial of service. This issue is fixed in version 1.7.2.

Threat Intelligence Overview

EPSS Score
0.2%
Top 87% exploitable
Prevalence
Low
niche self-hosted open-source invoicing app, limited enterprise footprint
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

30
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +30
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

CVE-2025-67084 CRITICAL POC
9.9 Jan 15

InvoicePlane through 1.6.3 allows authenticated users to upload PHP files as attachments that can be executed remotely.

CVE-2026-25548 CRITICAL POC
9.1 Feb 18

Remote Code Execution in InvoicePlane self-hosted invoicing application through code injection. PoC and patch available.

CVE-2017-1000238 HIGH POC
8.8 Nov 17

InvoicePlane version 1.4.10 is vulnerable to a Arbitrary File Upload resulting in an authenticated user can upload a mal

CVE-2021-29024 HIGH POC
7.5 May 17

In InvoicePlane 1.5.11 a misconfigured web server allows unauthenticated directory listing and file download. Rated high

CVE-2026-23491 HIGH POC
7.5 Feb 18

Unauthenticated attackers can read arbitrary files from InvoicePlane servers through path traversal in the Guest control

CVE-2025-67082 MEDIUM POC
6.5 Jan 15

An SQL injection vulnerability in InvoicePlane through 1.6.3 has been identified in "maxQuantity" and "minQuantity" para

CVE-2024-56975 CRITICAL
9.8 Mar 28

InvoicePlane (all versions tested as of December 2024) v.1.6.11 and before contains a remote code execution vulnerabilit

CVE-2023-23011 MEDIUM POC
6.1 Feb 07

Cross Site Scripting (XSS) vulnerability in InvoicePlane 1.6 via filter_product input to file modal_product_lookups.php.

CVE-2018-12255 MEDIUM POC
6.1 Jul 03

An XSS issue was discovered in InvoicePlane 1.5.10 via the "Quote PDF Password(Optional)" field. Rated medium severity (

CVE-2026-24745 MEDIUM POC
5.7 Feb 18

Stored XSS via SVG file upload in InvoicePlane 1.7.0 Login Logo functionality allows authenticated administrators to inj

CVE-2026-24744 MEDIUM POC
5.7 Feb 18

Stored XSS in InvoicePlane 1.7.0's invoice editing function fails to sanitize the invoice_number parameter, allowing aut

CVE-2026-24743 MEDIUM POC
5.7 Feb 18

Stored XSS in InvoicePlane 1.7.0 via malicious SVG file upload in the Invoice Logo function allows authenticated adminis

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy