Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as admin, keep session live
-
DeliveryGet downgraded by another admin
-
ExploitReuse stale session's trusted user_type
-
ExecutionSubmit Users::form() setting user_type=1
-
ImpactPersist restored admin role in ip_users
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 | Exploitation requires the attacker to have previously held an InvoicePlane administrator account (user_type=1) with a live authenticated session, and then to be downgraded (or deactivated) by another administrator WITHOUT logging out - the stale session's cached user_type is what authorizes continued admin access. The attacker then uses the Users::form() endpoint to rewrite their own user_type back to 1. Limiting factors: this only occurs in multi-administrator deployments where role downgrades happen, requires the downgraded session to remain active at the time of exploitation (the AT:P timing/attack requirement), and requires prior high-privilege access (PR:H) - it is not exploitable by an unauthenticated or ordinary low-privilege user against a default single-admin install. |
| Impact | This is a CWE-863 broken-access-control (privilege-retention) flaw in InvoicePlane prior to 1.7.2. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:H/UI:N/VC:H/VI:H/VA:H = 7.5 High) is internally consistent with the described mechanism: exploitation requires an already-authenticated high-privilege actor (PR:H - the victim must have been an administrator with an active session) and a specific timing condition (AT:P - the downgrade must occur while the target session is still live), while the outcome is full retention/restoration of admin control (VC/VI/VA:H). No EPSS score, no CISA KEV listing, and no public POC are present in the supplied intelligence, so exploitation status is 'no public exploit identified at time of analysis.' The realistic priority is MODERATE-to-LOW rather than the raw 7.5 suggests: this is not remote unauthenticated compromise but an insider/privilege-retention scenario where the attacker must have already held admin rights and been downgraded by another admin - a narrow window in a specific multi-admin workflow. The source-code diff strongly corroborates the root cause (session user_type snapshot trusted instead of re-reading ip_users), so the technical claim is well-substantiated even absent exploitation telemetry. Note the AT:P attack-requirement (active-session timing) is the key limiter that keeps this from being trivially automatable. |
| Exploit ScenarioDerived | A user who was previously granted administrator rights is downgraded by another administrator, but keeps their existing authenticated session open. Because Admin_Controller authorizes requests from the session's stale user_type snapshot rather than re-checking ip_users.user_type, the downgraded user calls Users::form() to reset their own user_type back to 1, restoring admin in the database and making the escalation persistent across future logins. No public exploit code is identified, but the attack is a small number of ordinary authenticated HTTP requests requiring no special tooling. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 25, 2026
Privilege escalation and privilege retention in InvoicePlane prior to 1.7.2 allow a previously-authenticated administrator whose account was downgraded or deactivated by another administrator to keep operating with administrative rights through a stale session. Because Admin_Controller trusts the user_type value cached in the session at login rather than re-reading ip_users.user_type, the downgraded user's live session continues to authorize admin requests, and the attacker can then call Users::form() to write user_type back to 1, making the restored admin role persistent in the database. Exploitation is limited to multi-administrator deployments where a role change occurs while the target session stays alive; it requires prior high-privilege access and is not reachable by an unauthenticated or ordinary low-privilege user, and no public exploit code or active exploitation has been identified at time of analysis. The vendor-released fix is InvoicePlane 1.7.2.
RemediationAI
Upgrade to InvoicePlane 1.7.2, the vendor-released patch version that adds per-request revalidation of user_type and user_active against the ip_users table; the corresponding upstream fixes are commits 904847f4e87b66fd6743cf9cc6f88b66c7fc3b81 and daa49ce3a50e0c93e01459b69c0d61bfc23d23eb, and the full advisory is at https://github.com/InvoicePlane/InvoicePlane/security/advisories/GHSA-25xj-pj36-wpp8. If upgrading immediately is not possible, the effective compensating control is to invalidate sessions yourself at the moment of a role change: force-logout any account being downgraded or deactivated (and terminate its server-side session records) so no cached user_type value survives, and, because the downgraded session can rewrite user_type back to 1 via Users::form(), temporarily restrict access to the user-management endpoints to a single trusted administrator or to a network/authentication layer outside InvoicePlane. Operationally, monitor ip_users for user_type changes that are not paired with an administrative action, and treat any user_type escalation originating from a session that was recently downgraded as a compromise indicator. The trade-off of forced session termination is disruption to the affected user's in-progress work, and restricting the user-management endpoints blocks legitimate delegated administration; both are preferable to leaving stale administrative sessions able to restore their own privileges. No vendor-released patch other than 1.7.2 was identified in the supplied data.
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-863 (Incorrect Authorization), specifically a broken-access-control / privilege-retention pattern in a PHP application built on a CodeIgniter-style MVC stack. InvoicePlane stores the acting user's role in the server-side session as a snapshot taken at authentication time, and the base User_Controller constructor validated that snapshot against a required key/value pair (for example user_type = 1 for administrative controllers) without ever re-reading the authoritative ip_users row. As a result, session state and database state can diverge: when an administrator demotes or deactivates another account, the target's existing session is never invalidated and keeps passing the cached-role check on every subsequent request. The upstream fix adds a revalidate_user_type() method that selects user_type and user_active from ip_users for the session's user_id on each request, destroys the session and redirects to sessions/login when the account is missing, inactive (user_active != 1), or no longer matches the required role, and otherwise synchronizes the session's user_type with the database value. The second half of the flaw is an authorization gap in Users::form(), which allowed the downgraded user to write user_type = 1 back to their own record and thereby convert a transient session anomaly into a persistent administrative account. The assessed vector CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H and the CVSS 4.0 AT:P (attack requirements present) both reflect that the flaw is only exploitable under specific, administrator-dependent timing and role-change conditions rather than by an arbitrary remote attacker.
Know when PHP 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:P/PR:H/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
PR:H because the actor must have been an administrator with an active session; AC:H reflects the required live-session timing window (maps AT:P); full admin retention gives C/I/A:H.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
2DescriptionCVE.org
InvoicePlane is a self-hosted open source application for managing invoices, clients, and payments. Prior to 1.7.2, InvoicePlane fails to revoke administrative privileges after a role downgrade because Admin_Controller trusts the user_type snapshot stored in an existing session instead of revalidating ip_users.user_type. When one administrator downgrades another account, the target's active session continues to authorize administrative requests. The downgraded user can use Users::form() to set user_type back to 1, restoring the database role and making the privilege escalation persistent. This vulnerability is fixed in 1.7.2.
Technical POC Analysis
CWE-863 (Incorrect Authorization) - authorization is decided from a cached session value that is never re-validated against the database.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
InvoicePlane deployments running versions prior to 1.7.2 carry a high-severity access-control flaw that lets an administrator whose account has been downgraded or deactivated continue acting with full administrative rights through a stale session, and then make that regained role permanent in the database. The exposure is confined to organizations running multiple administrators where a privilege change and a live session overlap, but the consequence is a failure of the very control used to revoke access - a former or demoted insider can silently retain and entrench privileged access. Leadership should care because this undermines offboarding and least-privilege assurance, and remediation requires both patching and a review of who currently holds administrative rights in the billing platform.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it
sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not
(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear
The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by
ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C
Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au
Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c
Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
EUVD-2026-87352
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB