Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain authenticated Backpack admin session via XSS or cookie theft
-
DeliveryCraft single POST request to /admin/edit-account-info
-
ExploitInclude password=attacker_value in request body
-
ExecutionEloquent hashed cast auto-hashes and persists new password
-
ImpactLog in as victim using attacker-controlled credentials after original session expires
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Password change verification
|
| Exploitation Conditions | The attacker must hold a valid authenticated Backpack admin session - either legitimately (for self-privilege-escalation on additional |
| Impact | 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. The low confidentiality impact likely reflects field enumeration potential and email exposure; the low availability impact reflects account lockout of the legitimate owner. No EPSS score was provided in the source data; no CISA KEV listing exists, and no public exploit code has been identified - these signals suggest limited opportunistic exploitation to date. However, real-world risk is elevated relative to raw CVSS in multi-admin or shared-workstation Backpack deployments, where XSS or session theft is a plausible precursor: the advisory explicitly tags XSS as an attack vector, and the attack requires only one HTTP POST with no current-password knowledge. Additionally, in deployments where the admin user model includes sensitive |
| Exploit ScenarioDerived | An attacker compromises an admin's Backpack session via a stored XSS payload in an admin-visible CRUD field, extracting the session cookie. The attacker then sends a single authenticated POST to |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 20, 2026
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. The attack converts time-limited stolen session access into permanent credential control, bypassing the dedicated change-password flow that enforces old_password verification. No public exploit code or CISA KEV listing has been identified at time of analysis, but the attack is trivially constructable given full public advisory detail.
RemediationAI
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. The fix (pull requests #5980 and #5981) replaces $request->except(['_token']) with $request->validated() in postAccountInfoForm, restricting persisted fields to only those validated by AccountInfoRequest. If immediate upgrade is not feasible, override postAccountInfoForm in a custom controller and apply an explicit allowlist: $request->only([backpack_authentication_column(), 'name']) before passing to update() - this preserves the change-password route as the sole path for password mutation. Note that the controller override must be maintained manually through future Backpack upgrades. As an additional defense layer, WAF rules blocking the password parameter on POST /admin/edit-account-info can reduce exposure, but this is a compensating control only; upgrade is the authoritative fix.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in composer, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is CWE-620 (Unverified Password Change) compounded by Eloquent ORM mass assignment. The MyAccountController::postAccountInfoForm action at src/app/Http/Controllers/MyAccountController.php:38 passes $request->except(['_token']) directly to Eloquent's update() method. Because AccountInfoRequest::validationData() narrows only what is *validated* - not what is *saved* - any field present in the model's $fillable array that is submitted in the POST body is persisted. For the canonical Laravel 11 App\Models\User model (which Backpack's installer documents as the admin user model), $fillable is ['name','email','password'] and the password attribute carries a hashed cast, so a submitted plaintext value is automatically bcrypt-hashed and written to the database. A separate POST /admin/change-password route exists (postChangePasswordForm) and enforces old_password verification via ChangePasswordRequest::withValidator, but the edit-account-info endpoint silently bypasses this control. Affected package is pkg:composer/backpack_crud (both the v6 stable and v7 branches), verified against PHP 8.4.7.
Know when PHP gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity 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 Vendor (https://github.com/Laravel-Backpack/CRUD).
CVSS VectorVendor: https://github.com/Laravel-Backpack/CRUD
DescriptionCVE.org
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)
Executive ViewAI
Laravel Backpack CRUD (versions below 6.8.11 and 7.0.34) allows authenticated administrators to permanently take over accounts by bypassing password verification. No public exploit identified at time of analysis. Organizations using affected versions risk admin account takeover if administrative sessions are compromised or stolen.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
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
EUVD-2026-77706
GHSA-xpv2-hrfc-hw62
NVD
CVE.org
EPSS
Exploit-DB