Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as secondary administrator
-
DeliveryEdit primary admin account via Users::form()
-
ExploitRewrite user_email to attacker-controlled address
-
ExecutionTrigger public password-recovery for user_id=1
-
PersistReceive reset token at attacker email
-
ImpactTake 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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
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
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
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).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
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
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.
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
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
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-88481
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB