{"id":"CVE-2026-126294","kind":"vulnerability","aliases":["CVE-2026-126294"],"related":[],"title":"Grav Login plugin: two-factor check skipped, giving admin accounts access","description":"Grav Login plugin before 3.11.0 contains an authentication bypass vulnerability that allows attackers with an account password to skip two-factor verification when the global twofa_enabled setting is off. Attackers can sign in through the /login form, remember-me cookie, or magic link to obtain a session the API plugin accepts, gaining full account permissions including super-admin control.","summary":"The Grav Login plugin before 3.11.0 lets someone who knows an account password skip two-factor verification when the global twofa_enabled setting is off. The attacker gets a session with full account permissions, including super-admin control.","severity":"high","cvss":8.7,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["grav","grav-login-plugin","package","php","self-hosted"],"not_affected_if":["twofa-enabled","version-3.11.0-or-later"],"how_to_check":"- Check the installed Login plugin version in the Grav admin plugins list or `plugins/login/blueprints.yaml` against the fixed version.\n- Check whether `twofa_enabled` is set to off in the Login plugin configuration.\n- Check whether the API plugin is installed, since the sources say it accepts the resulting session.","fix":"- Grav Login plugin: move to `3.11.0` or later.","status":"open","published_at":"2026-11-13T10:17:33+00:00","first_seen_at":"2026-11-13T10:47:14+00:00","triaged_at":"2026-11-13T10:50:32+00:00","updated_at":"2026-11-13T10:50:32+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-11-13T10:50:32Z","model":"claude-haiku-5-5","output":{"fix":"- Grav Login plugin: move to `3.11.0` or later.","reach":"internet","title":"Grav Login plugin: two-factor check skipped, giving admin accounts access","impact":"high","summary":"The Grav Login plugin before 3.11.0 lets someone who knows an account password skip two-factor verification when the global twofa_enabled setting is off. The attacker gets a session with full account permissions, including super-admin control.","audience":"businesses","category":"package","nicknames":[],"who_cares":["grav","grav-login-plugin","self-hosted","php"],"confidence":0.8,"fix_status":"available","needs_auth":"yes","worst_case":"Attacker gains super-admin control of the Grav site with a password","analyst_note":"","how_to_check":"- Check the installed Login plugin version in the Grav admin plugins list or `plugins/login/blueprints.yaml` against the fixed version.\n- Check whether `twofa_enabled` is set to off in the Login plugin configuration.\n- Check whether the API plugin is installed, since the sources say it accepts the resulting session.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["version-3.11.0-or-later","twofa-enabled"],"who_is_affected":"Sites running the Grav Login plugin before 3.11.0 where the global twofa_enabled setting is off. The sources say the forged session is accepted by the API plugin, so sites with the API plugin are most exposed. Sites that have two-factor enabled globally or run a fixed version are not affected.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000743,"input_tokens":4613,"output_tokens":564,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-126294':15A,18A '-2026':14A,17A '/login':106C '3.11.0':34B,73C 'accept':122C 'access':12A 'account':11A,40B,62B,84C,125C 'admin':10A,67B,130C 'allow':80C 'api':120C 'attack':56B,81C,100C 'authent':76C 'bypass':77C 'check':7A 'contain':74C 'control':68B,131C 'cooki':111C 'cve':13A,16A 'enabl':51B,96C 'factor':6A,45B,90C 'form':107C 'full':61B,124C 'gain':123C 'get':57B 'give':9A 'global':49B,94C 'grav':1A,19B,21B,30B,69C 'grav-login-plugin':20B 'host':28B 'includ':64B,127C 'know':38B 'let':35B 'link':114C 'login':2A,22B,31B,70C 'magic':113C 'obtain':116C 'packag':24B 'password':41B,85C 'permiss':63B,126C 'php':25B 'plugin':3A,23B,32B,71C,121C 'rememb':109C 'remember-m':108C 'self':27B 'self-host':26B 'session':59B,118C 'set':52B,97C 'sign':102C 'skip':8A,42B,87C 'someon':36B 'super':66B,129C 'super-admin':65B,128C 'two':5A,44B,89C 'two-factor':4A,43B,88C 'twofa':50B,95C 'verif':46B,91C 'vulner':78C","nicknames":[],"mitigations":[],"who_affected":"Sites running the Grav Login plugin before 3.11.0 where the global twofa_enabled setting is off. The sources say the forged session is accepted by the API plugin, so sites with the API plugin are most exposed. Sites that have two-factor enabled globally or run a fixed version are not affected.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["grav","gravloginplugin","high","package","php","selfhosted"],"campaign_type":null,"search_a":"'-126294':15A,18A '-2026':14A,17A 'access':12A 'account':11A 'admin':10A 'check':7A 'cve':13A,16A 'factor':6A 'give':9A 'grav':1A 'login':2A 'plugin':3A 'skip':8A 'two':5A 'two-factor':4A","search_b":"'3.11.0':34B 'account':40B,62B 'admin':67B 'attack':56B 'control':68B 'enabl':51B 'factor':45B 'full':61B 'get':57B 'global':49B 'grav':19B,21B,30B 'grav-login-plugin':20B 'host':28B 'includ':64B 'know':38B 'let':35B 'login':22B,31B 'packag':24B 'password':41B 'permiss':63B 'php':25B 'plugin':23B,32B 'self':27B 'self-host':26B 'session':59B 'set':52B 'skip':42B 'someon':36B 'super':66B 'super-admin':65B 'two':44B 'two-factor':43B 'twofa':50B 'verif':46B","search_c":"'/login':106C '3.11.0':73C 'accept':122C 'account':84C,125C 'admin':130C 'allow':80C 'api':120C 'attack':81C,100C 'authent':76C 'bypass':77C 'contain':74C 'control':131C 'cooki':111C 'enabl':96C 'factor':90C 'form':107C 'full':124C 'gain':123C 'global':94C 'grav':69C 'includ':127C 'link':114C 'login':70C 'magic':113C 'obtain':116C 'password':85C 'permiss':126C 'plugin':71C,121C 'rememb':109C 'remember-m':108C 'session':118C 'set':97C 'sign':102C 'skip':87C 'super':129C 'super-admin':128C 'two':89C 'two-factor':88C 'twofa':95C 'verif':91C 'vulner':78C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-10-27T03:16:49+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-126294","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-126294","severity":null,"published_at":"2026-11-13T10:17:33+00:00","modified_at":"2026-11-13T10:17:34+00:00","first_seen_at":"2026-11-13T10:47:14+00:00","fetched_at":"2026-11-13T10:47:14+00:00","note":null}],"documents":[{"id":144917,"url":"https://github.com/getgrav/grav/security/advisories/GHSA-4x9h-4683-5fcx","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-10-27T03:16:49+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":144918,"url":"https://www.vulncheck.com/advisories/grav-login-plugin-before-3.11.0-two-factor-authentication-bypass-via-login","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.com"}],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}