{"id":"CVE-2026-100371","title":"InvoicePlane is a self-hosted open source application for managing invoices, clients, and payments","summary":"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 s…","severity":"high","cvss":8.7,"cvssVector":"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","cwe":["CWE-863"],"vendor":"InvoicePlane","product":"InvoicePlane","affected":["InvoicePlane = 1.7.2"],"published":"2026-09-28","updated":"2026-09-30","sourceUpdated":"2026-09-30T19:57:08.043","source":"NVD","sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-100371","references":[{"url":"https://github.com/InvoicePlane/InvoicePlane/commit/8616fa45a61c1694b55bb9116e293269a0ced06a","label":"security-advisories@github.com"},{"url":"https://github.com/InvoicePlane/InvoicePlane/pull/1638","label":"security-advisories@github.com"},{"url":"https://github.com/InvoicePlane/InvoicePlane/security/advisories/GHSA-77hm-22wp-96wp","label":"security-advisories@github.com"},{"url":"https://github.com/InvoicePlane/InvoicePlane/security/advisories/GHSA-77hm-22wp-96wp","label":"134c704f-9b21-4f2e-91b3-4a467353bcc0"}],"tags":["nvd","cve.org","exploit-available"],"epss":0.00351,"epssPercentile":0.28545,"exploitAvailable":true,"ssvc":{"exploitation":"poc","automatable":"yes","technicalImpact":"partial","timestamp":"2026-09-29T13:50:48.186591Z"},"cvssSource":"cna","ingestedAt":"2026-09-28T21:20:54.774Z","slug":"CVE-2026-100371","body":"## Overview\n\nInvoicePlane 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.\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.","depth":"midnight","depthScore":60,"depthScoreParts":{"impact":47.8,"likelihood":0.1,"exploitation":12,"ransomware":0},"changes":[{"seq":212687,"id":"CVE-2026-100371","ts":1790692640343,"field":"exploit_available","old":"false","new":"true"}]}