Node.jsのバージョン管理ツール「nvm」に、外部から影響を受けたバージョン指定を通じてシェルコマンドを実行され得る脆弱性が確認された。開発元が2026年10月29日に公表したCVE-2026-118905はCVSS 7.0(HIGH)。影響範囲はnvm 0.31.2〜0.40.5で、0.40.6への更新が推奨されている。
30秒でわかる / THE SIGNAL
Node.jsのバージョン管理ツール「nvm」に、外部から影響を受けたバージョン指定を通じてシェルコマンドを実行され得る脆弱性が確認された。開発元が2026年10月29日に公表したCVE-2026-118905はCVSS 7.0(HIGH)。影響範囲はnvm 0.31.2〜0.40.5で、0.40.6への更新が推奨されている。
バージョン指定がsedの命令として解釈される
nvmの内部関数 `nvm_ls` は、インストール済みNode.jsのバージョンを絞り込むためにsedを利用する。修正前はバージョン指定文字列のバックスラッシュの扱いが不十分で、特殊な文字列によってsedのアドレスを途中で閉じ、その後の入力をsedコマンドとして解釈させることが可能だった。公式勧告によると、GNU sedではシェルコマンド実行につながる命令、BSD sedではファイル読み書きにつながる命令が問題になる。
悪意ある.nvmrcと自動切替フックが攻撃経路になり得る
影響するのは、少なくとも1つのNode.jsバージョンがインストールされ、攻撃者が影響を与えたバージョン指定を `nvm_ls` 経由で処理する場合だ。公式勧告は `nvm use`、`nvm ls`、`nvm version`、`nvm run` などを挙げる。一方、通常の `nvm use` 単体はnvm独自の.nvmrcパーサーでコメントを除去するため、この経路の影響を受けない。READMEに記載されたbashの `cdnvm` やzshの `load-nvmrc` のような自動切替フックを導入している場合は、悪意ある `.nvmrc` を含むディレクトリへ移動することが実行の契機になり得る。
影響版と修正版
開発元が示した影響バージョンはnvm 0.31.2以上0.40.5以下。修正版0.40.6では、`#` または改行を含むパターンを.nvmrc用パーサーに通して問題となる文字列を除去する。公式勧告は0.40.6以降へのアップグレード以外に追加の対応は必要ないとしている。これはNode.js本体の脆弱性ではなく、開発者環境のバージョン管理ツールに関する問題である。
重大度と悪用状況
開発元はCVE-2026-118905/GHSA-vgqf-vc3m-4wv3をHIGH、CVSS v3.1基本スコア7.0と評価している。ベクトルはローカル、攻撃の複雑性は高、ユーザー操作が必要とされる。公表された公式勧告には実環境での悪用確認は記載されておらず、悪用状況は未確認とする。開発チームは、nvmの更新状況と自動切替フックの利用有無を確認することが重要だ。