情報取得日: 2026/07/08/最終確認: 2026/08/01・本ページは公開情報の非公式まとめです
| CVE ID | CVE-2026-54527 |
|---|---|
| 製品 | Jupyter / jupyterlab-git 0.30.0b3 以上 0.54.0 未満 |
| CVSS | 9.0(Critical) CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H |
| 種別 (CWE) | CWE-79(クロスサイトスクリプティング) |
| 登録/公開日 | 2026/07/08 |
| 出典 | https://nvd.nist.gov/vuln/detail/CVE-2026-54527 |
jupyterlab-git は JupyterLab から Git を操作するための拡張機能である。コミット履歴を見たり差分を表示したりする用途で、データ分析や機械学習の現場では標準的に入っている。 欠陥は、コミット履歴タブでファイル名が変更された(リネームされた)差分を描画する部分にある。0.30.0b3 以上 0.54.0 未満のバージョンで、`PlainTextDiff.ts` の `createHeader()` が Git から受け取ったファイル名を**そのまま `innerHTML` に渡していた**。ファイル名は Git の管理下にある文字列であって、開発者が自由に決められる。したがって、細工したファイル名を含むコミットがリポジトリに入っていると、そのリネーム差分を Git History タブで開いた時点で、ファイル名に埋め込まれた JavaScript が実行される。 実行される場所は被害者の JupyterLab のページ内である。JupyterLab は notebook の実行を通じてサーバ側でコードを走らせられるので、ページ内で任意のスクリプトが動くということは、そこから notebook API を叩いてサーバ上でコードを実行するところまでつながりうる。XSS が単にブラウザの話で終わらないのが、この種のツールの厄介なところである。 NVD の CVSS 3.1 基本値は 9.0(AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H)で Critical。**低い権限が必要(PR:L)で利用者の操作を要する(UI:R)**が、**スコープ変更(S:C)**が付いており、影響が JupyterLab のフロントエンドの外へ出ることを示している。GitHub Security Advisory(GHSA-f962-v9hr-pfg5)側は CVSS 4.0 で 9.3 CRITICAL としている。 起点になるのは「他人が用意したリポジトリを自分の JupyterLab で開き、その履歴を見る」という動作である。共有の JupyterHub で複数人が同じリポジトリを扱う環境、外部から受け取ったリポジトリを解析する環境、pull request のレビューを JupyterLab 上で行う運用は、いずれもこの経路に当たる。 修正は 0.54.0 で入っている。NVD の版レンジは 0.30.0b3 / 0.30.0 と、0.30.1 以上 0.54.0 未満。NVD 公開日は2026年7月8日、最終更新は7月15日、vulnStatus は Analyzed。2026年8月3日時点で CISA KEV カタログには収載されていない。
各ベンダー公式アドバイザリで確認できた事実に基づき整理しています。確認できていない項目は「情報確認中」と明記し、存在しないパッチ番号・バージョンは記載しません。
| 環境 | 対応状況 | 対応方法・備考 |
|---|---|---|
| AWS (ECS/EC2) | パッチあり(アプリ更新) |
SageMaker Studio / EC2 上の JupyterLab で jupyterlab-git を 0.54.0 以降へ更新する
SageMaker のライフサイクル設定でインストールしている場合は、その設定側の版指定を直さないと再起動のたびに古い版に戻る。共有環境ではイメージの作り直しまでを対応と考える。
参照リンク
|
| GCP | パッチあり(アプリ更新) |
Vertex AI Workbench / GKE 上の JupyterLab で jupyterlab-git を 0.54.0 以降へ更新する
Workbench のインスタンスはイメージ更新でも上がるが、ユーザーが pip で個別に入れている版が残ることがある。インスタンス側で pip show を実行して実際の版を確認する。
参照リンク
|
| Azure | パッチあり(アプリ更新) |
Azure Machine Learning のコンピューティングインスタンス等で jupyterlab-git を 0.54.0 以降へ更新する
カスタム環境(Environment)に焼き込んでいる場合は環境定義の更新が必要。共有コンピューティングは利用者全員が同じ版を使うため、更新の効果が大きい。
参照リンク
|
| Linux | パッチあり(アプリ更新) |
pip install -U jupyterlab-git で 0.54.0 以降へ更新し、JupyterLab を再起動する。更新までは素性の分からないリポジトリの Git History タブを開かない
JupyterHub で配っている場合はイメージを作り直す。一時的に jupyter labextension disable @jupyterlab/git で無効化する選択肢もある。
参照リンク
|
まず自分の環境の版を確認する。`pip show jupyterlab-git` または `pip list | grep jupyterlab-git` で出る。conda で入れているなら `conda list jupyterlab-git`。0.54.0 より前なら対象である。JupyterHub でイメージを配っている場合は、**イメージの中の版**を見ること。手元の開発環境だけ上げてもイメージが古ければ利用者は古いままである。 恒久対応は **0.54.0 以降へ更新する**ことである。`pip install -U jupyterlab-git` の後、JupyterLab を再起動する。JupyterHub や Binder のようにイメージから起動する構成では、イメージを作り直して配り直すところまでが対応になる。 更新までの緩和策は、**素性の分からないリポジトリの Git History タブを開かない**ことである。この欠陥はリネーム差分を表示したときに発火するので、履歴を見る必要があるなら JupyterLab ではなく `git log --stat` や `git show` をターミナルで使えば影響を受けない。共有環境なら、拡張機能を一時的に無効化する(`jupyter labextension disable @jupyterlab/git`)判断もある。 検知は難しいが、手掛かりはある。1つは、リポジトリ側で異常なファイル名を探すことで、`git log --diff-filter=R --name-only` で過去のリネームを一覧し、`<` や `"` を含むファイル名が無いかを見る。もう1つはサーバ側で、notebook を開いていないのに kernel が起動している、実行していないコードが走った形跡がある、といった痕跡を Jupyter のサーバログで確認する。共有環境では利用者ごとのトークンが盗まれている可能性があるので、侵害が疑われる場合はトークンの再発行を先に行う。 優先順としては、**複数人で共有している JupyterHub と、外部リポジトリを扱う解析環境**が先である。自分専用のローカル環境で自分のリポジトリしか開かないなら、実際の攻撃経路は成立しにくい。
Critical(CVSS 9.0)に分類されるJupyter jupyterlab-git 0.30.0b3 以上 0.54.0 未満の脆弱性です。jupyterlab-git は JupyterLab から Git を操作するための拡張機能である。コミット履歴を見たり差分を表示したりする用途で、データ分析や機械学習の現場では標準的に入っている。 欠陥は、コミット履歴タブでファイル名が変更された(リネームされた)差分を描画する部分にある。0.30.0b3 以上 0.54.0 未満のバージョンで、`PlainTextDiff.ts` の `createHeader()` が Git から受け取ったファイル名を**そのまま `innerHTML` に渡していた**。ファイル名は Git の管理下にある文字列であって、開発者が自由に決められる。したがって、細工したファイル名を含むコミットがリポジトリに入っていると、そのリネーム差分を Git History タブで開いた時点で、ファイル名に埋め込まれた JavaScript が実行される。 実行される場所は被害者の JupyterLab のページ内である。JupyterLab は notebook の実行を通じてサーバ側でコードを走らせられるので、ページ内で任意のスクリプトが動くということは、そこから notebook API を叩いてサーバ上でコードを実行するところまでつながりうる。XSS が単にブラウザの話で終わらないのが、この種のツールの厄介なところである。 NVD の CVSS 3.1 基本値は 9.0(AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H)で Critical。**低い権限が必要(PR:L)で利用者の操作を要する(UI:R)**が、**スコープ変更(S:C)**が付いており、影響が JupyterLab のフロントエンドの外へ出ることを示している。GitHub Security Advisory(GHSA-f962-v9hr-pfg5)側は CVSS 4.0 で 9.3 CRITICAL としている。 起点になるのは「他人が用意したリポジトリを自分の JupyterLab で開き、その履歴を見る」という動作である。共有の JupyterHub で複数人が同じリポジトリを扱う環境、外部から受け取ったリポジトリを解析する環境、pull request のレビューを JupyterLab 上で行う運用は、いずれもこの経路に当たる。 修正は 0.54.0 で入っている。NVD の版レンジは 0.30.0b3 / 0.30.0 と、0.30.1 以上 0.54.0 未満。NVD 公開日は2026年7月8日、最終更新は7月15日、vulnStatus は Analyzed。2026年8月3日時点で CISA KEV カタログには収載されていない。
まず自分の環境の版を確認する。`pip show jupyterlab-git` または `pip list | grep jupyterlab-git` で出る。conda で入れているなら `conda list jupyterlab-git`。0.54.0 より前なら対象である。JupyterHub でイメージを配っている場合は、**イメージの中の版**を見ること。手元の開発環境だけ上げてもイメージが古ければ利用者は古いままである。 恒久対応は **0.54.0 以降へ更新する**ことである。`pip install -U jupyterlab-git` の後、JupyterLab を再起動する。JupyterHub や Binder のようにイメージから起動する構成では、イメージを作り直して配り直すところまでが対応になる。 更新までの緩和策は、**素性の分からないリポジトリの Git History タブを開かない**ことである。この欠陥はリネーム差分を表示したときに発火するので、履歴を見る必要があるなら JupyterLab ではなく `git log --stat` や `git show` をターミナルで使えば影響を受けない。共有環境なら、拡張機能を一時的に無効化する(`jupyter labextension disable @jupyterlab/git`)判断もある。 検知は難しいが、手掛かりはある。1つは、リポジトリ側で異常なファイル名を探すことで、`git log --diff-filter=R --name-only` で過去のリネームを一覧し、`<` や `"` を含むファイル名が無いかを見る。もう1つはサーバ側で、notebook を開いていないのに kernel が起動している、実行していないコードが走った形跡がある、といった痕跡を Jupyter のサーバログで確認する。共有環境では利用者ごとのトークンが盗まれている可能性があるので、侵害が疑われる場合はトークンの再発行を先に行う。 優先順としては、**複数人で共有している JupyterHub と、外部リポジトリを扱う解析環境**が先である。自分専用のローカル環境で自分のリポジトリしか開かないなら、実際の攻撃経路は成立しにくい。
Jupyter jupyterlab-git 0.30.0b3 以上 0.54.0 未満 を利用している場合、稼働バージョンが影響範囲に含まれるかを一次情報(https://nvd.nist.gov/vuln/detail/CVE-2026-54527)で確認してください。AWS・GCP・Azure・Linux それぞれの対応状況は本ページの「クラウド/OS 別の対応状況」表にまとめています。確認できていない項目は「情報確認中」と明記しており、存在しないパッチ番号・バージョンは記載していません。
本ページの記載は下記の一次情報に基づく非公式まとめです。数値・対応状況は各出典元で最終確認してください(最終確認: 2026/08/01)。