OpenAIは、開発者がコードベース内のセキュリティ脆弱性を直接検出・検証・修正できるよう支援するオープンソースのコマンドラインインターフェース(CLI)兼TypeScript SDK「Codex Security」を公開しました。
@openai/codex-securityとして公開されたこのツールは、OpenAIのCodexエコシステムをアプリケーションセキュリティ領域にまで拡張するもので、リポジトリの自動スキャン、変更内容のレビュー、CI(継続的インテグレーション)対応をサポートします。
Codex Securityは、既存の開発ワークフローに組み込めるセキュリティスキャン層として機能します。チームはリポジトリ全体を脆弱性についてスキャンしたり、コード変更によって新たに生じたリスクをレビューしたりできるほか、各スキャンを個別の出来事として扱うのではなく、検出結果を時系列で追跡することも可能です。
この継続的な追跡機能こそが、多くの単体型静的解析ツールとの違いです。コードベースのライフサイクル全体にわたる脆弱性状況の履歴記録を構築できる点が特徴です。
本ツールは開発者のマシン上での対話的な実行のほか、CIパイプライン内での非対話的な実行にも対応しており、ソフトウェア配信ワークフローにおける自動セキュリティゲートとしての利用に適しています。
Codex Securityの利用にはNode.js 22以降とPython 3.10以降が必要で、加えてCodex Securityサービスへのアクセス権も求められます。
セットアップでは、npm経由でパッケージをインストールし、CLIでログインした上で、対象ディレクトリに対してスキャンを実行します。CI環境では対話的ログインの代わりに、環境変数OPENAI_API_KEYを用いた認証が使われます。
OpenAIは柔軟な認証情報管理の仕組みを組み込んでいます。ChatGPTサインインとAPIキーの両方が利用可能な場合、対話的スキャンではどちらの認証情報を使うかユーザーに選択を促す一方、CIなど非対話的なスキャンでは自動的にAPIキーが優先されます。
開発者は--authフラグにchatgptまたはapi-keyを指定することで、明示的に認証方式を指定できます。常にChatGPTサインインをデフォルトにしたい場合は、環境内で設定済みのAPIキーを解除すればよいとされています。
スキャン履歴はローカルのCodex Securityワークベンチの状態管理用ディレクトリに保存されます。この保存先に書き込み権限がない場合、OpenAIは環境変数CODEX_SECURITY_STATE_DIRを使い、リポジトリ外の書き込み可能なパスへ保存先をリダイレクトすることを推奨しています。これはコンテナ環境や権限が制限されたCIランナーで特に重要な点です。
CLIに加え、OpenAIはプログラムから利用できるTypeScript SDKも提供しており、開発者はビルドスクリプトや独自ツールにセキュリティスキャン機能を直接組み込むことができます。
このSDKはCodexSecurityクラスを公開しており、これをインスタンス化して対象パスに対して実行すると、レポートのパスを含む結果オブジェクトが返されます。処理後にリソースを解放するためのcloseメソッドも備えています。
GitHubの記載によれば、このSDKファーストの設計思想から、OpenAIはCodex Securityを単なる単体のCLI製品としてではなく、他のツールやプラットフォームが基盤として利用できるインフラとして位置づけていることがうかがえます。
Codex Securityの登場は、AIを活用した脆弱性発見・修正への関心が高まる中で実現しました。特に各組織が開発ライフサイクルのより早い段階でセキュリティチェックを行う「シフトレフト」セキュリティを志向する動きが背景にあります。
LLMによる分析とCIネイティブなツールを組み合わせることで、OpenAIは既存のSASTやDevSecOpsプラットフォームがひしめく領域に直接参入したことになります。従来のパターンマッチング型スキャナーよりも高精度な脆弱性検証をCodexのコード推論能力によって実現できるというのが、その狙いです。
SOCの調査における死角を減らし、ANY.RUNで脅威の封じ込めを早期化することで、対応コストと business への影響を抑えられます。
翻訳元: https://cyberpress.org/openai-open-sources-codex-security-cli/