| 제목 | quickjs-ng QuickJS 0.12.1 Use-After-Free |
|---|
| 설명 | Heap-use-after-free in Iterator.concat (js_iterator_concat_next) due to reentrancy.
During Iterator.concat.next(), QuickJS-NG stores pointers to iterator state entries, then executes user-controlled @@iterator code
before reentrancy is fully blocked. A reentrant call to it.return() frees/advances internal entries; execution then resumes and
frees stale values again, causing stale-value double release and resulting heap-use-after-free.
Reproduced on quickjs-ng 0.12.1 (commit ae7fc2b2c018c9b1410eacfb985f5b966c98b3e4) with ASan.
PoC and ASan trace: https://github.com/quickjs-ng/quickjs/issues/1368
Additionally, in my local testing environment, I was able to escalate this bug to arbitrary code execution (RCE).
Reporter credit: im-razvan (Iacob Razvan Mihai) |
|---|
| 원천 | ⚠️ https://github.com/quickjs-ng/quickjs/issues/1368 |
|---|
| 사용자 | im-razvan (UID 91857) |
|---|
| 제출 | 2026. 02. 28. PM 03:22 (7 개월 ago) |
|---|
| 모더레이션 | 2026. 03. 11. PM 03:26 (11 days later) |
|---|
| 상태 | 수락 |
|---|
| VulDB 항목 | 350414 [quickjs-ng quickjs 까지 0.12.1 quickjs.c js_iterator_concat_return 메모리 손상] |
|---|
| 포인트들 | 20 |
|---|