7月29日、The Next Webが「AI-generated code shipped controls but skipped the check」と題した記事を公開した。セキュリティ制御は全部揃っていた。それでも破られた——インシデント対応企業Sygniaが金融サービス企業で発見した脆弱性は、「AIが何も実装しなかった」のではなく「誤った信頼判断をセキュリティ機能で包み込んだ」という、より厄介な構造を持つ事例だ。
「セキュリティ機能は全部あった」のに破られた
これが本件の核心だ。コードが「何も実装していなかった」という話ではない。
インシデント対応企業のSygniaが、数十億ドル規模の資産を管理する金融サービス企業のペネトレーションテスト(侵入テスト)を実施した。対象は、Claudeを主体として構築された顧客オンボーディングアプリケーション。政府発行の身分証明書、本人確認データ、支払い情報、社会保障番号(SSN)を扱うシステムだ。
発見された脆弱性はシンプルかつ致命的なもので、あるユーザーが別のユーザーのレコードにアクセスできる状態だった。
Sygniaが問題のコードを精査すると、実装には以下の制御が揃っていた:
- 一時トークンと有効期限
- レートリミット
- 監査ログ
- セッション復元
- 不審アクティビティ検知
どれも実在するセキュリティ制御だ。しかしどれも、「トークンを発行する前に誰であるかを証明する」という問いに答えていない。
問題はトークン発行後の処理ではなく、発行を決定する瞬間にあった。システムは申請者のGUID(Globally Unique Identifier:グローバル一意識別子、レコードを識別するためのID)を所持していることを、トークン発行の「十分な証明」として扱っていた。
「実質的に、GUIDがベアラーシークレット(所持しているだけで認証が通る秘密情報)になっていた」
— Sygnia 調査レポートより
GUIDはレコードを識別するものであり、そのレコードを所有していることを証明しない。GUIDを入手した者は誰でも、氏名・連絡先・申請状況・財務情報・本人確認データ・支払い情報・SSN、さらには共同申請者のデータにもアクセスできた。共同申請者は自分の意思でシステムに登録したわけではなく、他者に名前を挙げられた人々だ。
Sygniaはこの構造を次のように表現している。
「問題はシステムにセキュリティ制御が欠けていたことではない。制御が、誤った信頼判断を包み込んでいたことだ」
なぜスキャナーが見逃すのか
静的アプリケーションセキュリティテスト(SAST)ツールは、安全でないコーディングパターンや危険なデータフローを検出する。今回の脆弱性はそのどちらでもなかった。
フローはアーキテクチャレベルに存在し、信頼に関する前提の中に書き込まれていた。コードはフレームワークの慣習に従い、基本的なチェックも通過していた。
テストを担当したSygniaのペネトレーションテスター、Zach Mead氏はこう述べている。
「動くコードと安全なコードは同じではない。AIが生成したコードはコンパイルが通り、慣習に従い、基本チェックもパスしながら、信頼境界・認可・状態管理・所有権・サードパーティ連携について欠陥のある前提を持ち込むことがある」
LLMが、LLMの作ったものを見つけた
今回の発見は人手によるものではない。Sygniaはクライアントのコードベースの一部に言語モデルを走らせ、信頼境界の問題やビジネスロジックの欠陥を探索させた。そのモデルが申請者トークンの問題を直接検出した。
Sygniaはこの状況について、「バイブコーディングで作ったセキュリティアーキテクチャの欠陥が、バイブコーディングのコードレビューで発見された」とまとめている。
これは両刃の剣でもある。防御側がモデルに「信頼境界の欠落はどこか」と問えるなら、流出したソースコードや実装メモを持つ攻撃者も同じことができる。Ciscoも同様の理由でオープンウェイトモデルをバグハンティングに活用している。一つの能力に、二つの使い方がある。
実務への示唆:プロンプトにセキュリティ要件を書け
Sygniaはツールの使用禁止を推奨していない。禁止すれば、個人アカウントでの利用に流れ、誰も把握できなくなるためだ。
代わりに提案されているのは以下だ:
- AIが生成・大幅変更したプルリクエストにはそのことを明記し、使用ツール名を残す
- 認証・決済・データエクスポート・規制対象情報に触れる変更はフラグを立てる
最も具体的なのはプロンプトに関する指摘だ。「申請者用の一時アクセストークンを作れ」は不完全な指示である。安全なプロンプトは次を明示する必要がある:
- 申請者の識別子をシークレットとして扱わないこと
- トークン発行には申請者本人であることの独立した証明が必要なこと
- ある申請者が別の申請者のトークンを取得できないことを確認するネガティブテストを含めること
モデルは組織のリスクモデルを自分では推論しない。セキュリティ要件はプロンプトの中に書かなければならない。
【編集注】本件はSygniaが新しい商業サービス「AI Cybersecurity Services」を発表した同日に公開されたベンダーレポートであり、クライアント名は非公開、第三者による独立検証もない点は留意が必要だ。ただし、The Next Webが以前報じたバイブコーディングのセキュリティ問題やコーディングエージェントのサンドボックスエスケープと整合する事例でもある。
詳細はAI-generated code shipped controls but skipped the checkを参照していただきたい。