Build1 distinct publisher2 min readUpdated
GHSA-864f-rcv7-6rh4 lets guest code hand the C++ bindings one type on the first read and a different one on the second. Fixes are in 7.0.1 and 6.2.0.
The Engineer · Build desk
Compiled by The EngineerSomething wrong?How this is made
A type check that reads a value twice has not checked anything. The bindings validate what the first read returned and then operate on whatever the second read hands back, which is the part the guest controls [3]. Fixing that means either reading once and holding the result, or re-validating at the point of use; a patch that only tightens the check without collapsing the double read leaves the same shape available anywhere else the bindings ask a JavaScript object a question twice.
The entry condition is worth sitting with. The guest needs untrusted execution inside the isolate plus at least one `ivm.Reference` passed in from the host [4]. That reference is the bridge, and the advisory's own fallback for anyone who cannot upgrade is to stop passing references to untrusted code or to turn the feature off entirely [9]. Read those two together and the sandbox stops looking like a wall with a door in it.
The version guidance does not close cleanly. The affected set is given as 7.0.0 or lower, or 6.x below 6.2.0 [5], while the fixed versions are 7.0.1 and 6.2.0 [6]. Taken literally, "7.0.0 or lower" contains 6.2.0, which the same document lists as the remedy [19]. Anyone pinned on the 6.x line cannot resolve their status from that sentence and has to go to the advisory record itself.
Forensics are thin by design. The basic proof of concept ends in `SIGSEGV` and exit 139 [7], with crash sites near `v8::ArrayBuffer::IsDetachable` [8]. The advanced path does not end in a crash; it ends with guest processing in control of the host process [10]. The write-up also notes that the sequence begins inside guest processing with no network signs, and that any outbound traffic afterwards depends entirely on the payload, with nothing published [11]. So the loud artifact belongs to the attempt that failed, and the quiet one is the case you care about.
On the strength of the evidence: the record reports no observed exploitation in public information, and only proof-of-concept-style `transferList` and getter inputs confirmed internally [12]. It also carries a severity of high [13] while the Endor Labs write-up it points to, dated 20 August 2026, is titled as critical [14], and lists the GHSA identifier with no CVE attached [15]. Investigation guidance names audits of code execution nodes and workers in tools like n8n, worker environment variables, cloud credentials and connection destinations [18]. That is where the value sits, and it always did. What changed is the confidence you can place in the isolate that was drawn between it and the customer's expression field [1].
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
The guest reaches the ExternalCopy constructor, and the getter of transferList returns a normal ArrayBuffer on the first read and another attacker-controlled value on the second read.
The C++ bindings trust the type check from the first read and treat the value as an ArrayBuffer without re-checking the second read, leading to reading and writing control addresses and hijacking host control flow.
In an advanced exploit, normal guest processing moves to host process control, so the outcome does not end with just a crash.
Exploitation usually starts with internal guest processing and shows no network signs; outbound traffic after exploitation depends on the payload, and no public information is available.
Related products listed are isolated-vm, Node.js, V8, n8n, Activepieces and Mastra AI, and no end-user action is required because inputs to AI workflows or code execution features can be the entry point.
Stated impact includes crash of the host Node.js process, destruction of the guest/host boundary, potential arbitrary code execution with host privileges, and spread to credentials and connection destinations of AI and automation platforms.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Single restated vendor write-up with a self-contradicting version range
The mechanism is described with unusual specificity for a secondary post — ExternalCopy, a stateful transferList getter, an unchecked second read in the C++ bindings, and a crash signature near v8::ArrayBuffer::IsDetachable — which is hard to fabricate and internally coherent. But the entire cluster is one dev.to item restating an Endor Labs 'learn' article; no upstream advisory text, maintainer commit or CVE record is quoted, the recorded severity ('high') differs from the referenced title ('Critical'), and the affected range contradicts the patch list on the 6.x branch. That combination supports the existence and shape of the bug while leaving the operative details (exact vulnerable versions) unverified.
No exposure or patch-uptake data
Nothing in the supplied material quantifies adoption on either side. Patched releases 7.0.1 and 6.2.0 are named, but there is no download, dependency-count or upgrade telemetry; the related-products list (n8n, Activepieces, Mastra AI) is an affinity list, not a disclosure that those platforms ship an affected isolated-vm version; and the record explicitly states no exploitation has been observed in public information. Inferring exposure from the product list would be guessing.
Impact language runs ahead of what is actually confirmed
The confirmed artifact is a segfaulting proof of concept and internally reproduced PoC-like inputs; the headline framing reaches 'Critical', 'arbitrary code execution with host privileges' and 'spread to credentials and connection destinations of AI and automation platforms'. Those escalations are labelled as potential and the document does say no exploitation has been observed, which keeps the gap moderate rather than severe, and the underlying bug class is real and patched. The overstatement is in confidence and reach — a named-but-uncorroborated version range, a 'Critical' title against a 'high' severity field, and cloud-compromise scenarios conditioned on assumptions the record never verifies.
Vendor education content amplified by a third-party blog
The substance originates on a security vendor's 'learn' page and reaches this cluster via a dev.to repost, a chain that rewards dramatic dependency-risk framing — visible in the 'Critical' title against the recorded 'high' severity and in the extension from a library bug to AI-platform credential compromise. Countervailing signals keep this mid-range rather than high: the document states plainly that no exploitation has been observed, marks post-exploitation credential use as an unobserved possibility, and assigns low confidence to two of the three mapped techniques. Nothing in the supplied material discloses a commercial relationship, so this is scored on framing incentives only.
Bug shape credible, operative details unconfirmed
Confidence is moderate-low. One publisher, one restated vendor source, no primary advisory or maintainer corroboration, and an unresolved contradiction in the affected version range mean the specifics an operator would act on cannot be treated as settled. What is credible is the class of defect and the named fix targets, because the code-path description is specific and consistent throughout the document and the adoption record confirms fixed releases exist. Adoption is entirely unmeasured, which further caps overall certainty.
product
The sandbox teams fled vm2 for now has its own guest-to-host escape1 distinct publisher
build
A default that is not a guard: tinycolor2's palette functions never return on analogous(-1)1 distinct publisher
build
A GAN beauty filter is a device budget allocation, not a feature toggle1 distinct publisher
build
Every viewer hits your HLS key endpoint in the same second, and almost nobody tests it1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 21, 2026