backpack/crud security advisory
CVE-2026-54179: Laravel Backpack CRUD: SingleBase64Image accepts any base64 payload behind a data:image prefix — SVG-with-script lands on the public disk
CVE-2026-54179 is a medium-severity stored XSS vulnerability in the PHP package backpack/crud (CVSS 4.4), published 31 August 2026. It is fixed in 6.8.14 and 7.0.38, one per release line; earlier versions on each line are affected. Exploiting it needs a low-privilege user account.
medium 4.4 published 2026-08-31 · updated 2026-09-08
- Affected versions
- >= 6.0.0, < 6.8.14
>= 7.0.0, < 7.0.38 - Fixed in
- 6.8.14, 7.0.38
- Newest release
- 7.1.24
- Severity
- Medium · CVSS 4.4
- Type
- Stored cross-site scripting (XSS)
CWE-79, CWE-434 - Exploited in the wild
- Not on the CISA KEV list
checked 2026-11-04
Is your backpack/crud version affected?
Who can exploit CVE-2026-54179
- Access: A normal, low-privilege user account in the app.
- Interaction: A user also has to do something, such as open a link or a page the attacker prepared.
- Conditions: It only works under specific conditions the attacker does not fully control (CVSS rates the attack as high complexity).
CVSS vector (scored by GitHub): CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:L/I:L/A:N
How to fix CVE-2026-54179 in backpack/crud
- Find the installed version:
composer show backpack/crud. If you never required it yourself,composer why backpack/crudshows which package pulls it in. - Update it:
composer update backpack/crud --with-all-dependencies. You need the fixed version for your release line (6.8.14 and 7.0.38). - If Composer will not go that high, your composer.json constraint is holding it back. Widen it (for example
"backpack/crud": "^7.0.38"if you can take that version), or upgrade the package that requires it. - Run
composer audit. It reads the same advisory data and should no longer list CVE-2026-54179. - Commit composer.lock and deploy it. On the server, run
composer install --no-devfrom the lock file, notcomposer update.
If you cannot upgrade yet
- Escape output in your own templates and add a Content-Security-Policy that blocks inline scripts.
- Limit who can save the content the advisory names (for example rich text, SVG or form fields).
- If your app does not use the affected feature, note that in your audit, but still plan the upgrade.
The CVE-2026-54179 advisory
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.37, the src/app/Library/Uploaders/SingleBase64Image.php methods SingleBase64Image::uploadFiles and SingleBase64Image::uploadRepeatableFiles, used by image fields through withFiles(), accept any data URI beginning with data:image without validating the declared MIME subtype or decoded bytes, while src/app/Library/Uploaders/Support/FileNameGenerator.php method FileNameGenerator::getExtensionFromFile applies mime_content_type() to the data URI instead of the decoded content. An authenticated administrator can therefore store arbitrary file content under an extensionless filename on the configured disk, which can cause stored cross-site scripting or other unintended behavior when the file is served and accessed. This issue is fixed in version 7.0.38 and 6.8.14.
References
- GitHub advisory GHSA-8hw4-7qjr-3wxg github.com
- Fix commit 18b3dc1 github.com
- Pull request #5989 github.com
- Release 6.8.14 github.com
- Release 7.0.38 github.com
Other backpack/crud advisories
- medium CVE-2026-57570: Laravel Backpack CRUD: HasMany/MorphMany relation fields allow cross-tenant record re-parenting (IDOR) via attachManyRelation 2026-08-20
- high CVE-2026-54182: Laravel Backpack CRUD: OS command injection in Stats::makeCurlRequest via attacker-controlled Host header (pre-auth) 2026-08-20
- medium CVE-2026-54181: Laravel Backpack CRUD: Stored XSS in the color column — the @if($column['escaped']) branches are inverted 2026-08-20
- high CVE-2026-54180: Laravel Backpack CRUD: CRUD panel query scopes are not enforced on Update, Delete, and Reorder (cross-tenant IDOR) 2026-08-20
- high CVE-2026-54178: Laravel Backpack CRUD: Arbitrary file deletion via attacker-controlled clear_<attr>[] in HasUploadFields::uploadMultipleFilesToDisk 2026-08-20
- medium CVE-2026-54177: Laravel Backpack CRUD: HasUploadFields keeps the attacker-supplied file extension — public-disk uploads of shell.php reach the webserver 2026-08-20
Related
Need help patching or upgrading? Laskyr does PHP and Laravel security fixes and upgrades. Tell us what you run and we reply with a plan and a price.
Ask about a fixWhere this data comes from
- Affected and fixed versions: the Packagist security advisories API (GitHub Advisory Database and FriendsOfPHP), the same data
composer audituses. Synced 2026-11-03. - Description, score, weakness and references: NIST National Vulnerability Database (NVD), checked 2026-11-04. This product uses data from the NVD API but is not endorsed or certified by the NVD.
- Exploited-in-the-wild status: the CISA Known Exploited Vulnerabilities catalog, checked 2026-11-04.
- Compiled by Daniel Lasek at Laskyr from the sources above. The summary, “who can exploit it”, “how to fix it” and hardening sections are our plain-English reading of the record and are generated from it. The quoted description is the record's own text. Spot an error? Tell us.