Tinfoil Devise-two-factor before 2.0.0 does not strictly follow RFC 6238 § 5.2 and does not “burn” a successfully validated one-time password (aka OTP), which allows physically proximate attackers with a target user’s login credentials to log in as said user by obtaining the OTP through performing a man-in-the-middle attack between the provider and verifier, or “shoulder surfing”, and replaying the OTP in the current time-step.
www.openwall.com/lists/oss-security/2015/06/20/4
www.openwall.com/lists/oss-security/2015/09/06/2
www.openwall.com/lists/oss-security/2015/09/17/2
bugs.debian.org/cgi-bin/bugreport.cgi?bug=798466
github.com/advisories/GHSA-x489-jjwm-52g7
github.com/rubysec/ruby-advisory-db/blob/master/gems/devise-two-factor/CVE-2015-7225.yml
github.com/tinfoil/devise-two-factor
github.com/tinfoil/devise-two-factor/blob/master/UPGRADING.md
github.com/tinfoil/devise-two-factor/issues/45#issuecomment-139335608
nvd.nist.gov/vuln/detail/CVE-2015-7225
web.archive.org/web/20210122192452/https://www.securityfocus.com/bid/76789