Skip to main content

InvoiceNinja CVE-2026-71233

| EUVDEUVD-2026-53306 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-08-05 309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c GHSA-84j5-x242-f7h8
8.7
CVSS 3.1 · Vendor: 309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c
Share

Severity by source

Vendor (309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c) PRIMARY
8.7 HIGH
AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
vuln.today AI
8.7 HIGH

PR:L for required invoice-creator credentials, UI:R for mandatory client interaction, S:C for cross-context session impact; no availability impact applies.

3.1 AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c).

CVSS VectorVendor: 309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
Required
Scope
Changed
Confidentiality
High
Integrity
High
Availability
None

Lifecycle Timeline

2
Analysis Generated
Aug 05, 2026 - 11:34 vuln.today
CVE Published
Aug 05, 2026 - 11:16 cve.org
HIGH 8.7

DescriptionCVE.org

InvoiceNinja v5-stable renders an invoice or quote's "terms" field in the client portal using Laravel Blade's raw output directive {!! $entity->terms !!} (resources/views/portal/ninja2020/invoices/includes/terms.blade.php) with no HTML sanitization. StoreInvoiceRequest.php only strips newlines from the field and does not purify HTML. An authenticated user with invoice creation access can set the terms field via the REST API (PUT /api/v1/invoices/{id}) to an HTML/JavaScript payload that executes in the client's browser when they view the invoice, enabling session cookie theft and client account takeover. This is a distinct code path from the previously published invoice line-item description field XSS (GHSA-98wm-cxpw-847p / CVE-2026-33628).

AnalysisAI

Stored XSS in InvoiceNinja v5-stable allows an authenticated user with invoice creation access to inject arbitrary JavaScript into the invoice terms field, which executes in a business client's browser when they view the invoice in the client portal. The attack leverages Laravel Blade's raw unescaped output directive in resources/views/portal/ninja2020/invoices/includes/terms.blade.php, with no HTML sanitization performed in StoreInvoiceRequest.php, enabling session cookie theft and full client account takeover. This is a distinct code path from the previously published CVE-2026-33628 (line-item description XSS), and no public exploit has been identified at time of analysis.

Technical ContextAI

InvoiceNinja is a PHP invoicing platform built on the Laravel framework. The root cause (CWE-79, Stored XSS) lies in the use of Laravel Blade's raw unescaped output directive {!! $entity->terms !!} in resources/views/portal/ninja2020/invoices/includes/terms.blade.php. The safe equivalent - {{ $entity->terms }} - auto-escapes HTML entities; the raw directive does not. Compounding this, StoreInvoiceRequest.php performs only newline stripping on the terms field before persistence, providing no HTML purification or allowlist-based sanitization. This means attacker-controlled markup stored in the database is written directly into the portal HTML response, satisfying the classic stored XSS pattern. The REST API endpoint PUT /api/v1/invoices/{id} is the write path. No CPE string was provided in the input data.

RemediationAI

The primary fix is to replace the raw Blade directive {!! $entity->terms !!} in resources/views/portal/ninja2020/invoices/includes/terms.blade.php with the auto-escaping {{ $entity->terms }}, or alternatively apply an HTML purification library (such as HTMLPurifier) in StoreInvoiceRequest.php before the terms value is persisted - the latter would also protect any other rendering contexts. Check https://github.com/invoiceninja/invoiceninja for a released patched version; no specific fix version was confirmed in the available data, so patch availability must be independently verified. As a compensating control, restrict invoice creation and editing permissions exclusively to fully trusted internal users, which reduces the attacker surface but does not eliminate the vulnerability. Deploying a strict Content-Security-Policy header on the client portal that disallows unsafe-inline scripts would substantially reduce XSS impact, though compatibility testing with portal JavaScript functionality is required. Note that this vulnerability is a distinct code path from CVE-2026-33628; patching one does not remediate the other.

More in PHP

View all
CVE-2019-11043 CRITICAL POC
9.8 Oct 28

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

CVE-2012-1823 CRITICAL POC
9.8 May 11

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

CVE-2016-1555 CRITICAL POC
9.8 Apr 21

(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear

CVE-2018-11138 CRITICAL POC
9.8 May 31

The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by

CVE-2024-11680 CRITICAL POC
9.8 Nov 26

ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C

CVE-2025-49113 CRITICAL POC
9.9 Jun 02

Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au

CVE-2017-9841 CRITICAL POC
9.8 Jun 27

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

CVE-2025-0108 HIGH POC
8.8 Feb 12

Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers

CVE-2021-25298 HIGH POC
8.8 Feb 15

Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re

CVE-2021-25296 HIGH POC
8.8 Feb 15

Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re

CVE-2013-4983 CRITICAL POC
10.0 Sep 10

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

CVE-2023-6553 CRITICAL POC
9.8 Dec 15

The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1

Share

CVE-2026-71233 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy