/

CVE-2026-49850

Severity:

HIGH RISK

(7.5)

CSRF (CWE-22) in InvoicePlane Invoice Deletion Routes

CVE-2026-49850

Deferred

Vulnerability type

Category:

Cross-Site Request Forgery

CWE:

CWE-22, CWE-98

Impact:

Unauthorized deletion of invoices and financial data

Severity:

HIGH RISK

(7.5)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

InvoicePlane exposes invoice and invoice-tax deletion actions without requiring a POST request or validating a CSRF token. If an authenticated administrator views attacker-controlled content, a cross-origin request may delete financial records without the administrator's intent.

Affected context

The vulnerability occurs in self-hosted InvoicePlane deployments where authenticated administrative sessions can reach invoice deletion routes that accept state-changing requests without adequate request-method and CSRF protections. It applies when an administrator is induced to load attacker-controlled content while an active authenticated session is available.

Exploit preconditions

  • Attack surface: InvoicePlane web routes for invoice and invoice-tax deletion - Required access: An authenticated administrator session must exist - Trigger point: The administrator loads attacker-controlled content that

causes a cross-origin request to an affected route

  • Why exploitation is possible: State-changing actions do not sufficiently

require POST requests or validate a CSRF token

Why this happens

The underlying flaw is missing request-origin and intent validation for destructive web actions. Treating cross-origin requests as authorized while relying on the administrator's existing session allows an attacker to cause unintended state changes, which is characteristic of Cross-Site Request Forgery. The associated weakness set includes CWE-22 and CWE-98 as reported for this issue.

Potential impact

  • An attacker may delete invoices without the administrator's intent.
  • Invoice tax records could be removed.
  • Financial and audit data may be lost or become inconsistent.
  • Business operations and payment reconciliation could be disrupted.

General mitigation guidance

Defensive designs commonly require POST or another non-simple method for all state-changing operations and enforce unpredictable, session-bound CSRF tokens on those requests. Same-origin checks, appropriate cookie policies, and server-side authorization should provide defense in depth rather than relying on browser behavior alone. Destructive routes can also use explicit confirmation workflows, narrow administrative privileges, audit logging, and recoverable backups. Input trust should be reduced by rejecting cross-origin requests that lack an approved security context.

How teams detect issues like this

Detection can include static analysis and code review checks for destructive routes that accept GET requests, missing CSRF middleware, absent token validation, and authorization based only on ambient session cookies. Dynamic testing can verify that cross-origin requests fail without a valid token and that safe methods do not alter state. Web application policies and automated security review tools can flag state-changing endpoints lacking consistent request-protection controls.

Sources

SourceLink
github.comgithub.com/InvoicePlane/InvoicePlane/commit/2f426e39d3744f2d732dc48114f96eeac9cbbfc3
github.comgithub.com/InvoicePlane/InvoicePlane/releases/tag/v1.7.2
github.comgithub.com/InvoicePlane/InvoicePlane/security/advisories/GHSA-mhvh-4j3w-7pvj

Frequently asked

questions

Yes, an attacker may host or distribute content that causes a victim's browser

to send a cross-origin request, but exploitation depends on the victim having

an active authenticated administrator session.

Not necessarily. The key requirement is that an authenticated administrator

visits the attacker-controlled content; the browser may automatically include

the existing session credentials.

Protect every state-changing route with CSRF tokens, require an appropriate

non-GET method, and enforce server-side authorization and origin checks.

Apply consistent CSRF middleware, review all destructive routes, test

cross-origin behavior in CI, use restrictive cookie policies, and limit

administrative privileges.

Find out what's already
exploitable in your codebase.