開発ツール・セキュリティ
CodeQLのシステムプロンプト注入検知は、AIアプリの安全確認をコードレビューへ組み込む
GitHubはCodeQL 2.26.0に、信頼できないユーザー入力がシステムプロンプトへ流れ込む経路を検出するJavaScript / TypeScript向けクエリを追加しました。プロンプト安全性が、手作業の確認から静的解析の対象へ入ります。
先に見る点
- 新しい
js/system-prompt-injectionクエリは、外部入力からシステム指示までのデータフローを追跡します。 - OpenAI、Anthropic、Google GenAIの追加APIが「危険な到達点」としてモデル化されました。
- 検知は防御の最初の確認であり、実行時の権限制限や出力検証も引き続き必要です。
「プロンプト文字列」もセキュリティ境界になった
システムプロンプトには、エージェントの役割、禁止事項、利用可能なツール、内部ルールが含まれます。そこへ検索結果、フォーム入力、外部文書などの未検証値を連結すると、攻撃者がモデルの優先指示を書き換えたり、意図しない操作へ誘導したりする余地が生まれます。
図解: CodeQLが追う危険な流れ
Sourceフォーム、URL、外部文書などの未信頼入力。
Flow加工・連結されながらアプリ内を移動。
Sinkシステム指示やキャッシュ済みコンテンツへ到達。
現場で見る点: アラートを直すだけで終わらせない
| 層 | 対策 | 確認事項 |
|---|---|---|
| コード | 入力とシステム指示を分離する | 文字列連結やテンプレート展開を避ける |
| モデル | 外部コンテンツをデータとして明示する | 命令と引用データの境界を保つ |
| ツール | 最小権限と承認ゲート | モデルが誤誘導されても重大操作を防ぐ |
| 運用 | 攻撃テストとログ監視 | 新しい入力経路を継続的に評価する |
github.comのコードスキャン利用者には新バージョンが自動展開されます。GHESでは将来リリースへの収録待ちとなるため、必要に応じてCodeQLの手動更新計画を確認します。
まとめ
今回の更新は、AIアプリ特有の欠陥が一般的なDevSecOpsへ統合され始めた合図です。静的解析で見つけられる経路を早期に潰し、実行時の権限と人間の承認を重ねる多層防御が現実的です。