Ruby​​ 3.1.1 Regexp 编译中的双重释放CVE-2022-28738

漏洞描述

在 Ruby 3.x 之前的 3.0.4 和 3.1.x 之前的 3.1.x 的 Regexp 编译器中发现了双重自由。如果受害者试图从不受信任的用户输入创建正则表达式,则攻击者可能能够写入意外的内存位置。
 


 

受影响的版本

ruby​​ 3.0.3 或之前的版本
ruby​​ 3.1.1 或之前的版本

ruby 2.6 系列和 2.7 系列不受影响
 


 

漏洞复现

由于 Regexp 编译过程中的错误,使用精心制作的源字符串创建 Regexp 对象可能会导致相同的内存被释放两次。这被称为“双重免费”漏洞。请注意,一般来说,创建和使用从不受信任的输入生成的 Regexp 对象被认为是不安全的。然而,在这种情况下,经过全面评估,我们将此问题视为一个漏洞。

 

POC

ruby -e '/(\x15\x17\xE2\xF5\xF5\xF5\xC2\x04\x08J,\x00\xD0\x00\x00(?(1)\xF5\xF5\xF5\xD7\xF5\xF5\xF5\x87\x04\xFA555\xBEJ,\x18FF\x15\xFF|\x03\x01\x00\x01\x00\x00\x8Fr|)44\x00\x8Fr|)+/m'

 


 

影响

与 marshal.load 配合可能会导致 RCE 攻击

 

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞9赞赏 分享
评论 共2条
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片
    • 头像的张0
    • 头像后惨0