Django-mfa2: Authentication Bypass by Capture-replay
CVE-2022-42731 is a high-severity authentication bypass by capture-replay vulnerability in Django-mfa2 from Django-mfa2 Project, with a CVSS 3.1 base score of 7.5 out of 10. It can be exploited remotely over the network by an unauthenticated attacker, without any action from a user. The record lists versions 2.5.1, 2.6.1 as the first without the flaw, so updating Django-mfa2 to one of those releases or later removes the exposure. There is no confirmed exploitation so far. EPSS estimates a 1.51% chance of exploitation within 30 days, higher than 75% of scored CVEs.
High severity with no evidence of exploitation so far.
What to do
- Update Django-mfa2 to 2.5.1 or 2.6.1, whichever matches your release line, or a later version.
- Until you can update, restrict network access to the affected service so it is not reachable from untrusted networks.
Affected products and versions
| Vendor | Product | Affected versions | Fixed in |
|---|---|---|---|
| Django-mfa2 Project | Django-mfa2 | before 2.5.1; 2.6.0 up to, but not including, 2.6.1 | 2.5.1, 2.6.1 |
Version data comes from NVD's product matching. Confirm against the vendor advisory before deciding you are unaffected.
How the severity score breaks down
- Attack vector
- NetworkCan be exploited remotely over a network, including the internet.
- Attack complexity
- LowNo special conditions are needed; the attack works reliably.
- Privileges required
- NoneNo account or login is needed.
- User interaction
- NoneNo action by a victim is required.
- Scope
- UnchangedImpact stays within the vulnerable component.
- Confidentiality
- NoneNo data is disclosed.
- Integrity
- HighData or code can be modified at will.
- Availability
- NoneAvailability is not affected.
Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N. Scored by NVD.
| Scoring system | Score | Severity | Scored by |
|---|---|---|---|
| CVSS 3.1 | 7.5 | High | NVD |
| CVSS 3.1 | 7.5 | High | CISA (ADP) |
Official 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.
Source: the CVE record as published by its numbering authority, via NVD and CVE.org.
The underlying weakness: Authentication Bypass by Capture-replay
A capture-replay flaw exists when the design of the product makes it possible for a malicious user to sniff network traffic and bypass authentication by replaying it to the server in question to the same effect as the original message (or with minor changes).
How developers prevent this class of flaw
- Utilize some sequence or time stamping functionality along with a checksum which takes this into account in order to ensure that messages can be parsed only once.
- Since any attacker who can listen to traffic can see sequence numbers, it is necessary to sign messages with some kind of cryptography to ensure that sequence numbers are not simply doctored along with content.
More Authentication Bypass by Capture-replay vulnerabilities (CWE-294)
Timeline
- CVE record published.
- CISA published its SSVC assessment (exploitation: none, automatable: yes, technical impact: partial).
- Record last changed materially (score, affected products, status or references).
References
Patches and release notes
- github.com/mkalioby/django-mfa2/releases/tag/v2.5.1-releaseRelease Notes, Third Party Advisory
- github.com/mkalioby/django-mfa2/releases/tag/v2.6.1-releaseRelease Notes, Third Party Advisory
Technical write-ups (may include proof of concept)
- github.com/mkalioby/django-mfa2/blob/0936ea253354dd95cb127f09d0efa31324caef27/mfa/FIDO2.py#L58Exploit, Third Party Advisory
Recent Authentication Bypass by Capture-replay vulnerabilities
- 7.5 High severity
- 9.8 Critical severity
- 9.8 Critical severity
- 7.5 High severity
- 7.5 High severity
- 8.1 High severity
Spotted an error? Tell us.