CVE-2025-67507
PHP vulnerability analysis and mitigation

Overview

CVE-2025-67507 is a multi-factor authentication bypass vulnerability in Filament, a full-stack UI framework for Laravel. The flaw allows the same app-based MFA recovery code to be reused indefinitely, effectively turning recovery codes into a static, long-term authentication bypass mechanism. It affects Filament versions 4.0.0 through 4.3.0 (Composer package filament/filament) and was disclosed on December 9, 2025, with a fix released in version 4.3.1. The vulnerability carries a CVSS v3.1 base score of 8.1 (High) (Github Advisory, Filament Advisory).

Technical details

The root cause lies in the verifyRecoveryCode() method within packages/panels/src/Auth/MultiFactor/App/AppAuthentication.php, which validated a recovery code against stored hashed codes but failed to remove the used code from the user's stored recovery code list upon successful verification (CWE-287: Improper Authentication; CWE-288: Authentication Bypass Using an Alternate Path or Channel). The fix (commit 87ff60a) corrects this by collecting remaining (unused) codes and persisting them via saveAppAuthenticationRecoveryCodes() after a successful match, thereby invalidating the used code. Exploitation requires the attacker to have already obtained both the target user's password and at least one recovery code — for example, through phishing, credential stuffing, or a prior data breach. This vulnerability only applies to app-based MFA with recovery codes enabled; email-based MFA is unaffected (Filament Advisory, Patch Commit).

Impact

An attacker who obtains a user's password and a single recovery code can bypass app-based MFA repeatedly and indefinitely, gaining persistent unauthorized access to the protected Filament application. This effectively degrades MFA to single-factor authentication for any account whose recovery codes have been compromised, with high confidentiality, integrity, and availability impacts. Depending on the privileges of the compromised account, this could lead to full administrative access, data exfiltration, or further lateral movement within the application (Github Advisory).

Exploitability

No public proof-of-concept exploit code or evidence of in-the-wild exploitation has been reported as of the time of disclosure (Github Advisory). The EPSS score is approximately 0.065% (20th percentile), indicating a low near-term exploitation probability. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. Exploitation requires a prerequisite of obtaining both the user's password and a recovery code, raising the attack complexity (rated High in CVSS), which limits opportunistic exploitation.

Exploitation steps

  1. Credential Acquisition: Obtain the target user's password through phishing, credential stuffing, or a prior data breach targeting the Filament application.
  2. Recovery Code Acquisition: Obtain one or more of the target user's MFA recovery codes through the same or a separate compromise (e.g., phishing, social engineering, or access to backup storage where codes were saved).
  3. Initial Login Attempt: Navigate to the Filament application login page and authenticate with the stolen username and password, triggering the MFA challenge.
  4. MFA Bypass via Recovery Code: When prompted for the MFA code, select the "use recovery code" option and submit the obtained recovery code to complete authentication.
  5. Repeated Bypass: Because the used recovery code is not invalidated in vulnerable versions (4.0.0–4.3.0), log out and repeat steps 3–4 using the same recovery code to gain access again at any future time, maintaining persistent unauthorized access without needing the user's authenticator app (Filament Advisory, Patch Commit).

Indicators of compromise

  • Logs: Repeated successful authentication events for the same user account using recovery codes (rather than TOTP codes) across multiple sessions; authentication log entries showing the same recovery code accepted on multiple occasions.
  • Application Behavior: A user's recovery code count does not decrease after use in vulnerable versions — administrators can check if stored recovery code counts remain static despite reported use.
  • Network: Multiple login sessions from different IP addresses or unusual geolocations for the same account, particularly those completing MFA via recovery code rather than TOTP.
  • User Reports: Legitimate users reporting unexpected active sessions or account activity they did not initiate, which may indicate a compromised recovery code is being reused by an attacker.

Mitigation and workarounds

The primary remediation is to upgrade Filament to version 4.3.1 or later, which invalidates recovery codes after a single use (Github Advisory, Patch Commit). As an interim workaround, administrators can disable app-based MFA recovery codes if they are not essential to operations. After upgrading, it is advisable to have users regenerate their recovery codes to invalidate any that may have been previously compromised. Additionally, monitoring authentication logs for repeated recovery code usage and implementing IP-based access restrictions or adaptive authentication can reduce exposure.

Additional resources


SourceThis report was generated using AI

Related PHP vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-54182HIGH8.1
  • PHP logoPHP
  • backpack/crud
NoYesSep 14, 2026
CVE-2026-54178HIGH8.1
  • PHP logoPHP
  • backpack/crud
NoYesSep 14, 2026
CVE-2026-54180HIGH7.6
  • PHP logoPHP
  • backpack/crud
NoYesSep 14, 2026
CVE-2026-57570MEDIUM6.5
  • PHP logoPHP
  • backpack/crud
NoYesSep 14, 2026
CVE-2026-54181MEDIUM5.4
  • PHP logoPHP
  • backpack/crud
NoYesSep 14, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management