脆弱性・CVE速報深刻度: 高

Nx の @nx/maven・@nx/gradle に脆弱性(CVE-2026-119282): nx.json のオプション値がシェルで解釈され、細工したリポジトリで nx を動かすとコマンドを実行される恐れ

目次(5)

CVE-2026-119282

Monorepo ビルドツール Nx の @nx/maven と @nx/gradle プラグインに、OS コマンドインジェクションの脆弱性 CVE-2026-119282 が 2026 年 10 月 30 日(UTC)に公開されました。GitHub Advisory の深刻度は High、CVSS v4.0 は 7.3(CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N)、CWE は CWE-78 と CWE-88 です。GitHub の勧告に CVSS v3 の値は付いていません。CISA の KEV には載っていません。EPSS は 0.14%(10/30 時点)です。

何が起きるか

  • 2 つのプラグインは、プロジェクトグラフの解析ツールをシェル経由で起動し、nx.json のプラグインオプションの値をそのままコマンドラインに埋め込んでいました。
  • オプション値にシェルの構文が含まれていると、プロジェクトグラフを作る nx コマンド(ふつうのコマンドの大半)を実行した時点で、その命令が実行されます。
  • Maven では targetNamePrefix オプションが対象です。Gradle では、すべてのプラグインオプションが -P 引数に変換され、任意のオプション名を受け付けるため、名前も値も悪用できます。
  • 実行されるのは、実行した人自身の権限です。

悪用の条件と影響の大きさ

細工した nx.json を含むリポジトリをクローンした人、または nx.json を書き換えるプルリクエストをチェックアウトした人が、その中で nx コマンドを動かした場合に限られます。勧告自身が、次のように影響を限定的に見ています。

  • Maven・Gradle のワークスペースでは、nx.json を書ける攻撃者はたいてい mvnw、pom.xml、Gradle のビルドファイルでもコードを実行させられるため、新たに増える危険は狭い。
  • 新しい危険がはっきりあるのは、たとえば CI がフォークからのプルリクエストをビルドし、nx.json は書き換えられるがビルドファイルは書き換えられない構成。
  • 悪用の報告は確認されていません(勧告の記載。KEV 掲載なし、EPSS も低い水準)。

@nx/maven と @nx/gradle のどちらも nx.json に登録していないワークスペースは影響を受けません。ほかの Nx プラグインに同じ問題はないと勧告は述べています。

影響を受ける版と修正

パッケージ影響を受ける版修正版
@nx/maven22.0.2 以上 22.7.9 未満、23.0.0 以上 23.1.2 未満22.7.9、23.1.2
@nx/gradle21.0.0 以上 22.7.9 未満、23.0.0 以上 23.1.2 未満22.7.9、23.1.2
  • 修正は、解析ツールをシェルを通さずに起動する変更です(nrwl/nx のプルリクエスト #36626)。マスターへのマージは 8 月 14 日(UTC)、22.x 系への取り込みは 8 月 21 日と 31 日、リリースは 23.1.2 が 8 月 26 日、22.7.9 が 9 月 1 日(いずれも UTC)で、修正はリリースより前に入っています。両リリースのリリースノートにも同じ項目が載っています。
  • 勧告の公開は 10 月 30 日で、修正版のリリースから約 2 か月後です。
  • 修正は nx パッケージ側のコードに依存するため、プラグインだけを上げても直りません。nx とプラグインの両方を同じ系統の修正版以降にそろえます。
  • npm には 23.2.0(9 月 2 日)、24.0.0 系(24.0.3 は 10 月 30 日)が出ています。マスターへの修正のマージは 24.0.0 のリリース(10 月 21 日)より前なので、これらにも修正が入っていると考えられますが、各版でのリリースノート個別の確認まではしていません。

対応

  1. nx.json に @nx/maven か @nx/gradle を登録しているかを確認します。
  2. 登録している場合、npm ls nx @nx/maven @nx/gradle で使っている版を確認します。
  3. 22.x 系は 22.7.9 以降、23.x 系は 23.1.2 以降へ、nx とプラグインをともに更新します(nx migrate が使えます)。
  4. すぐ更新できない場合は、信頼できないリポジトリやフォークからのプルリクエストでは nx コマンドを動かさず、nx.json の変更を先にレビューします。CI でフォークのプルリクエストをビルドしている場合は、nx.json の変更を含むものを自動実行の対象から外します。

未確認の点

  • NVD の記載は確認できていません(公開直後)。
  • 24.0.0 以降の各版に修正が入っていることは、リリースノートでは確かめていません。

この記事について

出典

この記事を共有