Junglewise Threat Intelligence

CVE-2023-39533: libp2p go-libp2p resource exhaustion via large RSA keys

CVE-2023-39533 · Severity: high · CVSS 7.5 · Published 2023-08-09

Vendors: Libp2p.

Executive brief

The go-libp2p library is a core networking component used in peer-to-peer applications, including blockchain systems and distributed protocols. A remote attacker can send specially crafted cryptographic handshakes with oversized RSA keys to exhaust CPU resources on libp2p nodes, causing service degradation and denial of availability without needing any special privileges or authentication.

Technical details

This is a resource exhaustion vulnerability (CWE-770) in the cryptographic signature verification component of go-libp2p. During peer authentication via the Noise protocol handshake and libp2p x509 extension verification, the affected versions accept and attempt to verify RSA keys of arbitrary size without resource limits. An attacker can send large RSA keys (e.g., 16384 bits or larger) that require substantial CPU time for signature verification operations, monopolizing node resources and causing denial of service. Attack requires network reachability to the libp2p node but no authentication or user interaction. Patches are available in go-libp2p v0.27.8, v0.28.2, and v0.29.1, but users must also update to Go compiler versions 1.20.7 or 1.19.12 to gain the corresponding upstream Go crypto/tls fixes. No workarounds are known.

Affected products

  • libp2p go-libp2p < 0.27.8, >= 0.28.0 and < 0.28.2, = 0.29.0

Timeline

  • 2023-08-09: disclosed
  • 2023-08-08: advisory: NVD published
  • 2023-08-09: patched: Patches available in v0.27.8, v0.28.2, v0.29.1

References