py-libp2p's yamux implementation contains a remote denial-of-service vulnerability that warrants your immediate attention. The issue is that py-libp2p reads the declared body length from a yamux frame header, then performs a blocking read for that exact number of bytes — and only AFTER the body arrives does it check whether the length exceeds MAX_WINDOW_SIZE. A malicious peer can send a frame with an arbitrarily large declared length, causing your process to block indefinitely waiting for data that will never arrive, or until TCP timeouts eventually free the connection. The attack works on the default multiplexer, meaning one 12-byte frame from an authenticated peer freezes every stream multiplexed over that connection simultaneously. The root cause is architectural: yamux was designed in Go with the assumption that blocking I/O is acceptable because goroutines are cheap. py-libp2p inherited this pattern without adapting it for Python's async context, creating a situation where a length field intended for flow control is being used as an implicit security boundary — which it isn't. The yamux spec treats MAX_WINDOW_SIZE as a buffer limit, not a DoS prevention mechanism. Check whether your deployment uses yamux as the stream muxer; if it does, consider whether you can switch to an alternative muxer or apply connection-level read timeouts as a temporary defense. Be aware that the attacker must complete the Noise handshake first, which may create a false sense of safety — authenticated peers should not be able to DoS each other at the protocol layer, and this vulnerability breaks that invariant. No patched version exists at the time of disclosure, which indicates the fix likely requires architectural changes rather than a simple patch.