Skip to main content

InvoicePlane EUVDEUVD-2026-88481

| CVE-2026-100371 HIGH
Incorrect Authorization (CWE-863)
2026-09-28 GitHub_M
8.7
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as secondary administrator
  2. Delivery
    Edit primary admin account via Users::form()
  3. Exploit
    Rewrite user_email to attacker-controlled address
  4. Execution
    Trigger public password-recovery for user_id=1
  5. Persist
    Receive reset token at attacker email
  6. Impact
    Take over primary administrator account

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
MITRE ATT&CK

1 technique across 1 tactic: Privilege Escalation

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 secondary administrator account (user_type=1, user_id != 1) on the InvoicePlane instance. The exploit abuses Users::form() which lacks the object-level authorization check that guards Users::change_password() and Users::delete(), combined with user_email being absent from PROTECTED_FIELDS. The second stage relies on the built-in public/logged-out password-recovery flow (sessions/passwordreset) that resolves accounts by user_email. Limiting factors: attacker must already hold an admin account (not unauthenticated despite the CVSS PR:N), and only affects InvoicePlane 1.7.2 prior to commit 8616fa4; no user interaction from the victim is needed and no non-default configuration is required.

Impact

This is a genuine authorization defect (CWE-863, broken object-level authorization) confirmed by a vendor GitHub Security Advisory (GHSA-77hm-22wp-96wp) and a patch commit (8616fa4), with corroborating PR diff evidence showing the incomplete prior fix (PR #1638). The vendor CVSS 4.0 vector (AV:N/AC:L/PR:N/UI:N/VC:N/VI:H) yields 8.7 (High), but PR:N is inconsistent with the description: exploitation REQUIRES an authenticated secondary administrator account (user_type=1, user_id != 1). The network vector and low complexity are accurate, but privilege requirement should be PR:H/PR:L, not PR:N - this materially lowers real-world risk versus the headline score. No EPSS score, no CISA KEV listing, and no public POC were provided, so there is no evidence of active or imminent exploitation. The realistic risk is an insider/second-admin privilege-escalation-to-primary-admin path rather than an internet-facing unauthenticated compromise. Priority is moderate: high impact (full primary-admin takeover) but a meaningful precondition (existing admin access) and a niche product footprint temper urgency. EPSS/KEV absence is not itself an error but reinforces that this is not a mass-exploitation candidate.

Exploit ScenarioDerived

A malicious or compromised secondary administrator edits the primary administrator's account via Users::form(), rewriting user_email (not covered by PROTECTED_FIELDS or any object-level check) to an address they control. They then trigger the public logged-out password-recovery flow, which resolves the account by user_email, receive the reset token, and take over user_id=1. No public exploit code was provided, but the attack is deterministic and requires only existing admin access plus low attack complexity.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 28, 2026

Account takeover of the InvoicePlane primary administrator (user_id=1) is possible for any authenticated secondary administrator (user_type=1, user_id != 1) on version 1.7.2 prior to commit 8616fa4. The attacker uses Users::form(), which performs no object-level authorization check on the primary admin's record, to overwrite the primary administrator's user_email value (it is not listed in PROTECTED_FIELDS), then drives the instance's public, logged-out password-recovery flow that resolves accounts by user_email to obtain the reset token and seize control of user_id=1. This is an alternate path around the earlier fix in PR #1638, which protected only Users::change_password(); no public exploit code was identified at time of analysis and there is no CISA KEV entry, but the vendor has published a GitHub Security Advisory (GHSA-77hm-22wp-96wp) and a patch commit.

RemediationAI

Apply the upstream fix at commit 8616fa45a61c1694b55bb9116e293269a0ced06a (https://github.com/InvoicePlane/InvoicePlane/commit/8616fa45a61c1694b55bb9116e293269a0ced06a), which restores the object-level authorization check in Users::form() for user_id=1 and hides the edit form for the primary admin from other accounts; this is an upstream commit-based fix and a tagged release containing it was not independently confirmed, so verify the release your deployment tracks before assuming you are patched, and consult GHSA-77hm-22wp-96wp for the vendor's latest guidance. If immediate upgrade is not possible, add user_email (and ideally other identity attributes such as user_type) to the PROTECTED_FIELDS list so the field cannot be rewritten through the user edit form - the trade-off is that legitimate email changes for any user then require a direct database or maintenance operation. Alternatively, restrict the secondary-administrator role so that only the primary administrator (user_id=1) can access the users module at all, or gate the user-edit endpoint behind a check that rejects edits to user_id=1 unless performed by user_id=1; the trade-off is reduced delegation of user management. As a detection and containment control, alert on any change to the user_email value of user_id=1 and on password-reset requests targeting that account's email, and consider temporarily disabling the self-service password-recovery flow for the primary administrator - the trade-off being that the primary admin then needs out-of-band recovery. Auditing and removing any unexpected secondary administrator (user_type=1, user_id != 1) accounts reduces the required attacker foothold, since the whole chain depends on already holding an admin session.

Affected VersionsENISA

InvoicePlane = 1.7.2

Affected Packages

euvd invoiceplane no fix

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 invoicing and client-management application built on CodeIgniter. The defect is CWE-863 (incorrect authorization), specifically a broken object-level authorization (BOLA/IDOR) pattern in the users module of version 1.7.2. An earlier authorization hole allowed a secondary administrator to POST to users/change_password/{id} and silently reset the primary administrator's password; PR #1638 remediated that by adding a guard in Users::change_password() that blocks non-self edits of user_id=1, mirroring the protection Users::delete() already had. The remediation is incomplete because it hardened only the password-change operation and not the identity attribute that credential recovery trusts. Users::form() still lacks the equivalent check (the diff in commit 8616fa4 shows the missing 'if ((int) $user_id = 1 && (string) $user_id ! (string) $this->session->userdata('user_id'))' guard being added, plus a view-level condition so the edit form for user_id=1 is only rendered to that user), and user_email is absent from PROTECTED_FIELDS, so it is writable by a secondary admin. The second stage abuses the built-in sessions/passwordreset self-service flow, which is intentionally reachable while logged out and resolves the target account by user_email rather than by an immutable identifier, converting a cosmetic-looking email edit into a full takeover of the primary administrator. Note that although the CNA-assigned CVSS 4.0 vector indicates PR:N, the authoritative assessment of this issue is CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H: exploitation requires an existing authenticated secondary administrator account, victim interaction is not needed, and no non-default configuration is required.

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 8.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
vuln.today AI 7.2 HIGH

Requires an existing secondary-admin account (PR:H) but is a low-complexity network-based takeover of the primary administrator granting full control (C:H/I:H/A:H).

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

InvoicePlane is a self-hosted open source application for managing invoices, clients, and payments. In version 1.7.2, an authorization guard to Users::change_password(), was added to address a previous authorization flaw that allowed a secondary administrator (user_type=1, user_id != 1) to directly change the password of the primary administrator (user_id=1) through users/change_password/{id}. That remediation, however, protects only the direct password-change operation. It does not protect the identity attribute that password recovery actually trusts: user_email. Users::form() applies no equivalent object-level authorization check when editing the primary administrator's account, and user_email is not included in PROTECTED_FIELDS. A secondary administrator can therefore rewrite the primary administrator's email address, then drive the public password-recovery flow - which resolves the account by user_email - to receive the reset token and take over user_id=1. The result is an alternate attack path that achieves the same impact PR #1638 was intended to prevent: cross-administrator full account takeover of the primary administrator. This issue has been patched via commit 8616fa4.

Technical POC Analysis

CWE-863 (Incorrect Authorization) in InvoicePlane 1.7.2, an incomplete remediation.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

InvoicePlane 1.7.2 (prior to commit 8616fa4) allows a secondary administrator to take over the primary administrator account, enabling full control over invoicing data, financial records, and system configuration. This affects organizations using InvoicePlane for billing, where a compromised or malicious secondary admin could seize the highest-privilege account and disrupt critical operations. Leadership should prioritize remediation because the flaw bypasses prior authorization fixes and undermines administrative separation of duties.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations include restricting secondary administrator accounts, monitoring and locking down changes to the primary administrator email address, disabling or tightly controlling the public password-recovery flow for user_id=1, and applying the referenced fix commit 8616fa4 if it can be safely validated.

Threat Intelligence Overview

EPSS Score
0.3%
Top 82% exploitable
Prevalence
Low
niche self-hosted open-source invoicing app, limited enterprise footprint
Data Quality
6 sources
Confidence: High

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 HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
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