2 ポイント 投稿者 goldenjade 4 시간 전 | 2件のコメント | WhatsAppで共有

Codexで最新フラッグシップモデルであるgpt-5.6-solを使用している最中に、たった今経験した深刻な安全性上の欠陥(Safety Incident)を共有したいと思います。Solモデルはエージェントワークフローやツール実行ベンチマークで信じがたいほど驚くべき成績を示しているにもかかわらず、単純なシェル環境の分離不足によって、もう少しで大惨事につながるところでした。

発生の経緯:
エージェントはデバッグ作業のために一時的な基準(baseline)ディレクトリを設定しようとしていました。そのためにエージェントは、$homeという名前のローカル変数を初期化するPowerShellスクリプトブロックを生成して実行しました。

$home = Join-Path $env:TEMP 'temporary-build-folder'  
if (Test-Path -LiteralPath $home) { Remove-Item -LiteralPath $home -Recurse -Force }  

バグの原因:
PowerShellでは、$HOMEは現在のユーザーのプロファイルディレクトリ(例: C:\Users<username>)を直接指す標準の組み込み自動変数(built-in, automatic variable)です。

問題は、PowerShellが大文字・小文字を区別しない(case-insensitive)という点です。そのため、エージェントが動的に宣言した小文字の$home変数が、グローバルな$HOMEスコープと衝突しました。スクリプトがRemove-Itemの行に到達したとき、このパスは一時フォルダではなく、私の実際のユーザールートディレクトリとして評価されてしまいました。

結果として、gpt-5.6-solは次のコマンドを実行しました:
Remove-Item -LiteralPath 'C:\Users<username>' -Recurse -Force

被害状況:
幸いにも、現在アクティブなファイルに対するシステムロック(Lock)のおかげで、コマンドの実行中に「WriteError: Directory is not empty」エラーを出して停止し、全削除という恐ろしい惨事は免れました。しかし、エージェントは直ちに自らのミスを検知して作業を中断(abort)し、その後自己監査を実施しました。確認したところ、いくつかの設定ファイルやドットファイル(.ssh、.config、.npm)はすでに変更されていたか、消失している状態でした。

示唆:
gpt-5.6-solは、長期的なタスク(long-horizon tasks)を実行するうえで驚くほど粘り強く有能です。しかし、このような高度な推論モデルにホスト端末へ直接アクセスできる権限を与えるとき、PowerShellのようなシェルにおける大文字・小文字の非区別や変数スコープの仕組みは、巨大なリスク要因(risk vector)になります。

新しいGPT-5.6ファミリーを活用してCLIエージェントを構築またはデプロイする計画があるなら、厳格なサンドボックス化(sandboxing)と堅牢なコンテナ化は、もはや選択肢ではなく絶対的な必須事項です。

皆さんの中にも、Solや最近のほかのモデルを使っていて、これと似たような変数シャドーイング(variable-shadowing)や破壊的なツール使用の挙動を経験した方はいますか?

当時の状況のスクリーンショットへのリンクです: https://gist.github.com/xamong/e98478b333bb9951b175284f744eb0ed

2件のコメント

 
ggggnews 2 시간 전

codexが自力で権限昇格しないのがせめてもの救いですね

 
1yoouoo 4 시간 전

自分でやるべきだろう