{"id":"CVE-2026-120438","kind":"vulnerability","aliases":["CVE-2026-120438"],"related":[],"title":"QuickJS-NG: integer overflow in Proxy handling lets scripts corrupt memory","description":"QuickJS-NG before 0.16.0 contains an integer overflow in js_proxy_get_own_property_names() in quickjs.c that causes a heap buffer overflow on 32-bit hosts. Attackers running JavaScript can return a large array-like object from a Proxy ownKeys trap to wrap the allocation size, causing crashes or potential code execution.","summary":"QuickJS-NG versions before 0.16.0 have an integer overflow in js_proxy_get_own_property_names() that causes a heap buffer overflow on 32-bit hosts. An attacker who can run JavaScript can crash the process or possibly execute code by returning a large array-like object from a Proxy ownKeys trap.","severity":"high","cvss":8.5,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["32-bit","embedded-javascript","quickjs-ng","runtime"],"not_affected_if":["64-bit-host","trusted-code-only","version-0.16.0-or-later"],"how_to_check":"- Check the QuickJS-NG version in use; anything below `0.16.0` is in the affected range.\n- Confirm whether the host is a 32-bit build, since the sources describe the overflow on 32-bit hosts.\n- Check whether untrusted scripts can run in the embedding application.","fix":"- QuickJS-NG: upgrade to `0.16.0` or later.","status":"open","published_at":"2026-11-02T15:17:25+00:00","first_seen_at":"2026-11-02T15:24:02+00:00","triaged_at":"2026-11-02T15:25:54+00:00","updated_at":"2026-11-02T15:25:54+00:00","category":"runtime","confidence":0.7,"triage":{"at":"2026-11-02T15:25:54Z","model":"claude-haiku-5-5","output":{"fix":"- QuickJS-NG: upgrade to `0.16.0` or later.","reach":"local","title":"QuickJS-NG: integer overflow in Proxy handling lets scripts corrupt memory","impact":"high","summary":"QuickJS-NG versions before 0.16.0 have an integer overflow in js_proxy_get_own_property_names() that causes a heap buffer overflow on 32-bit hosts. An attacker who can run JavaScript can crash the process or possibly execute code by returning a large array-like object from a Proxy ownKeys trap.","audience":"developers","category":"runtime","nicknames":[],"who_cares":["quickjs-ng","embedded-javascript","32-bit"],"confidence":0.7,"fix_status":"available","needs_auth":"no","worst_case":"attacker-controlled script may crash the process or run code","analyst_note":"Confirm the attack surface (whether untrusted script input reaches QuickJS-NG) and the exact affected version range via the linked vendor advisory and release notes.","how_to_check":"- Check the QuickJS-NG version in use; anything below `0.16.0` is in the affected range.\n- Confirm whether the host is a 32-bit build, since the sources describe the overflow on 32-bit hosts.\n- Check whether untrusted scripts can run in the embedding application.","plain_action":"","needs_analyst":true,"not_affected_if":["64-bit-host","trusted-code-only","version-0.16.0-or-later"],"who_is_affected":"Applications that embed QuickJS-NG and run JavaScript, especially on 32-bit hosts, are exposed. Exposure is greatest where untrusted scripts can create Proxy objects. Teams using QuickJS-NG only with trusted code on 64-bit hosts are less exposed, but should still upgrade.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000753,"input_tokens":4224,"output_tokens":662,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-120438':15A,18A '-2026':14A,17A '0.16.0':33B,86C '32':19B,52B,107C 'alloc':129C 'array':74B,118C 'array-lik':73B,117C 'attack':56B,110C 'bit':20B,53B,108C 'buffer':49B,104C 'caus':46B,101C,131C 'code':68B,135C 'contain':87C 'corrupt':11A 'crash':62B,132C 'cve':13A,16A 'embed':22B 'embedded-javascript':21B 'execut':67B,136C 'get':41B,94C 'handl':8A 'heap':48B,103C 'host':54B,109C 'integ':4A,36B,89C 'javascript':23B,60B,112C 'js':39B,92C 'larg':72B,116C 'let':9A 'like':75B,119C 'memori':12A 'name':44B,97C 'ng':3A,26B,30B,84C 'object':76B,120C 'overflow':5A,37B,50B,90C,105C 'ownkey':80B,124C 'possibl':66B 'potenti':134C 'process':64B 'properti':43B,96C 'proxi':7A,40B,79B,93C,123C 'quickj':2A,25B,29B,83C 'quickjs-ng':1A,24B,28B,82C 'quickjs.c':99C 'return':70B,114C 'run':59B,111C 'runtim':27B 'script':10A 'size':130C 'trap':81B,125C 'version':31B 'wrap':127C","nicknames":[],"mitigations":[],"who_affected":"Applications that embed QuickJS-NG and run JavaScript, especially on 32-bit hosts, are exposed. Exposure is greatest where untrusted scripts can create Proxy objects. Teams using QuickJS-NG only with trusted code on 64-bit hosts are less exposed, but should still upgrade.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["32bit","embeddedjavascript","high","quickjsng","runtime"],"first_public_at":"2026-07-31T15:04:09+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-120438","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-120438","severity":null,"published_at":"2026-11-02T15:17:25+00:00","modified_at":"2026-11-02T15:17:25+00:00","first_seen_at":"2026-11-02T15:24:02+00:00","fetched_at":"2026-11-02T15:24:02+00:00","note":null}],"documents":[{"id":52460,"url":"https://github.com/quickjs-ng/quickjs/commit/252209d99cf112568160548bdcaa98d95e0d0068","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":52461,"url":"https://github.com/quickjs-ng/quickjs/releases/tag/v0.16.0","title":"Release notes: github.com","kind":"release","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Release notes: github.com"},{"id":52462,"url":"https://github.com/quickjs-ng/quickjs/security/advisories/GHSA-jp52-chwg-2p9p","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-07-31T15:04:09+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":52463,"url":"https://www.vulncheck.com/advisories/quickjs-ng-before-0.16.0-heap-buffer-overflow-via-proxy-ownkeys-enumeration","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.com"}],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}