Vulnérabilité dans vm2-project (CVE-2026-26956)
Résumé
vulnérabilité dans vm2-project (CVE-2026-26956). L'exploitation peut entraîner la prise de contrôle totale du système. Exploitable via catch.
Description d'origine
La description telle que publiée par la source (souvent en anglais).
Summary
Full sandbox escape with arbitrary code execution. Attacker code inside VM.run() obtains host process object and runs host commands with zero host cooperation.
Details
Confirmed on: vm2 3.10.4, Node.js v25.6.1 (x64 Linux)
Trigger: Attacker-controlled code passed to VM.run()
Requires: Node.js version with WebAssembly exception handling + JSTag support (tested on v25.6.1)
vm2's sandbox security relies on two JavaScript-level mechanisms: (1) a code transformer that injects handleException() into JS catch clauses to wrap host-realm errors, and (2) bridge Proxies that wrap cross-context objects. Both operate entirely within JavaScript.
WebAssembly's try_table instruction with a JSTag catch handler catches JavaScript exceptions at V8's C++ level — below JavaScript entirely. When an imported JS function throws a TypeError produced by Symbol-to-string coercion during stack formatting (e.name = Symbol(); e.stack), the WASM try_table catches it as an opaque externref and returns it as a normal function return value. This WASM exception-handling-to-return-value path is not sanitized by vm2 — the host-realm TypeError reaches attacker code unsanitized. Its constructor chain (hostError.constructor.constructor) resolves to a Function that returns the host process object, allowing for reflection outside of the vm2 context, leading to code execution.
PoC
const { VM } = require("vm2");
console.log("vm2:", require("vm2/package.json")…
Source: NIST National Vulnerability Database NVD GitHub Advisory
Résumé IA
Rédigé par une IA externe ; il peut contenir des erreurs. Vérifiez la description d'origine et les références ci-dessous avant d'agir.
Une vulnérabilité référencée CVE-2026-26956 a été découverte dans vm2-project.
Des attaquants peuvent cibler un point d'entrée spécifique comme catch à distance pour détourner le produit.
L'exploitation peut entraîner la prise de contrôle totale du système. Score CVSS : 9.8/10.
Action : appliquez le correctif officiel de l'éditeur.
En cas de doute, contactez votre service informatique ou cherchez « vm2-project CVE-2026-26956 » sur le site de l'éditeur.
CVE-2026-26956 (vm2-project) — CWE-693 / CVSS v3 9.8
Vecteur d'attaque : distant (réseau) / non authentifié / sans interaction utilisateur
Surface d'attaque : catch / try_table / JSTag / externref
Versions affectées : <= 3.10.4
Plan : 1) Audit SBOM, 2) Mise à jour staging→prod, 3) Surveillance WAF/proxy sur les endpoints affectés, 4) Recherche d'IOC dans les logs.
Réfs : voir GHSA / avis éditeur / version corrigée liés sur cette page.
Une vulnérabilité (CWE-693) affecte vm2-project. Les attaquants atteignent le code vulnérable via catch sans authentification.
vm2-project — Plage affectée : <= 3.10.4. Surface d'attaque : catch / try_table / JSTag / externref.
Gravité : Critique (CVSS 9.8/10). L'exploitation peut entraîner la prise de contrôle totale du système
Mettre à jour vers la version corrigée selon l'avis éditeur. (Si une version vulnérable <= 3.10.4 est en production, planifiez immédiatement une fenêtre de maintenance.)
En attendant le correctif : désactivez la fonctionnalité concernée, appliquez des règles WAF, ou restreignez l'accès par ACL réseau.
Recherchez dans les logs des requêtes correspondant aux IOC connus de cette CVE. Auditez les SBOM/dépendances.
Incidents passés similaires Incidents similaires extraits des CVE passées
Node.jsのsandbox escapeに関連するCVE。
TypeScriptコンパイラによるsandbox escapeの事例。
Si cela arrivait dans votre entreprise Impact attendu selon le scénario métier
攻撃者がサンドボックスを脱出してバックエンドの完全な制御を取得する可能性がある。
攻撃者が社内の開発サーバで任意のコードを実行できるリスクがある。
一つのテナントが他のテナントやホストシステムを攻撃する可能性がある。
即座にvm2のバージョンを3.10.5にアップデートすること。
Actions de réponse
Étapes concrètes et exemples de commandes que les équipes SOC/SRE doivent exécuter dans l'ordre
-
1Identify exposure identify
grep -r 'vm2-project' . | grep -v node_modulesリポジトリと本番環境の依存ファイル (package-lock.json / requirements.txt / go.sum / Gemfile.lock 等) で
vm2-projectを grep し、稼働しているサービス・バージョンを把握する。 -
2Match against affected range verify
Confirm if version satisfies `<= 3.10.4`Step 1 で見つかったバージョンが影響範囲
<= 3.10.4に該当するか照合。本番で稼働中ならインシデント扱い。 -
7Post-deployment verification verify
Confirm patched version is live in productionパッチ適用後、ステージングで PoC または同等の悪用パターンを再現して脆弱性が閉じたことを確認。本番では Step 3 と同じログクエリでアラート再発が無いか継続監視。
Paquets affectés
Références
- advisory nvd.nist.gov
- package github.com
- web github.com
- web github.com
- web github.com
- web access.redhat.com
- web bugzilla.redhat.com
- web security.access.redhat.com