CVE-2026-85274: InvoicePlane: Recurring Invoice State Change via GET Request Without CSRF Protection
InvoicePlane is a self-hosted open source application for managing invoices, clients, and payments. Prior to 1.7.2, InvoicePlane exposes Recurring::stop() as a state-changing GET route without CSRF token validation. When an authenticated administrator loads attacker-controlled content that requests /invoices/recurring/stop/{id}, the application stops the selected recurring invoice. An attacker can target multiple identifiers to interrupt recurring billing and cause financial loss. This issue is fixed in version 1.7.2.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
InvoicePlaneto a version that resolves this vulnerability.Fixed in 1.7.2
Event History
Frequently Asked Questions
Who can be targeted by this issue?
Authenticated InvoicePlane administrators using versions prior to 1.7.2 can be targeted. The attacker must cause the administrator to load attacker-controlled content that makes requests to the recurring-invoice stop endpoint.
What can an attacker do if exploitation succeeds?
The attacker can stop a selected recurring invoice, and can target multiple invoice identifiers. This can interrupt recurring billing and cause financial loss.
Is authentication required for the attacker?
The attacker does not need their own authenticated access, but exploitation relies on an authenticated administrator’s browser session. User interaction is required because the administrator must load attacker-controlled content.
What version fixes the issue?
Upgrade InvoicePlane to version 1.7.2, which fixes the missing CSRF validation on the state-changing route.