{"id":"CVE-2026-104181","kind":"vulnerability","aliases":["CVE-2026-104181","GHSA-7m6h-rg42-m449"],"related":[],"title":"Filament: Multi-factor authentication (app) management actions do not require password reauthentication","description":"App-based multi-factor authentication management actions did not consistently require the user to confirm their current password. In particular, an authenticated session could set up app-based MFA and obtain recovery codes without password reauthentication. Disabling app-based MFA and regenerating recovery codes also accepted an existing app code or recovery code without requiring the current password. This issue does not affect email-based MFA.\n\nIf an attacker gains access to a user's authenticated session, they could enable app-based MFA and obtain recovery codes without knowing the user's password, changing the account's MFA configuration and potentially locking the legitimate user out. This issue does not by itself allow an unauthenticated attacker to sign in.","summary":"Filament's app-based MFA management actions (setup, disable, regenerate recovery codes) did not require the current password, so anyone with a logged-in session could change a user's MFA configuration. An attacker with a hijacked session could enroll their own MFA app, take recovery codes, or lock the real user out, but cannot sign in on their own.","severity":"medium","cvss":5.400000095367432,"epss":0.0034000000450760126,"exploited":false,"exploited_at":null,"products":[{"name":"filament/filament","fixed":["4.13.3"],"affected":">= 4.0.0, <= 4.13.2","ecosystem":"composer"},{"name":"filament/filament","fixed":["5.8.3"],"affected":">= 5.0.0, <= 5.8.2","ecosystem":"composer"}],"ecosystems":["composer"],"tags":["admin-panels","cwe-306","filament","laravel","package","php"],"not_affected_if":["email-based-mfa-only","no-app-based-mfa","unaffected-version"],"how_to_check":"Run composer show filament/filament and check whether the version is in 4.0.0 to 4.13.2 or 5.0.0 to 5.8.2.\nIf the app uses app-based MFA, review the Filament panel's MFA settings to confirm it is enabled.","fix":"Upgrade filament/filament to 4.13.3 (4.x line) or 5.8.3 (5.x line).","status":"open","published_at":"2026-10-01T21:17:18+00:00","first_seen_at":"2026-10-23T19:11:32+00:00","triaged_at":"2026-10-23T19:58:17+00:00","updated_at":"2026-10-23T23:44:52+00:00","category":"package","confidence":0.85,"triage":{"at":"2026-10-23T19:58:17Z","model":"claude-haiku-5-5","output":{"fix":"Upgrade filament/filament to 4.13.3 (4.x line) or 5.8.3 (5.x line).\nunknown","summary":"Filament's app-based MFA management actions (setup, disable, regenerate recovery codes) did not require the current password, so anyone with a logged-in session could change a user's MFA configuration. An attacker with a hijacked session could enroll their own MFA app, take recovery codes, or lock the real user out, but cannot sign in on their own.","category":"package","who_cares":["filament","laravel","php","admin-panels"],"confidence":0.85,"analyst_note":"","how_to_check":"Run composer show filament/filament and check whether the version is in 4.0.0 to 4.13.2 or 5.0.0 to 5.8.2.\nIf the app uses app-based MFA, review the Filament panel's MFA settings to confirm it is enabled.\nunknown","needs_analyst":false,"not_affected_if":["email-based-mfa-only","no-app-based-mfa","unaffected-version"],"severity_if_unknown":"medium"},"cost_usd":0.000408,"input_tokens":2234,"output_tokens":370,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-104181':16A,24A '-2026':15A,23A '-306':31B '7m6h':19A 'accept':143C 'access':169C 'account':195C 'action':8A,43B,102C 'admin':28B 'admin-panel':27B 'affect':160C 'allow':212C 'also':142C 'anyon':56B 'app':6A,39B,81B,95C,123C,135C,146C,180C 'app-bas':38B,94C,122C,134C,179C 'attack':71B,167C,215C 'authent':5A,100C,117C,174C 'base':40B,96C,124C,136C,163C,181C 'cannot':92B 'chang':64B,193C 'code':48B,84B,129C,141C,147C,150C,186C 'configur':69B,198C 'confirm':110C 'consist':105C 'could':63B,76B,119C,177C 'current':53B,112C,154C 'cve':14A,22A 'cwe':30B 'disabl':45B,133C 'email':162C 'email-bas':161C 'enabl':178C 'enrol':77B 'exist':145C 'factor':4A,99C 'filament':1A,32B,36B 'filament/filament':25A,26A 'gain':168C 'ghsa':18A 'ghsa-7m6h-rg42-m449':17A 'hijack':74B 'issu':157C,207C 'know':188C 'laravel':33B 'legitim':203C 'lock':86B,201C 'log':60B 'logged-in':59B 'm449':21A 'manag':7A,42B,101C 'mfa':41B,68B,80B,125C,137C,164C,182C,197C 'multi':3A,98C 'multi-factor':2A,97C 'obtain':127C,184C 'packag':34B 'panel':29B 'particular':115C 'password':12A,54B,113C,131C,155C,192C 'php':35B 'potenti':200C 'real':88B 'reauthent':13A,132C 'recoveri':47B,83B,128C,140C,149C,185C 'regener':46B,139C 'requir':11A,51B,106C,152C 'rg42':20A 'session':62B,75B,118C,175C 'set':120C 'setup':44B 'sign':93B,217C 'take':82B 'unauthent':214C 'user':66B,89B,108C,172C,190C,204C 'without':130C,151C,187C","nicknames":[],"mitigations":[],"who_affected":null,"tier":null,"verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-01T21:17:18+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L","cvss_by":"GitHub","poc_count":0,"sources":[{"source":"ghsa","external_id":"GHSA-7m6h-rg42-m449","url":"https://github.com/advisories/GHSA-7m6h-rg42-m449","severity":"medium","published_at":"2026-10-05T23:44:12+00:00","modified_at":"2026-10-19T19:37:41+00:00","first_seen_at":"2026-10-23T19:11:32+00:00","fetched_at":"2026-10-23T19:11:32+00:00","note":null},{"source":"nvd","external_id":"CVE-2026-104181","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-104181","severity":null,"published_at":"2026-10-01T21:17:18+00:00","modified_at":"2026-10-06T03:16:59+00:00","first_seen_at":"2026-10-23T23:44:52+00:00","fetched_at":"2026-10-23T23:44:52+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}