那个信任调用者的 /sdp 端点:修复 py-libp2p 的内存放大 DoS
来源:dev.to — 2026-08-21
📋 概述
这是 DEV Summer Bug Smash 的参赛作品。作者在 py-libp2p 的 WebRTC-Direct 传输的开发调试服务器中,发现并修复了一个内存放大拒绝服务漏洞。该 POST /sdp 处理器直接信任调用者提供的 Content-Length,用无上限的 `readexactly(content_length)` 把任意字节累积进内存,在握手发生前就能被轻易打爆内存。作者定位了两个完全由攻击者控制且无界的量(请求体大小与 content-length),并给出了修复方案。
🔑 核心要点
- POST /sdp 处理器直接读取调用者提供的 Content-Length,并用无上限的 `readexactly` 累积进内存。
- 请求体大小与 content-length 两个量都由攻击者控制且无界,可在握手前造成内存放大。
- py-libp2p 是支撑 IPFS、Filecoin 与以太坊类节点的 P2P 网络栈的 Python 实现。
💡 金句
在握手真正发生之前,一个恶意调用者就能轻易撑爆服务器内存。
👍 0
👎 0
← 返回 dev.to 首页