Backpack CRUD CVE-2026-54175
HIGHSeverity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L
Requires authenticated Backpack session (PR:L, AV:N); low confidentiality from field enumeration; low availability from account lockout of the legitimate owner.
Primary rating from GitHub Advisory.
CVSS VectorGitHub Advisory
Lifecycle Timeline
3DescriptionGitHub Advisory
Summary
The MyAccountController::postAccountInfoForm action bound to POST /admin/edit-account-info calls $this->guard()->user()->update($request->except(['_token'])). Because the controller uses except(['_token']) rather than $request->validated() or the restricted keys defined in AccountInfoRequest::validationData(), any column present in the user model's $fillable array is mass-assigned from the request, including password. Backpack ships a separate POST /admin/change-password route (postChangePasswordForm) that requires old_password verification via ChangePasswordRequest::withValidator. The edit-account-info endpoint silently bypasses that security control.
For the default Laravel 11 App\Models\User model - which Backpack's installer and documentation use as the canonical admin user model - $fillable is ['name','email','password']. The password cast is hashed, so a plaintext password=… form field is automatically hashed and persisted. Any attacker holding an authenticated Backpack session (session theft, stolen cookies, XSS, public-terminal residual session) can permanently take over the account by issuing one POST that includes password=<attacker_value>, with no knowledge of the victim's current password. This converts time-limited, session-bound access into persistent account takeover.
Vulnerable code
src/app/Http/Controllers/MyAccountController.php:38
public function postAccountInfoForm(AccountInfoRequest $request)
{
$result = $this->guard()->user()->update($request->except(['_token']));
...
}src/app/Http/Requests/AccountInfoRequest.php validationData() only narrows what gets validated (name, email column) - it does NOT narrow what is later saved.
Impact
- Persistent account takeover after session theft. An adversary holding any authenticated Backpack session cookie (XSS, malware, stolen device, shared workstation) can rewrite the victim's password and retain access indefinitely, even after the original session expires or the victim logs out. Without this bypass the equivalent action requires
old_password, which the adversary does not have. - Email pivot for full takeover. The same handler permits unverified change of the authentication column (
emailby default). A hijacked session can change the email to one the attacker controls and then use Backpack's password-reset flow as a backup channel. - Mass-assignment of any other
$fillableattribute. In real deployments where the admin user model carries fields such asrole_id,is_admin,team_id,email_verified_at,two_factor_secret, etc., the same request mass-assigns those fields. This expands the impact to privilege escalation and 2FA disablement on apps that follow standard Laravel patterns of adding such columns to$fillable.
Fix recommendation
Replace $request->except(['_token']) with an explicit allowlist that mirrors AccountInfoRequest::validationData():
public function postAccountInfoForm(AccountInfoRequest $request)
{
$data = $request->only([backpack_authentication_column(), 'name']);
$result = $this->guard()->user()->update($data);
...
}This preserves change-password as the sole path for password mutation (which already enforces old_password).
Coordinates
- Repository: https://github.com/Laravel-Backpack/CRUD
- Vulnerable file & line:
src/app/Http/Controllers/MyAccountController.php:38(release 6.8.10; mastere7201c5) - Route:
POST /admin/edit-account-info(default admin prefix;setup_my_account_routes=true) - Verified against:
backpack/crud 6.8.10,laravel/framework 11.x, PHP 8.4.7 - therawdev (responsible disclosure)
Reported by AI Agent sechub.dev and Vishal Shukla (@shukla304)
AnalysisAI
Unverified password change in Laravel Backpack CRUD's account-info endpoint allows any authenticated Backpack admin to permanently take over their own or a hijacked session's account by mass-assigning the password field without supplying the current password. Affected versions are backpack/crud < 6.8.11 and 7.0.0-alpha.1 through 7.0.33, running on Laravel 11 with the default App\Models\User model whose $fillable includes password. …
Unlock full vulnerability intelligence
- Risk assessment & exploitation conditions
- Attack chain visualization
- Remediation with exact patch versions
- Threat intelligence from 22 sources
- Personal watchlist & email alerts
Free forever · No credit card required
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata
Vulnerability AssessmentAI
| Exploitation | The attacker must hold a valid authenticated Backpack admin session - either legitimately (for self-privilege-escalation on additional `$fillable` fields) or obtained via XSS, session theft, malware, or a residual public-terminal session. … Additional conditions and limiting factors are described in the full assessment. |
| Risk Assessment | The NVD-assigned CVSS 3.1 score of 7.6 (AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L) is consistent with the described attack: network-reachable, low complexity, requires only an authenticated session, delivers high integrity impact via irreversible password takeover. … Full risk analysis with EPSS, KEV, and SSVC signal comparison available after sign-in. |
| Exploit Scenario | Full exploit scenario with step-by-step reproduction available after sign-in. |
| Remediation | Upgrade to backpack/crud 6.8.11 (v6 stable) or 7.0.34 (v7), released as GitHub tags https://github.com/Laravel-Backpack/CRUD/releases/tag/6.8.11 and https://github.com/Laravel-Backpack/CRUD/releases/tag/7.0.34 respectively. … Detailed patch versions, workarounds, and compensating controls in full report. |
Recommended ActionAI
Within 24 hours, audit all Laravel Backpack installations to document the current CRUD version and identify those running versions < 6.8.11 or 7.0.0-7.0.33. …
Sign in for detailed remediation steps and compensating controls.
Threat intelligence, references, and detailed analysis are available after sign-in.
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
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
(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear
The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by
ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C
Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au
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
Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
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
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
Same weakness CWE-620 – Unverified Password Change
View allShare
External POC / Exploit Code
Leaving vuln.today
GHSA-xpv2-hrfc-hw62