{"id":"CVE-2022-42731","aliases":["EUVD-2022-0080","GHSA-vw39-2wj9-4q86","PYSEC-2022-303"],"status":"published","title":"django-mfa2 vulnerable to MFA Replay attack","description":"mfa/FIDO2.py in django-mfa2 before 2.5.1 and 2.6.x before 2.6.1 allows a replay attack that could be used to register another device for a user. The device registration challenge is not invalidated after usage.","severity":{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N","level":"high","assessor":"primary","from":"nvd"},"epss":{"day":"2026-11-10","score":0.01507,"percentile":0.74594,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-294"],"published":"2022-10-11T00:00:00Z","modified":"2026-10-28T02:30:49Z","fixes":[{"ecosystem":"PyPI","package":"django-mfa2","fixed_in":["2.5.1","2.6.1"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"django-mfa2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.5.1"}]}]},{"source":"ghsa","ecosystem":"PyPI","package":"django-mfa2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.6.0"},{"fixed":"2.6.1"}]}]},{"source":"osv","ecosystem":"PyPI","package":"django-mfa2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.5.1"}]}],"versions":["0.8","0.8.5","0.8.7","0.8.8","0.9.0","0.9.1","0.9.2","0.9.4","0.9.5","1.0","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5","1.1","1.1.1","1.1.2","1.1.5","1.1.6","1.1.7","1.1.8","1.1.8.1","1.2.0","1.2.1","1.3.0","1.4.0","1.4.1","1.5.0","1.6","1.7.0","1.7.10","1.7.11","1.7.12","1.7.13","1.7.5","1.7.6","1.7.7","1.7.8","1.7.9","1.8.0","1.8.1","1.9.0","2.0.0","2.0.1","2.0.2","2.0.3","2.0.4","2.0.5","2.0.6","2.1.0","2.1.2","2.1.2b1","2.2.0","2.2.0b1","2.2.0b2","2.3.0","2.4.0","2.5.0","2.5.0b1","2.5.0b2"]},{"source":"osv","ecosystem":"PyPI","package":"django-mfa2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.6.0"},{"fixed":"2.6.1"}]}],"versions":["2.6.0"]},{"source":"osv","ecosystem":"PyPI","package":"django-mfa2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.5.1"},{"introduced":"2.6.0"},{"fixed":"2.6.1"}]}],"versions":["0.8","0.8.5","0.8.7","0.8.8","0.9.0","0.9.1","0.9.2","0.9.4","0.9.5","1.0","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5","1.1","1.1.1","1.1.2","1.1.5","1.1.6","1.1.7","1.1.8","1.1.8.1","1.2.0","1.2.1","1.3.0","1.4.0","1.4.1","1.5.0","1.6","1.7.0","1.7.10","1.7.11","1.7.12","1.7.13","1.7.5","1.7.6","1.7.7","1.7.8","1.7.9","1.8.0","1.8.1","1.9.0","2.0.0","2.0.1","2.0.2","2.0.3","2.0.4","2.0.5","2.0.6","2.1.0","2.1.2","2.1.2b1","2.2.0","2.2.0b1","2.2.0b2","2.3.0","2.4.0","2.5.0","2.5.0b1","2.5.0b2","2.6.0"]}],"products":[{"vendor":"django-mfa2_project","product":"django-mfa2"}],"references":[{"url":"https://github.com/mkalioby/django-mfa2/blob/0936ea253354dd95cb127f09d0efa31324caef27/mfa/FIDO2.py#L58","tags":["x_transferred","Exploit","Third Party Advisory","web","evidence"]},{"url":"https://github.com/mkalioby/django-mfa2/releases/tag/v2.5.1-release","tags":["x_transferred","Release Notes","Third Party Advisory","web"]},{"url":"https://github.com/mkalioby/django-mfa2/releases/tag/v2.6.1-release","tags":["x_transferred","Release Notes","Third Party Advisory","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2022-42731","tags":["advisory"]},{"url":"https://github.com/pypa/advisory-database/tree/main/vulns/django-mfa2/PYSEC-2022-303.yaml","tags":["web"]},{"url":"https://github.com/mkalioby/django-mfa2/commit/54db5a513bcafa97a36e9f6dfa31d3c61fa8217b","tags":["web"]},{"url":"https://github.com/mkalioby/django-mfa2/commit/5fbb505e98ecdd409330a5c336ad5ec49631b0db","tags":["web"]},{"url":"https://github.com/advisories/GHSA-vw39-2wj9-4q86","tags":["advisory"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2022/42xxx/CVE-2022-42731.json","tags":["advisory"]},{"url":"https://github.com/mkalioby/django-mfa2","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2022-42731","description":"mfa/FIDO2.py in django-mfa2 before 2.5.1 and 2.6.x before 2.6.1 allows a replay attack that could be used to register another device for a user. The device registration challenge is not invalidated after usage.","status":"published","published":"2022-10-11T00:00:00Z","modified":"2025-05-20T14:11:23.8Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N","level":"high","assessor":"adp"}],"cwes":["CWE-294"],"updated_at":"2026-11-02T14:34:27.327929Z"}],"euvd":[{"id":"EUVD-2022-0080","description":"mfa/FIDO2.py in django-mfa2 before 2.5.1 and 2.6.x before 2.6.1 allows a replay attack that could be used to register another device for a user. The device registration challenge is not invalidated after usage.","status":"published","published":"2022-10-11T00:00:00Z","modified":"2025-05-20T14:11:23Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N","level":"high"}],"updated_at":"2026-11-02T20:32:43.763029Z"}],"ghsa":[{"id":"GHSA-vw39-2wj9-4q86","title":"django-mfa2 vulnerable to MFA Replay attack","description":"mfa/FIDO2.py in django-mfa2 before 2.5.1 and 2.6.x before 2.6.1 allows a replay attack that could be used to register another device for a user. The device registration challenge is not invalidated after usage.","status":"published","published":"2022-10-11T19:00:29Z","modified":"2024-09-16T22:09:26Z","cvss":[{"version":"4.0","score":8.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N","level":"high"},{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N","level":"high"}],"cwes":["CWE-294"],"updated_at":"2026-11-02T14:38:03.800952Z"}],"nvd":[{"id":"CVE-2022-42731","description":"mfa/FIDO2.py in django-mfa2 before 2.5.1 and 2.6.x before 2.6.1 allows a replay attack that could be used to register another device for a user. The device registration challenge is not invalidated after usage.","status":"published","published":"2022-10-11T14:15:10.053Z","modified":"2026-06-17T05:05:12.303Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N","level":"high","assessor":"primary"},{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N","level":"high","assessor":"secondary"}],"cwes":["CWE-294"],"updated_at":"2026-11-02T14:07:29.026521Z"}],"osv":[{"id":"CVE-2022-42731","description":"mfa/FIDO2.py in django-mfa2 before 2.5.1 and 2.6.x before 2.6.1 allows a replay attack that could be used to register another device for a user. The device registration challenge is not invalidated after usage.","status":"published","published":"2022-10-11T00:00:00Z","modified":"2026-10-28T02:30:49.196841817Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N","level":"high"}],"updated_at":"2026-11-02T15:44:27.186787Z"},{"id":"GHSA-vw39-2wj9-4q86","title":"django-mfa2 vulnerable to MFA Replay attack","description":"mfa/FIDO2.py in django-mfa2 before 2.5.1 and 2.6.x before 2.6.1 allows a replay attack that could be used to register another device for a user. The device registration challenge is not invalidated after usage.","status":"published","published":"2022-10-11T19:00:29Z","modified":"2026-06-10T18:44:18Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N","level":"high"},{"version":"4.0","score":8.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N","level":"high"}],"cwes":["CWE-294"],"updated_at":"2026-11-02T15:46:57.694388Z"},{"id":"PYSEC-2022-303","description":"mfa/FIDO2.py in django-mfa2 before 2.5.1 and 2.6.x before 2.6.1 allows a replay attack that could be used to register another device for a user. The device registration challenge is not invalidated after usage.","status":"published","published":"2022-10-11T14:15:00Z","modified":"2026-06-10T17:00:49.634621035Z","updated_at":"2026-11-02T15:52:53.449407Z"}]}}
