HIGH 7.4

CVE-2026-48505: Filament App-Based MFA Recovery Code Reuse via Race Condition

Filament, a Laravel development toolkit, contains a flaw in its app-based multi-factor authentication (MFA) recovery code system that allows a single recovery code to be used multiple times if an attacker submits it rapidly in parallel. Normally, recovery codes are single-use—meant to be burned after one authentication attempt. An attacker who has stolen both a user's password and recovery codes could exploit this concurrency issue to create multiple authenticated sessions from a single code, significantly extending their unauthorized access window. This only affects app-based MFA with recovery codes enabled; email-based MFA is not vulnerable. Versions 4.0.0 through 4.11.4 and 5.0.0 through 5.6.4 are affected.

Source data · NVD / CISA · public domain

CVSS
3.1 · 7.4 HIGH · CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Weaknesses (CWE)
CWE-362, CWE-841
Affected products
0 configuration(s)
Published / Modified
2026-06-22 / 2026-06-23

NVD description (verbatim)

Filament is a collection of full-stack components for accelerated Laravel development. From 4.0.0 until 4.11.5 and 5.6.5, a flaw in the handling of recovery codes for app-based multi-factor authentication allows the same recovery code to be reused via concurrent submission. This issue does not affect email-based MFA. It also only applies when recovery codes are enabled. If an attacker gains access to both the user's password and their recovery codes, they get two authenticated sessions per recovery code burned instead of one, or more if they batch the parallel submissions wider, materially extending the attacker's window of access compared to what the single-use guarantee implies. This vulnerability is fixed in 4.11.5 and 5.6.5.

1 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

The vulnerability stems from insufficient synchronization in Filament's recovery code validation logic. When a user attempts MFA authentication using a recovery code, the system should atomically mark that code as consumed before granting a session. However, the current implementation allows concurrent requests to validate and consume the same recovery code simultaneously. A race condition permits multiple POST requests with identical recovery codes to all pass validation before any of them update the consumed flag in the database. This is a classic time-of-check-time-of-use (TOCTOU) flaw exacerbated by async/parallel submission patterns. The vulnerability is classified under CWE-362 (Concurrent Execution using Shared Resource with Improper Synchronization) and CWE-841 (Improper Enforcement of Behavioral Workflow).

Business impact

For organizations relying on Filament-powered applications with MFA enabled, this vulnerability degrades the security posture of the second factor of authentication. If an attacker obtains valid credentials plus recovery codes—via phishing, credential stuffing, or a previous breach—they can extend their dwell time in a compromised account by reusing recovery codes. The single-use property of recovery codes is a critical trust boundary in MFA architecture; its violation means the intended mitigation of 'limited factor depletion' is negated. This is particularly damaging because recovery codes are often stored less vigilantly than primary credentials, and users may not notice rapid, concurrent authentication attempts in logs. Organizations may face regulatory scrutiny if MFA enforcement was part of their compliance posture.

Affected systems

Filament versions 4.0.0 through 4.11.4 and 5.0.0 through 5.6.4 are vulnerable. Applications using Filament with app-based MFA and recovery codes explicitly enabled are at risk. This does not affect systems using email-based MFA or those with recovery codes disabled. The vulnerability requires an attacker to have already obtained both the user's password and valid recovery codes, making this a post-compromise privilege escalation vector rather than a primary entry point.

Exploitability

Exploitation requires moderate attacker effort. First, the attacker must obtain valid user credentials and recovery codes—typically through a separate breach, phishing, or social engineering. Second, they must recognize that the target runs Filament and has recovery codes enabled. Third, they must submit a recovery code multiple times in rapid parallel requests (e.g., concurrent HTTP requests within milliseconds). The barrier is not technical difficulty but rather access to the secondary factor material. Once codes are in hand, the concurrency exploit is straightforward. The CVSS score of 7.4 (HIGH) reflects high confidentiality and integrity impact, but acknowledges that Authentication Complexity is High and the attacker has no privileges initially.

Remediation

Upgrade to Filament version 4.11.5 or 5.6.5, which implement proper locking and atomic operations to ensure recovery codes cannot be reused across concurrent requests. Verify patch application against the vendor advisory and test in a staging environment with app-based MFA enabled. Additionally, consider organizational controls: monitor for suspicious patterns of rapid authentication attempts from the same recovery code, audit who has access to recovery code storage, and educate users to securely store recovery codes offline and report suspicious account activity.

Patch guidance

Apply the fixed versions 4.11.5 (for the 4.x line) or 5.6.5 (for the 5.x line) as soon as operationally feasible. These releases contain transaction-level locking or optimistic locking mechanisms that prevent concurrent consumption of the same recovery code. Test the upgrade in a non-production environment first, particularly any custom authentication workflows. Verify that app-based MFA still functions correctly and that recovery codes are now single-use as intended. No configuration changes are required; the fix is transparent to end users.

Detection guidance

Look for multiple successful MFA authentications from the same recovery code within a short time window (seconds to minutes). If your Filament application logs authentication events, search for duplicate recovery code usage per user within a single login session or across closely-timed sessions. Monitor for unusual velocity in recovery code consumption—for example, a user burning through multiple recovery codes in rapid succession. Enable detailed audit logging on MFA events if not already in place. Consider implementing rate-limiting on MFA authentication endpoints to slow concurrent submission attacks. Review recent authentication logs for users with high-privilege roles to identify potential unauthorized access.

Why prioritize this

This should be prioritized as HIGH urgency for any organization running vulnerable Filament versions with app-based MFA and recovery codes enabled. The attack requires prior compromise but materially undermines a critical security control (single-use recovery codes). The impact on confidentiality and integrity is significant, and the fix is straightforward and low-risk. Organizations should patch within their standard critical-vulnerability timeline (typically 1–2 weeks for high-severity issues).

Risk score, explained

The CVSS 3.1 score of 7.4 reflects: High confidentiality and integrity impact (attacker gains extended session access and could modify data), High attack complexity (requires prior possession of password + codes), and Network-accessible attack vector. The score is elevated by the fact that MFA is a trust boundary, but tempered by the requirement for pre-existing credential compromise. In context, the real-world risk depends on the sensitivity of data in the Filament application and the likelihood of concurrent recovery code exploitation in your threat model.

Frequently asked questions

Does this affect users who don't use recovery codes?

No. Recovery codes must be explicitly enabled in Filament's MFA configuration. If your application disables recovery codes or uses only other MFA factors (TOTP, email), you are not affected.

If we have email-based MFA enabled, are we vulnerable?

No. The vulnerability is specific to app-based (typically TOTP) MFA with recovery codes. Email-based MFA is not affected by this concurrency flaw.

What should we do if we cannot patch immediately?

Implement compensating controls: enable detailed audit logging of MFA events, set up alerts for multiple recovery code uses from the same user in quick succession, enforce strong password policies to reduce the likelihood of credential compromise, and consider temporarily disabling recovery codes if risk tolerance is very low.

How would an attacker discover that recovery codes are vulnerable to concurrent submission?

An attacker would need to either have prior knowledge of the Filament vulnerability or conduct testing after obtaining credentials and recovery codes. The concurrency requirement is not obvious from normal use but is a straightforward discovery during exploit development if recovery codes are available.

This analysis is based on the CVE record and vendor advisory as of the publication date. Always verify patch version compatibility and test in a staging environment before production deployment. No exploit code or weaponized proof-of-concept is provided. Organizations are responsible for assessing their own exposure, prioritizing based on their architecture and risk profile, and implementing patches or compensating controls according to their change management processes. Consult the official Filament security advisory and your vendor for the most current guidance. Source: NVD (public-domain), retrieved 2026-07-28. Analysis generated by SEC.co (claude-haiku-4-5).