Developer Tooling
CVE-2026-26956 critical CVSS 9.8

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.

❓ Quel est le problème

Une vulnérabilité (CWE-693) affecte vm2-project. Les attaquants atteignent le code vulnérable via catch sans authentification.

📍 Périmètre concerné

vm2-project — Plage affectée : <= 3.10.4. Surface d'attaque : catch / try_table / JSTag / externref.

🔥 Gravité

Gravité : Critique (CVSS 9.8/10). L'exploitation peut entraîner la prise de contrôle totale du système

🔧 Comment corriger

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.)

🛡️ Contournement

En attendant le correctif : désactivez la fonctionnalité concernée, appliquez des règles WAF, ou restreignez l'accès par ACL réseau.

🔍 Détection

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

📌 ECサイトのバックエンドでvm2を利用している場合

攻撃者がサンドボックスを脱出してバックエンドの完全な制御を取得する可能性がある。

📌 社内開発環境で利用している場合

攻撃者が社内の開発サーバで任意のコードを実行できるリスクがある。

📌 マルチテナントサービスの一部としてvm2を使用している場合

一つのテナントが他のテナントやホストシステムを攻撃する可能性がある。

Action recommandée

即座に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

  1. 1
    Identify exposure identify
    grep -r 'vm2-project' . | grep -v node_modules

    リポジトリと本番環境の依存ファイル (package-lock.json / requirements.txt / go.sum / Gemfile.lock 等) で vm2-project を grep し、稼働しているサービス・バージョンを把握する。

  2. 2
    Match against affected range verify
    Confirm if version satisfies `<= 3.10.4`

    Step 1 で見つかったバージョンが影響範囲 <= 3.10.4 に該当するか照合。本番で稼働中ならインシデント扱い。

  3. 7
    Post-deployment verification verify
    Confirm patched version is live in production

    パッチ適用後、ステージングで PoC または同等の悪用パターンを再現して脆弱性が閉じたことを確認。本番では Step 3 と同じログクエリでアラート再発が無いか継続監視。

Paquets affectés

npm vm2
[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"3.10.5"}]}]

Références

Nous utilisons des cookies pour l'analyse d'audience et la mesure publicitaire. Ce réglage s'applique à tous les sites de Game co., Ltd. En savoir plus