Skip to main content

InvoicePlane CVE-2026-85292

| EUVDEUVD-2026-87125 MEDIUM
Incorrect Comparison (CWE-697)
2026-09-25 GitHub_M
4.8
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Reach InvoicePlane using a non-standard session backend
  2. Delivery
    Obtain/hold session with unexpected scalar user_type
  3. Exploit
    Loose `!=` role check type-juggles to pass
  4. Execution
    Bypass User_Controller authorization gate
  5. Impact
    Access protected/privileged functionality

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Incorrect comparison
Exploitation Conditions

Requires the InvoicePlane instance to be configured with a non-standard/custom session backend that returns unexpected scalar types (non-string values such as integers or booleans) for the session user_type key; against the default CodeIgniter session store (string values) the loose != check behaves correctly and the bypass does NOT occur. The vulnerable code path is the User_Controller constructor authorization gate comparing session user_type (required_key) against the required role (required_val). Limiting factors: exploitation is entirely contingent on this atypical, operator-chosen session configuration (making it non-default and raising attack complexity), affects only versions prior to 1.7.2, and yields only limited (low) confidentiality/integrity impact per the vendor and CVSS.

Impact

This is a high-CVSS-context-but-genuinely-low-real-risk authorization flaw. The CVSS 3.1 vector (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N, base 4.8) already signals modest impact (C:L/I:L, no availability) and elevated attack complexity (AC:H), and the vendor/GitHub advisory (GHSA-346c-gqqq-mrm2) rates the fix 'Low'. The decisive limiter is stated plainly in the description: the type-juggling bypass only materializes 'under a non-standard session backend that returns unexpected scalar types.' CodeIgniter's default session storage returns strings, so the loose != comparison behaves correctly out of the box - meaning stock InvoicePlane deployments are NOT exploitable, which is why AC:H is appropriate. No EPSS score, no CISA KEV listing, and no public exploit are present in the input. PR:N in the vector indicates no authentication is required, but exploitation is gated on an operator-chosen, atypical session configuration, so widespread opportunistic exploitation is implausible; any real risk is confined to bespoke deployments. Signals are internally consistent (low CVSS + Low vendor rating + no exploitation evidence), so this is a hygiene/defense-in-depth fix rather than an urgent patch priority.

Exploit ScenarioDerived

An InvoicePlane instance is deployed with a custom/non-default session backend (e.g., a driver or store that returns integers, booleans, or other non-string scalars for the stored user_type). An unauthenticated or low-context attacker interacts with the app such that the session-provided user_type is a scalar that PHP's loose != operator juggles into equaling the required role, passing the User_Controller authorization gate and granting access to a protected/privileged area. No public exploit code is identified at time of analysis, and the attack is only reproducible against the atypical session configuration.

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

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

Alert me

AnalysisAIv1 – Sep 25, 2026

Authorization bypass in InvoicePlane versions prior to 1.7.2 lets unauthenticated remote attackers satisfy the application's primary role check when the instance is configured with a non-standard session backend that returns non-string scalar values for the session user_type key; the User_Controller constructor compares that session value against the required role using PHP's loose inequality operator, so type juggling can pass a check it should fail. Against the default CodeIgniter session store, which returns strings, the comparison behaves correctly and the bypass does not occur, which is why the assessed CVSS is 4.8 with high attack complexity and impact limited to low confidentiality and integrity. No public exploit identified at time of analysis.

RemediationAI

Vendor-released patch: 1.7.2 - upgrade InvoicePlane to version 1.7.2 or later, which changes the User_Controller role check from loose inequality to the strict, explicitly cast comparison ! (string) $required_val (PR https://github.com/InvoicePlane/InvoicePlane/pull/1640, commit https://github.com/InvoicePlane/InvoicePlane/commit/efa9f576faa93ba64bef52b09b119e81a5b22fcf, advisory https://github.com/InvoicePlane/InvoicePlane/security/advisories/GHSA-346c-gqqq-mrm2, release https://github.com/InvoicePlane/InvoicePlane/releases/tag/v1.7.2). If upgrading immediately is not possible, the most direct compensating control is to run the default CodeIgniter session backend, which returns string values and makes the loose comparison behave correctly; the trade-off is that changing session drivers generally invalidates existing sessions and forces users to log in again, and this measure only holds while the default backend is in use. As an alternative, backport the one-line change in application/core/User_Controller.php so the check reads ! (string) $required_val, accepting that the edit is overwritten by every core upgrade and must be reapplied. Since exploitation is unauthenticated and requires only a reachable instance with the atypical session configuration, reduce exposure by putting the InvoicePlane instance behind an authenticating reverse proxy, VPN or IP allow-list rather than publishing it directly to the internet, and review application and web server logs for role-check anomalies; these are compensating controls only and do not remediate the underlying comparison flaw.

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

CWE-697 (Incorrect Comparison) is the root-cause class here: before the fix, InvoicePlane's authorization gate in application/core/User_Controller.php performed $this->session->userdata($required_key) != $required_val using PHP's loose inequality operator. PHP's loose comparison juggles types, so values such as integers, booleans and other scalars can compare equal to a role string without being strictly that role; if a deployment swaps CodeIgniter's default session handler for a custom backend that returns non-string scalars for the user_type key, the constructor's role check can be satisfied by an unintended value, bypassing authentication/authorization on every controller that inherits this class. The affected technology stack is PHP with the CodeIgniter framework and its Session library, and the sole identifier in the CPE data is cpe:2.3:a:invoiceplane:invoiceplane:*:*:*:*:*:*:*:* (all releases before 1.7.2). The upstream fix hardens the comparison to !== (string) $required_val, pairing a strict operator with an explicit string cast (PR #1640, commit efa9f576faa93ba64bef52b09b119e81a5b22fcf, shipped in v1.7.2).

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 4.8 MEDIUM
AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N
vuln.today AI 4.8 MEDIUM

Network-reachable auth gate with no auth needed (PR:N), but AC:H because exploitation depends on a non-default session backend returning non-string scalars; bypass yields limited C:L/I:L, no A impact.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

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's User_Controller compares the session user_type value with the required role by using PHP's loose inequality operator. Under a non-standard session backend that returns unexpected scalar types, type juggling can cause a value that is not strictly the required role to pass the authorization check. This can permit authentication or authorization bypass in affected session configurations. This issue is fixed in version 1.7.2.

Threat Intelligence Overview

EPSS Score
0.3%
Top 85% exploitable
Prevalence
Low
self-hosted open-source invoicing app, niche small-business footprint
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

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.3%
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
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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