{"id":"CVE-2015-7225","aliases":["DEBIAN-CVE-2015-7225","EUVD-2018-0428","GHSA-x489-jjwm-52g7","UBUNTU-CVE-2015-7225"],"status":"published","title":"Tinfoil Devise-two-factor does not \"burn\" a successfully validated one-time password (OTP)","description":"Tinfoil Devise-two-factor before 2.0.0 does not strictly follow section 5.2 of RFC 6238 and does not \"burn\" a successfully validated one-time password (aka OTP), which allows remote or 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.","severity":{"version":"3.0","score":5.3,"vector":"CVSS:3.0/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N","level":"medium","assessor":"primary","from":"nvd"},"epss":{"day":"2026-11-07","score":0.02058,"percentile":0.81419,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-254"],"published":"2017-09-06T21:00:00Z","modified":"2026-09-09T07:01:10Z","fixes":[{"ecosystem":"RubyGems","package":"devise-two-factor","fixed_in":["2.0.0"],"sources":["ghsa","osv"]},{"ecosystem":"Debian:12","package":"ruby-devise-two-factor","fixed_in":["2.0.0-1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"RubyGems","package":"devise-two-factor","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.0.0"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"ruby-devise-two-factor","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.0.0-1"}]}]},{"source":"osv","ecosystem":"RubyGems","package":"devise-two-factor","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.0.0"}]}],"versions":["1.0.0","1.0.1","1.0.2","1.1.0"]}],"products":[{"vendor":"tinfoilsecurity","product":"devise-two-factor"}],"references":[{"url":"https://github.com/tinfoil/devise-two-factor/blob/master/UPGRADING.md","tags":["x_refsource_CONFIRM","x_transferred","Third Party Advisory","advisory","web"]},{"url":"http://www.openwall.com/lists/oss-security/2015/09/17/2","tags":["mailing-list","x_refsource_MLIST","x_transferred","Mailing List","VDB Entry","advisory","article","web"]},{"url":"http://www.openwall.com/lists/oss-security/2015/06/20/4","tags":["mailing-list","x_refsource_MLIST","x_transferred","Mailing List","VDB Entry","advisory","article","web"]},{"url":"http://www.securityfocus.com/bid/76789","tags":["vdb-entry","x_refsource_BID","x_transferred","Third Party Advisory","VDB Entry","advisory"]},{"url":"https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=798466","tags":["x_refsource_MISC","x_transferred","Mailing List","Third Party Advisory","advisory","article","web"]},{"url":"https://github.com/tinfoil/devise-two-factor/issues/45#issuecomment-139335608","tags":["x_refsource_CONFIRM","x_transferred","Third Party Advisory","advisory","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2015-7225","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-x489-jjwm-52g7","tags":["advisory"]},{"url":"https://github.com/rubysec/ruby-advisory-db/blob/master/gems/devise-two-factor/CVE-2015-7225.yml","tags":["web"]},{"url":"http://www.openwall.com/lists/oss-security/2015/09/06/2","tags":["web","report"]},{"url":"https://web.archive.org/web/20210122192452/https://www.securityfocus.com/bid/76789/"},{"url":"https://security-tracker.debian.org/tracker/CVE-2015-7225","tags":["advisory"]},{"url":"https://github.com/tinfoil/devise-two-factor","tags":["package"]},{"url":"https://web.archive.org/web/20210122192452/https://www.securityfocus.com/bid/76789","tags":["web"]},{"url":"https://ubuntu.com/security/CVE-2015-7225","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2015-7225","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2015-7225","description":"Tinfoil Devise-two-factor before 2.0.0 does not strictly follow section 5.2 of RFC 6238 and does not \"burn\" a successfully validated one-time password (aka OTP), which allows remote or 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.","status":"published","published":"2017-09-06T21:00:00Z","modified":"2024-08-06T07:43:45.764Z","updated_at":"2026-11-02T14:35:44.404481Z"}],"euvd":[{"id":"EUVD-2018-0428","description":"Tinfoil Devise-two-factor before 2.0.0 does not strictly follow section 5.2 of RFC 6238 and does not \"burn\" a successfully validated one-time password (aka OTP), which allows remote or 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.","status":"published","published":"2017-09-06T21:00:00Z","modified":"2024-08-06T07:43:45Z","updated_at":"2026-11-03T02:21:53.484561Z"}],"ghsa":[{"id":"GHSA-x489-jjwm-52g7","title":"Tinfoil Devise-two-factor does not \"burn\" a successfully validated one-time password (OTP)","description":"Tinfoil Devise-two-factor before 2.0.0 does not strictly follow [RFC 6238 § 5.2 ](https://datatracker.ietf.org/doc/html/rfc6238#section-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.","status":"published","published":"2018-08-28T22:34:15Z","modified":"2023-07-05T20:45:13Z","cvss":[{"version":"3.0","score":5.3,"vector":"CVSS:3.0/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N","level":"medium"}],"updated_at":"2026-11-02T14:36:55.91458Z"}],"nvd":[{"id":"CVE-2015-7225","description":"Tinfoil Devise-two-factor before 2.0.0 does not strictly follow section 5.2 of RFC 6238 and does not \"burn\" a successfully validated one-time password (aka OTP), which allows remote or 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.","status":"published","published":"2017-09-06T21:29:00.957Z","modified":"2026-06-17T00:32:05.073Z","cvss":[{"version":"3.0","score":5.3,"vector":"CVSS:3.0/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N","level":"medium","assessor":"primary"},{"version":"2.0","score":3.5,"vector":"AV:N/AC:M/Au:S/C:P/I:N/A:N","level":"low","assessor":"primary"}],"cwes":["CWE-254"],"updated_at":"2026-11-02T14:03:17.730372Z"}],"osv":[{"id":"CVE-2015-7225","description":"Tinfoil Devise-two-factor before 2.0.0 does not strictly follow section 5.2 of RFC 6238 and does not \"burn\" a successfully validated one-time password (aka OTP), which allows remote or 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.","status":"published","published":"2017-09-06T21:29:00Z","modified":"2026-04-10T03:46:26.304769Z","cvss":[{"version":"3.0","score":5.3,"vector":"CVSS:3.0/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N","level":"medium"}],"updated_at":"2026-11-02T15:44:01.068991Z"},{"id":"DEBIAN-CVE-2015-7225","description":"Tinfoil Devise-two-factor before 2.0.0 does not strictly follow section 5.2 of RFC 6238 and does not \"burn\" a successfully validated one-time password (aka OTP), which allows remote or 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.","status":"published","published":"2017-09-06T21:29:00.957Z","modified":"2026-09-09T07:01:10.507066616Z","cvss":[{"version":"3.0","score":5.3,"vector":"CVSS:3.0/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N","level":"medium"}],"updated_at":"2026-11-02T15:45:27.04239Z"},{"id":"GHSA-x489-jjwm-52g7","title":"Tinfoil Devise-two-factor does not \"burn\" a successfully validated one-time password (OTP)","description":"Tinfoil Devise-two-factor before 2.0.0 does not strictly follow [RFC 6238 § 5.2 ](https://datatracker.ietf.org/doc/html/rfc6238#section-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.","status":"published","published":"2018-08-28T22:34:15Z","modified":"2024-12-08T05:44:02.14629Z","cvss":[{"version":"3.0","score":5.3,"vector":"CVSS:3.0/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N","level":"medium"}],"updated_at":"2026-11-02T15:46:59.484835Z"},{"id":"UBUNTU-CVE-2015-7225","description":"Tinfoil Devise-two-factor before 2.0.0 does not strictly follow section 5.2 of RFC 6238 and does not \"burn\" a successfully validated one-time password (aka OTP), which allows remote or 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.","status":"withdrawn","published":"2017-09-06T21:29:00Z","modified":"2025-07-16T08:11:42.481334Z","cvss":[{"version":"3.0","score":5.3,"vector":"CVSS:3.0/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N","level":"medium"}],"updated_at":"2026-11-02T15:54:10.737723Z"}]}}
