CVE-2026-54181: XSS

Published Aug 20, 2026
·
Updated

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.

Affected Software

2 affected componentsFixes available
composer/backpack/crud>=7.0.0<7.0.38
7.0.38
composer/backpack/crud>=6.0.0<6.8.14
6.8.14

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade composer/backpack/crud to a version that resolves this vulnerability.

    Fixed in 7.0.38
  2. Upgrade

    Upgrade composer/backpack/crud to a version that resolves this vulnerability.

    Fixed in 6.8.14
  3. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 6.8.14
  4. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 7.0.38
  5. Configuration

    Fix the inverted escaped/unescaped rendering logic in color.blade.php by correcting the branch order so it matches the convention used by other templates (values are HTML-escaped by default when $column['escaped'] defaults to true).

    Blade template: src/resources/views/crud/columns/color.blade.php escaped/unescaped branch order for $column['escaped'] rendering = correct branch order (ensure when $column['escaped'] == true values are HTML-escaped and when false values are rendered unescaped)
  6. Configuration

    Validate stored values for `color`-typed columns against a strict CSS color grammar (e.g., regex `^#[0-9a-fA-F]{3,6}$`) at the model layer before rendering to prevent Stored XSS.

    Model validation (before data reaches view) stored color value validation (strict CSS color grammar) = /^#[0-9a-fA-F]{3,6}$/

Event History

Aug 20, 2026
Advisory Published
via GitHub·06:38 PM
Data Sourced
via GitHub·06:38 PM
DescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

Who is exposed to this issue?

Applications using a color-typed CRUD column are exposed if an attacker can store an arbitrary, unsanitized value in that column and a user later views the list. Administrators are the highest-risk viewers because injected script runs in their browser context.

2

Does this affect the default rendering behavior?

Yes. The color column's escaped setting defaults to true, but the affected template renders its text unescaped under that default. This differs from the intended behavior used by other column templates.

3

What must an attacker do to exploit it?

The attacker needs permission or another path to write a malicious string into a color-typed column without validation or sanitization. They also need a victim to open the list view containing the stored value.

4

What can be done before applying a fix?

Validate or sanitize all values written to color-typed columns so they cannot contain executable HTML or JavaScript. Restrict untrusted users from writing arbitrary values to those columns until the affected installation is updated.

5

How can teams identify potentially affected data?

Review color-typed column values for unexpected HTML, script content, or other markup, especially where those values can be supplied by less-trusted users. Also review list views that display such columns and the write paths that populate them.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203