Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAttain passive vantage on network path
-
DeliveryCapture MSE DH handshake in transit
-
ExploitExtract cleartext rand() padding bytes from handshake
-
InstallReconstruct drand48 PRNG internal state
-
C2Recompute 160-bit DH private key from recovered state
-
ExecuteDerive RC4 keys via SHA-1 of shared secret and infohash
-
ImpactDecrypt MSE-encrypted BitTorrent stream
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Cryptographic PRNG selection
|
| Exploitation Conditions | MSE must be enabled and actively used - it is the default encrypted connection mode in Net::BitTorrent, so default deployments are affected without any special configuration. The attacker must be passively positioned on the network path between the two peers to observe a complete MSE DH handshake, including both the DH public key and the immediately following cleartext random padding bytes from _random_pad in the same rand() sequence. No authentication, credentials, or active injection into the stream is required. Exploitation is strictly read-only - the flaw enables passive decryption but not stream manipulation. The attack does not apply if MSE is explicitly disabled (plaintext mode), since no RC4 encryption is then in use. The vulnerability does not affect confidentiality of content that was already transmitted in plaintext outside of MSE. |
| Impact | The CVSS 3.1 score of 5.9 (AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N) accurately characterizes the attack as network-accessible but high-complexity, since successful exploitation requires a network-positioned passive observer who can capture a complete MSE handshake. Real-world risk is moderate: the math of the attack is entirely deterministic - private key recovery is not probabilistic but guaranteed once padding bytes are observed - yet operational preconditions (ISP-level or LAN-level vantage point) limit opportunistic mass exploitation. It is important to note that MSE was never designed as strong encryption, only as traffic obfuscation to avoid ISP throttling; however, this flaw allows an adversary to break even that limited privacy guarantee. No EPSS score was provided in the intelligence data. No CISA KEV listing exists, and no confirmed public exploit code was identified, suggesting exploitation remains theoretically straightforward but not yet commodity. CVSS signals and the vulnerability description are consistent - no conflicts to flag. |
| Exploit ScenarioDerived | An ISP-level passive observer or local network attacker captures the complete MSE DH handshake between a Net::BitTorrent ≤ 2.0.1 client and a remote peer, extracting the cleartext random padding bytes emitted by _random_pad. The observer feeds these bytes into a drand48 state-recovery tool, reconstructs the internal PRNG state, rewinds to derive the 160-bit DH private key, and computes the shared secret using the peer's public DH key already visible on the wire; the observer then derives the RC4 keystream and decrypts the full MSE-encrypted session. No active participation in the handshake is required. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 30, 2026
MSE Diffie-Hellman key exchange in Net::BitTorrent (Perl, all versions through 2.0.1) is rendered cryptographically transparent to passive network observers because Perl's non-cryptographic rand() function generates the 160-bit DH private key in KeyExchange.pm, and the same PRNG sequence simultaneously produces cleartext random padding transmitted during the same handshake. A passive eavesdropper who captures the handshake can recover the drand48 PRNG state from the observable padding bytes, reconstruct the private key, derive the RC4 session keys, and fully decrypt the MSE-encrypted stream - completely defeating the passive-observation obfuscation MSE is designed to provide. No public exploit has been identified at time of analysis, but the recovery is deterministic and requires only standard number theory once the handshake is captured.
RemediationAI
Consult the vendor GitHub Security Advisory at https://github.com/sanko/Net-BitTorrent.pm/security/advisories/GHSA-g444-x2c5-94hc for the patched release version - no exact fixed version number was present in the provided intelligence, so that advisory must be used to confirm the minimum safe version before upgrading. The underlying fix must replace Perl's rand() in KeyExchange.pm with a cryptographically secure random source such as Crypt::URandom, Bytes::Random::Secure, or direct reads from /dev/urandom for all DH private key material and random padding. As an interim compensating control, operators who cannot upgrade immediately should note that MSE provides obfuscation only, not authenticated encryption; disabling MSE entirely and protecting BitTorrent traffic through a VPN or application-layer TLS tunnel eliminates this attack surface without degrading effective confidentiality, since MSE's confidentiality guarantee was already broken. Disabling MSE may affect interoperability with peers that require encrypted connections.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Net::BitTorrent is a Perl implementation of the BitTorrent protocol. MSE (Message Stream Encryption, also called BitTorrent protocol encryption) uses a 160-bit Diffie-Hellman key exchange to establish a shared secret, from which RC4 stream cipher keys are derived as the SHA-1 hash of the literal strings 'keyA' or 'keyB', the shared secret, and the torrent infohash. The root cause (CWE-338: Use of Cryptographically Weak PRNG) is that KeyExchange.pm calls Perl's built-in rand(), a drand48-class linear congruential generator with a small internal state, seeded only once per process. Critically, the _random_pad function uses the identical rand() call sequence to produce the cleartext padding bytes sent immediately alongside the DH public key on the wire. Because rand() is a deterministic LCG, an observer who sees the padding bytes can fully reconstruct the generator state and therefore recover the private key that was drawn from the same sequence moments before. The affected CPE is cpe:2.3:a:sanko:net::bittorrent:*:*:*:*:*:*:*:*.
Know when Net gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Passive network interception of handshake needed (AC:H, AV:N); no credentials required (PR:N); full RC4 session decryption possible (C:H); no write or disruption capability (I:N, A:N).
Primary rating from Vendor (CPANSec).
CVSS VectorVendor: CPANSec
Lifecycle Timeline
3DescriptionCVE.org
Net::BitTorrent versions through 2.0.1 for Perl generate the MSE Diffie-Hellman private key with a non-cryptographic PRNG.
The MSE (Message Stream Encryption) handshake derives its 160-bit Diffie-Hellman private key from Perl's rand(), a non-cryptographic drand48-class generator seeded once per process, in KeyExchange.pm. The shared secret and the RC4 keys derived from it (the SHA-1 of "keyA" or "keyB", the shared secret, and the infohash) therefore depend entirely on a predictable PRNG. The same handshake sends, in cleartext, random padding drawn from the same rand() sequence in _random_pad, immediately after the public key and the private-key draw.
A passive observer of the handshake recovers the PRNG state from the cleartext padding, reconstructs the private key, computes the shared secret from the peer's public key on the wire, derives the RC4 keys, and decrypts the connection, defeating the passive-observation obfuscation MSE provides.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
Remote code execution is possible in Node.js releases that bundle a vulnerable Brotli decoder: a malformed brotli-compre
.NET and Visual Studio Denial of Service Vulnerability. Rated high severity (CVSS 7.5), this vulnerability is remotely e
Heap-based buffer overflow (CWE-122) in Microsoft .NET and Visual Studio allows a network-based unauthenticated attacker
Heap-based buffer overflow in Microsoft Visual Studio 2022 and 2026 enables network-delivered remote code execution when
Privilege escalation in Microsoft .NET runtimes (8.0, 9.0, and 10.0) and Microsoft Visual Studio 2022 and 2026 results f
Heap-based buffer overflow (CWE-122) in Microsoft .NET enables local code execution across all actively supported .NET r
Local code execution via out-of-bounds write in Microsoft .NET allows an unauthenticated local attacker to achieve full
Local privilege escalation in Microsoft .NET (versions 8.0, 9.0, and 10.0) and Microsoft Visual Studio 2022/2026 allows
Denial-of-service in Microsoft .NET runtimes and Visual Studio allows unauthenticated remote attackers to crash or hang
Integer overflow in Microsoft .NET Framework and modern .NET runtimes enables local code execution with full process com
Use-after-free memory corruption in Microsoft's QUIC protocol implementation (MsQuic) exposes sensitive heap memory to u
EUVD-2026-40291
GHSA-3x8p-9jc8-598w
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB