Copilotをroot化した方法
(research.eye.security)- 2025年4月、Copilot Enterprise にリアルタイムPythonサンドボックス(Jupyter Notebookベース)が追加され、バックエンドでのコード実行が可能になった
- Jupyter Notebookの %command 構文により、基盤システム上で任意コード実行が容易で、Linuxコマンドも ubuntuユーザー(miniconda環境) として実行できた
/app/miniconda/binパスがubuntuユーザーに書き込み可能で、rootの$PATHでも優先されているため、pgrepなどの主要コマンドを上書きできるセキュリティ脆弱性が存在した- これを悪用してroot権限を取得したが、コンテナ内部は厳格に隔離されており、コンテナ脱出は不可能で、追加の情報漏えいもなかった
- 当該脆弱性は4月の報告後、7月に 中程度のリスク としてパッチが適用され、報奨金はなくリサーチャー一覧への掲載のみとなった
Microsoft Copilot Enterprise Jupyter Sandbox 脆弱性分析
Copilot Enterprise Jupyter環境の概要
- 2025年4月から Copilot Enterprise に Jupyter NotebookベースのPythonサンドボックス が導入された
- ユーザーはJupyterの %command 構文を通じてLinuxのシステムコマンドを実行できる
- 環境はminicondaベースの ubuntu ユーザー権限で実行され、
sudoバイナリは存在しない - 環境変数、ネットワーク、ファイルシステム、プロセス情報などを幅広く探索できる
コンテナ内部の動作と構造
- CopilotはChatGPT sandboxと似ているが、新しいカーネルとPython 3.12を使用している
- 主なプロセス: Jupyter Notebook、Goで書かれた
goclientapp(port 6000で実行)、httpproxyなど - ネットワークでは loopback と制限された link-local インターフェースのみが有効
- ファイルシステムはOverlayFSで
/legionパスを基盤とし、/appにカスタムスクリプトが存在する
ダウンロードとファイル操作
- テキスト/コマンド出力ファイルは通常どおりダウンロード可能だが、バイナリファイルは破損の恐れがあるため base64 エンコードが必要
- ファイルは
/mnt/dataに配置され、blob URL形式で外部ダウンロードリンクが生成される
goclientapp / httpproxy の構造
goclientapp: 外部から/executeエンドポイントで受け取ったコード(JSON形式)をJupyter環境で実行し、結果を返すhttpproxy: Jupyterから外部へ出るHTTPトラフィックをプロキシする(ENABLE_EGRESS=falseにより無効化状態)
entrypoint.sh スクリプトの脆弱性
- コンテナのエントリポイントスクリプト
entrypoint.shでは、複数のサービス(goclientapp,httpproxyapp)が ubuntu ユーザー権限で実行される keepAliveJupyterSvc.shだけが root として継続実行される- 28行目の
pgrep -f "jupyter notebook --ip=0.0.0.0 --port=8888"コマンドは、$PATH内ディレクトリの優先順位に従って動作する /app/miniconda/binが root と ubuntu ユーザーの両方の PATH で/usr/binより前にある →pgrepのようなコマンドを任意に置き換え可能
root権限取得の過程と限界
- 攻撃者は
/app/miniconda/binに悪意あるpgrepスクリプトを作成し、entrypoint.shが root 権限でこのファイルを定期的に実行するよう仕向けた - このスクリプトは
/mnt/data/inファイルを読み込んでシェルコマンドとして実行し、結果を/mnt/data/outに保存する - この方法でコンテナ内の root 権限取得には成功したが、
/root内のファイルなどの機微情報やログにはアクセスできず、コンテナ脱出も不可能だった - コンテナは各種 breakout シナリオがすべて修正済みだった
Microsoftの対応と結果
- 2025年4月18日: Eye Security が MSRC に脆弱性レポートを提出
- 2025年7月25日: Microsoft が 中程度の深刻度(moderate severity) と分類し、パッチ適用後に問題をクローズ、リサーチャー一覧に掲載(バグバウンティ支払いなし)
参考と付録
-
Eye Security は欧州拠点のサイバーセキュリティ企業で、24/7脅威監視、インシデント対応、サイバー保険などを提供している
-
この脆弱性を含む Microsoft 社内サービス(Entra OAuth など)への侵入事例は BlackHat USA 2025 で発表予定
-
タイムライン
- 2025年4月18日 – MSRC に報告
- 2025年7月25日 – パッチ適用およびケース終了、ブログ公開
1件のコメント
Hacker Newsのコメント
/rootにもファイルはなく、使えるログも残っていなかった。既知の脱出手法もすべてすでにパッチ済みだった。もし Microsoft がこうした回避方法一つひとつすべてに報奨を出していたらきりがないので、危険性がない限り別途報酬しないのもある程度は理解できる