HexBrain

shopify-scripts · Report #633607

Invalid read in `str_replace_partial`

Validstatus
$1,000bounty
7upvotes
4 Sept 2019disclosed

How it was found

PoC

The attached POC shows an invalid read.

Debug info

The issue happens when memmove is called inside str_replace_partial.

valgrind report:

0==27051== Invalid read of size 1
==27051==    at 0x483FA10: memmove (vg_replace_strmem.c:1270)
==27051==    by 0x135D60: str_replace_partial (string.c:1193)
==27051==    by 0x1359CB: mrb_str_aset (string.c:1226)
==27051==    by 0x131AE8: mrb_str_aset_m (string.c:1255)
==27051==    by 0x1656FE: mrb_f_send (vm.c:633)
==27051==    by 0x169C3E: mrb_vm_exec (vm.c:1441)
==27051==    by 0x166540: mrb_vm_run (vm.c:949)
==27051==    by 0x17A5C7: mrb_top_run (vm.c:2837)
==27051==    by 0x153113: mrb_load_exec (parse.y:6318)
==27051==    by 0x1533E6: mrb_load_file_cxt (parse.y:6327)
==27051==    by 0x10DC3C: main (mruby.c:270)
==27051==  Address 0x4da9370 is 176 bytes inside an unallocated block of size 2,796,832 in arena "client"

git bisect shows the issue was introduced in 0d452073.

Test platform

  • Arch Linux

Thank you, Dinko Galetic Denis Kasak

Impact

Potential information disclosure.

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