CVE-2026-54181
mediumpriority · track · 0EPSS 0.003 · 24 %ileUSEPSS · scored 2026-10-27
backpack/crud provides Create, Read, Update & Delete (CRUD) functions for Backpack, a collection of Laravel packages that help users build custom administration panels. From 6.0.0 until 6.8.14 and 7.0.38, src/resources/views/crud/columns/color.blade.php inverts the escaped and raw rendering branches controlled by $column['escaped'], which defaults to true, causing $column['text'] to be rendered unescaped by default. An attacker who can store an unsanitized value in a color column can execute script in the browser of a user who views the CRUD list, including an administrator, with access to the victim's session-backed application capabilities. Exploitation requires write access to the stored color value and a victim viewing the list. This issue is fixed in versions 6.8.14 and 7.0.38.
cvss
Technical severity, 0–10. One row per scoring source.
base score 0–10 · higher = more severe · hover a vector to decode
ssvc
A stakeholder decision — act, attend, or track — from exploitation and impact.
weaknesses
The CWE weakness classes this flaw belongs to.
affected products (2)
Products and version ranges known to be affected.
advisories (1)
Vendor and ecosystem advisories describing this.
- GHSA-mmg4-322v-6jvcLaravel Backpack CRUD: Stored XSS in the color column — the `@if($column['escaped'])` branches are inverted2026-08-20ghsa · osvUS
## Summary The Blade template for the `color` column type (`src/resources/views/crud/columns/color.blade.php`) has its escaped/unescaped rendering branches inverted relative to every other column template in the library. Because `$column['escaped']` defaults to `true`, values stored in color columns are rendered **unescaped by default**, enabling Stored XSS if column values are not validated before storage. ## Details All other column templates in `src/resources/views/crud/columns/` follow the convention: - `$column['escaped'] == true` → `{{ $column['text'] }}` (HTML-escaped) - `$column['escaped'] == false` → `{!! $column['text'] !!}` (raw) The `color` template has these branches swapped. An attacker who can write an arbitrary string to a `color`-typed column can inject JavaScript that executes in the browser of any user who views the list — including administrators — with access to their session cookies and CSRF tokens. ## Impact Stored XSS with scope change (attacker context runs in victim's browser). Highest-risk target is an administrator viewing the list view. Exploitability requires the ability to write an unsanitized value into a `color`-typed column. ## Patches Fixed in **6.8.14** and **7.0.38** by correcting the branch order in `color.blade.php`. See PR #5992. ## Workarounds Validate stored color values against a strict CSS color grammar (e.g. `/^#[0-9a-fA-F]{3,6}$/`) at the model layer before data reaches the view. ## Credits Reported by Vishal Shukla ([@shukla304](https://github.com/shukla304)) via sechub.dev.
sources
Which sources assert this record, and when.
references (7) nvd
External citations — patches, advisories, analysis.
- https://github.com/Laravel-Backpack/CRUD/commit/608652b1020ba274781f222d2959d7780a559a08
- https://github.com/Laravel-Backpack/CRUD/commit/76c3a6e50e3fbd6d5f633208da5b04acb8322969
- https://github.com/Laravel-Backpack/CRUD/pull/5992
- https://github.com/Laravel-Backpack/CRUD/pull/5994
- https://github.com/Laravel-Backpack/CRUD/releases/tag/6.8.14
- https://github.com/Laravel-Backpack/CRUD/releases/tag/7.0.38
- https://github.com/Laravel-Backpack/CRUD/security/advisories/GHSA-mmg4-322v-6jvc
Attackers weaponise vulnerabilities like this against internet-exposed services. See what is exposed on your perimeter with a free passive scan.
Free scan