CVE-2024-8796: Insufficient Default OTP Shared Secret Length

Published Sep 17, 2024
·
Updated

Summary Under the default configuration, Devise-Two-Factor versions 1.0.0 or >= 4.0.0 & < 6.0.0 generate TOTP shared secrets that are 120 bits instead of the 128-bit minimum defined by RFC 4226. Using a shared secret shorter than the minimum to generate a multi-factor authentication code could make it easier for an attacker to guess the shared secret and generate valid TOTP codes.

Remediation Devise-Two-Factor should be upgraded to version v6.0.0 as soon as possible. After upgrading, the length of shared secrets and TOTP URLs generated by the library will increase since the new shared secrets will be longer.

If upgrading is not possible, you can override the default otpsecretlength attribute in the model when configuring twofactorauthenticable and set it to a value of at least 26 to ensure newly generated shared secrets are at least 128-bits long.

After upgrading or implementing the workaround, applications using Devise-Two-Factor may wish to migrate users to the new OTP length to provide increased protection for those accounts. Turning off OTP for users by setting otprequiredforlogin to false is not recommended since it would leave accounts unprotected. However, you may wish to implement application logic that checks the length of a user's shared secret and prompts users to re-enroll in OTP.

Background Devise-Two-Factor uses ROTP to generate shared secrets for TOTP. In ROTP < 5.0.0, the first argument to the ROTP::Base32#randombase32 function represented the number of bytes to read from SecureRandom which were then returned as a base32-encoded string. In ROTP 5.1.0, this function was changed so that the first argument now represents the length of the base32-encoded string returned by the function instead of the number of bytes to read from SecureRandom resulting in a shorter key being generated for the same input value. (https://github.com/mdp/rotp/commit/15d5104e3cb99f97d36c772f8f09cf7e2e77de20).

Other sources

Under the default configuration, Devise-Two-Factor versions >= 2.2.0 & < 6.0.0 generate TOTP shared secrets that are 120 bits instead of the 128-bit minimum defined by RFC 4226. Using a shared secret shorter than the minimum to generate a multi-factor authentication code could make it easier for an attacker to guess the shared secret and generate valid TOTP codes.

MITRE

Affected Software

5 affected componentsFixes available
rubygems/devise-two-factor=1.0.0
rubygems/devise-two-factor>=4.0.0<6.0.0
6.0.0
debian/ruby-devise-two-factor<=3.1.0-2, <=4.0.2-1
Tinfoilsecurity Devise-two-factor>=4.0.0<6.0.0
Tinfoilsecurity Devise-two-factor=1.0.0

Remediation

Information

Devise-Two-Factor should be upgraded to version v6.0.0 as soon as possible. After upgrading, the length of shared secrets and TOTP URLs generated by the library will increase since the new shared secrets will be longer. After upgrading or implementing the workaround, applications using Devise-Two-Factor may wish to migrate users to the new OTP length to provide increased protection for those accounts. Turning off OTP for users by setting otp_required_for_login to false is not recommended since it would leave accounts unprotected. However, you may wish to implement application logic that checks the length of a user's shared secret and prompts users to re-enroll in OTP.

Event History

Sep 17, 2024
CVE Published
via MITRE·05:12 PM
Data Sourced
via MITRE·05:12 PM
RemedyDescriptionSeverityWeakness
Advisory Published
via GitHub·09:31 PM
Oct 9, 2024
Data Sourced
via Ubuntu·05:12 PM
RemedyDescriptionSeverityAffected Software

Frequently Asked Questions

1

What is the severity of CVE-2024-8796?

CVE-2024-8796 is considered to have a medium severity due to the potential risk of weakened security from shorter TOTP shared secrets.

2

How do I fix CVE-2024-8796?

To fix CVE-2024-8796, upgrade your Devise-Two-Factor package to version 6.0.0 or later.

3

Which versions of Devise-Two-Factor are affected by CVE-2024-8796?

CVE-2024-8796 affects Devise-Two-Factor versions 1.0.0 and versions between 4.0.0 and 6.0.0.

4

What are the potential risks associated with CVE-2024-8796?

The primary risk of CVE-2024-8796 is that using TOTP shared secrets shorter than the 128-bit minimum may allow attackers to compromise two-factor authentication.

5

Is CVE-2024-8796 a coding issue in Devise-Two-Factor?

Yes, CVE-2024-8796 is a configuration issue related to the generation of TOTP shared secrets in the Devise-Two-Factor library.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203