mruby-engine: UAF in MRubyEngine#initialize enables local RCE
该报告还没有中文解读。
原文摘录
摘自原文(7163 字符中的一小部分)
Double-init of `MRubyEngine` frees engine + unmaps mspace, but leaves Ruby `DATA_PTR` dangling. Kernel reuses freed VA via `mmap(MAP_FIXED)`. Attacker forges `me_mruby_engine` struct + `mrb_state` in reclaimed region, points `mrb_state->allocf` at `libc.system`, arranges bytes of `mrb_state` to …
原文中的代码
static VALUE ext_mruby_engine_initialize(int argc, VALUE *argv, VALUE rself) {
ext_mruby_engine_free(DATA_PTR(rself)); // frees engine + munmap mspace
long capacity = NUM2LONG(rcapacity);
if (capacity <= 0) {
rb_raise(rb_eArgError, "memory quota cannot be negative"); // raise AFTER …默认不展示报告全文。以上为简短摘录,完整复现过程请阅读原文。版权归研究员与 Shopify 所有。
时间线
- 报告提交
- 公开披露
阅读 HackerOne 原文 ↗作者 @0xd0ff9 · 版权归作者与 Shopify 所有