- 綿密に作成されたブランチ名があなたのGitHub認証トークンを盗むことができます
- Unicode空白は目に見えるところから悪質なペイロードを人間の目から隠します
- 攻撃者はリポジトリを共有する複数のユーザーにわたるトークン盗難を自動化できます
セキュリティ研究者は、OpenAIのCodexクラウド環境におけるコマンドインジェクション脆弱性を発見しました。これにより、攻撃者は綿密に作成されたブランチ名だけを使用してGitHub認証トークンを盗むことができました。
BeyondTrust Phantom Labsによる研究は、この脆弱性がタスク実行中にCodexがGitHubブランチ名を処理する方法における不適切な入力サニタイゼーションに起因することを発見しました。
ブランチ名パラメータを通じて任意のコマンドを注入することで、攻撃者はエージェントのコンテナ内で悪質なペイロードを実行し、接続されたGitHubリポジトリへのアクセスを許可する機密な認証トークンを取得することができました。
記事を続けて読む
目に見えるところの脆弱性
この攻撃が特に懸念される理由は、研究者が悪質なペイロードを人間の検出から隠すために開発した方法です。
チームはIdeographic Space(U+3000に指定されたUnicode文字)を使用してペイロードを偽装する方法を特定しました。
ブランチ名に94個のIdeographic Spaceに続いて「or true」を追加することで、エラー条件をバイパスしながら、悪質な部分をCodexユーザーインターフェース内で見えなくすることができます。
Ideographic Spaceはコマンド実行中にBashによって無視されますが、これらはWebポータルを通じてブランチ名を表示する可能性のあるユーザーから攻撃を効果的に隠します。
この攻撃は、共有GitHubリポジトリと相互作用する複数のユーザーを侵害するために自動化することができます。
適切なリポジトリ権限があれば、攻撃者は難読化されたペイロードを含む新しいブランチを作成し、そのブランチをリポジトリのデフォルトブランチとして設定することもできます。
その後、Codexを通じてそのブランチと相互作用するユーザーは、その GitHub OAuthトークンが攻撃者によって制御される外部サーバーに流出されます。
研究者はAmazon EC2上でシンプルなHTTPサーバーをホストすることでこのテクニックをテストし、盗まれたトークンが正常に送信されたことを確認しました。
この脆弱性は、ChatGPWWebサイト、Codex CLI、Codex SDK、Codex IDE拡張機能など、複数のCodexインターフェースに影響を与えました。
Phantom Labsはまた、開発者マシン上のauth.jsonファイルにローカルに保存された認証トークンを活用して、バックエンドAPIを通じて攻撃を複製できることを発見しました。
単純なトークン盗難を超えて、同じテクニックはプルリクエストコメントでCodexを参照することで、ペイロードを実行したコードレビューコンテナをトリガーすることでGitHub Installation Access トークンを盗むことができます。
報告されたすべての問題は、OpenAIのセキュリティチームと協調して以来改善されています。
しかし、この発見はAIコーディングエージェントが特権を持つアクセスで動作することについての懸念を提起しています。
アンチウイルスやファイアウォールなどの従来のセキュリティツールは、この攻撃がOpenAIのクラウド環境内で発生し、それらの可視性を超えているため、この攻撃を防ぐことはできません。
安全に保つために、組織はAIツール権限、特にエージェントを監査し、最小権限を適用する必要があります。
また、Unicode空白を含む異常なブランチ名のリポジトリを監視し、GitHubトークンを定期的にローテーション化し、疑わしいAPI活動のアクセスログを確認する必要があります。