(rust语言2023)(rust语言官网)

作者 | 褚杏娟

近日,安全研究人员最近发现并披露了流行的 Rust 项目(例如Axum、Salvo和conduit-hyper )中的多个漏洞,产生这些漏洞的根源是没有在使用 Hyper 库时对 HTTP 请求设置适当的限制。

Hyper是一个非常流行的低级 HTTP 库,用 Rust 编写。该库不是功能齐全的 HTTP 服务器或客户端,但它包含了用于响应请求、解析请求主体和生成正确 HTTP 响应的方法,因此可以用作实现这些功能的“构建块”,是 Rust 最流行的 HTTP 库之一。

安全公司 JFrog 发现,包含Hyper的项目(如 Axum、Salvo 和 conduit-hyper)容易受到为利用这些漏洞而精心设计的 HTTP 请求引起的拒绝服务 (DoS) 攻击。

研究人员发现的问题在于body::to_bytes,这是一个将请求或响应主体复制到单个字节缓冲区的函数。该函数读取数据块,并可以创建一个具有足够空间的 Vector 来满足请求正文的预期长度。但是 Vector 的大小来自直接传递给 Rust 内存分配器的“Content-Length”标头,因此如果它太大,分配器就会崩溃进而使进程崩溃。

据 JFrog 称,上面三个项目已经修复了他们的代码,但还有数量不详的、其他易受攻击的项目尚未做出回应。目前,Rust 的包存储库 crates.io 中列出的 2,579 个项目依赖于 Hyper,下载量已超过 6700 万次。

JFrog 安全研究高级主管 Shachar Menashe 表示:使用 Hyper 时缺乏大小限制是一个非常严重的问题,攻击者可以很容易地利用它让 HTTP 客户端和服务器崩溃。

这个问题实际上之前也出现过。在 2014 年和2015 年,Hyper 的开发人员修复了因接收到过大请求标头而导致的 DoS 漏洞。去年,在 GitHub 上的相关问题的帖子中,Rust 开发人员 Michal Varner 建议采用合并警告机制。

参考链接:

https://jfrog.com/blog/watch-out-for-dos-when-using-rusts-popular-hyper-package/

https://www.theregister.com/2023/01/06/flaws_rust_projects_ddos/

声明:我要去上班所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者InfoQ所有,原文出处。若您的权利被侵害,请联系删除。

本文标题:(rust语言2023)(rust语言官网)
本文链接:https://www.51qsb.cn/article/m8vc7.html

(0)
打赏微信扫一扫微信扫一扫QQ扫一扫QQ扫一扫
上一篇2023-02-16
下一篇2023-02-16

你可能还想知道

发表回复

登录后才能评论