Laravel Backpack CRUD: MyAccountController allows changing the login email without a current-password check
위협 신호 · CVSS · EPSS · KEV
이론적 심각도 점수
예측 데이터 없음
실측 악용 기록 없음
계획된 패치 주기 내 조치(60일 이내)
CVSS 벡터 · 메트릭
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:N상세 설명
Summary
MyAccountController::postAccountInfoForm allows an authenticated user to update
the authentication column (default: email) without verifying their current password.
Because email is the account-recovery anchor, this enables account takeover after
the attacker's session ends: the new email address can be used to request a password
reset from outside the system.
The password-change endpoint in the same controller correctly requires old_password
verification, so the gap is asymmetric.
Details
The postAccountInfoForm action passes $request->validated() directly to
$user->update(). The AccountInfoRequest whitelists the authentication column
(email by default) with no ownership challenge. Contrast this with
ChangePasswordRequest, which uses Hash::check against the stored password before
allowing any change.
Scenarios where this is exploitable include:
- A brief unauthorized session (e.g. unattended workstation, XSS in the admin panel)
- An insider/offboarding case where a departing admin sets a personal email address
before access is revoked, then resets the password after leaving
Patch
Fixed in #5990 — the
authentication column is now protected by a current_password check (mirroring
ChangePasswordRequest) whenever its value changes.
A stronger mitigation — sending a verification link to the new address before
persisting the change — can be layered on top using Laravel's MustVerifyEmail flow.
Affected versions
All versions prior to 6.8.14 / 7.0.38.
Fixed versions
- 6.x: 6.8.14
- 7.x: 7.0.38
AI 심층 분석
공격 시나리오 · 재현 가능한 PoC 페이로드 · 즉시 적용 가능한 차단 패치를 한 번에 받아 보세요. 보안 운영팀이 그대로 점검·티켓팅에 쓸 수 있는 형태로 정리해 드립니다.
참고 자료 5
링크 내용 불러오는 중…