Summary
QuickJS-NG before 0.16.0 contains an integer overflow in js_typed_array_sort() in quickjs.c that allows attackers to cause a heap buffer overflow on 32-bit hosts. Attackers who can run JavaScript can call TypedArray.prototype.sort with a comparator on a typed array near 2^30 elements, wrapping the allocation size and writing indices past the buffer to crash or potentially execute code.
Remediation
References
- Patchhttps://github.com/quickjs-ng/quickjs/commit/e93cca611908e12b824ec85fbee6b31a5ee61568
- Advisoryhttps://github.com/quickjs-ng/quickjs/security/advisories/GHSA-9wv5-5cgr-grj6
- Advisoryhttps://www.vulncheck.com/advisories/quickjs-ng-before-0.16.0-heap-buffer-overflow-via-typedarray-prototype-sort
- Referencehttps://github.com/quickjs-ng/quickjs/blob/v0.15.1/quickjs.c#L60032
- Referencehttps://github.com/quickjs-ng/quickjs/releases/tag/v0.16.0