GitHub Advisoryadvisory · Packagist

GHSA-mmg4-322v-6jvc Laravel Backpack CRUD: Stored XSS in the color column — the `@if($column['escaped'])` branches are inverted

MEDIUM Published 2026-08-20 Modified 2026-08-20 Official page ↗
Aliases
CVE-2026-54181
Ecosystem
Packagist
Packages
backpack/crud
Severity
Moderate
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
Weaknesses
CWE-1023, CWE-79
Reviewed
2026-08-20

Affected packages

• Packagist backpack/crud: >= 6.0.0, < 6.8.14 → fixed in 6.8.14 • Packagist backpack/crud: >= 7.0.0, < 7.0.38 → fixed in 7.0.38

Description

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) via sechub.dev.

Related

Alias · CVE (1)

  • CVE-2026-54181 backpack/crud provides Create, Read, Update & Delete (CRUD) functions for Backpack, a collection of Laravel packages that help users build… vulnerability

Weakness · CWE (2)

  • CWE-1023 Incomplete Comparison with Missing Factors weakness
  • CWE-79 Improper Neutralization of Input During Web Page Generation weakness

References