Junglewise Threat Intelligence

CVE-2024-49365: tiny-secp256k1 verify() bypass in bundled environments

CVE-2024-49365 · Severity: medium · CVSS 4 · Published 2025-06-30

Vendors: npm.

Executive brief

tiny-secp256k1 is a cryptographic library used to verify digital signatures on blockchain transactions. In bundled environments (such as browser bundles and React Native apps), attackers can craft malicious messages that bypass signature verification, causing the verify() function to return false-positive results. This could allow forged transactions to be accepted as valid, compromising the security of applications relying on this library for transaction authentication.

Technical details

The vulnerability is an authentication bypass (CWE-347) in the verify() function of tiny-secp256k1 v1.x. The root cause is insufficient input validation: the function relies on Buffer.isBuffer() to validate message input, but in bundled environments where the npm buffer package is used, this check can be bypassed by providing JSON-stringifyable objects with crafted properties. An attacker with knowledge of a valid message/signature pair can construct a malicious object that passes the verify() check and is accepted as a valid signature, even though the message was not actually signed by the corresponding private key. The attack requires no authentication or special privileges; it only requires network access to influence which messages are verified. Version 2.x is unaffected because it validates input as an actual Uint8Array instance. The vulnerability was patched in v1.1.7 by adding proper Uint8Array input type support.

Affected products

  • bitcoinjs tiny-secp256k1 <= 1.1.6

Timeline

  • 2025-06-29: disclosed
  • 2025-06-30: advisory
  • 2025-06-30: patched: Version 1.1.7 released with fix

References

Related threats