既知の攻撃への対策コードやテストを生成できま 誰が、誰の対象へ、どの順序で操作できるかは、業務データから決めます。 す。 の導入で増えるもの 入力経路、API呼び出し回数、実行速度が増えま す。 ② 入力元を信用せず、証拠を確かめる 生成AIも内部APIも入力元です。操作は提案できても、権限を与える側にはしま せん。 へ委ねる前に必要なもの 人とシステムが共有できる判定基準が必要です。 ③ 生成結果を継続して検証する 起きてほしくないことを先に決め、契約・業務テスト・ログでAIの仕事も検証 します。 AI AI にコードを書かせるほど、人は「何を許すか」と「正しく拒否できたか」を明文化する必要があります。 AI 4
PUT /posts/1 → 200 OK Figure 4.1 BOLA happens when user A can access resources or operations that should be accessible only to user B, such as updating user B's posts. 同じ欠落は、注文以外のデータでも起きます。BOLAはBroken Object Level Authorizationの略で、データ1件ごとの認可の不備を指します。 リクエストを処理するコードは「投稿1が存在するか」を確認していま す。しかし、要求主体と投稿1の所有者との関係を確認していません。 より引用 存在確認は認可ではありません。所有者を見ないコードは、IDさえ合っていれば通します。 9
所有者、テナント、状態、時刻を になります。 文脈として使います。 より引用 左の図は、一般ユーザーが管理者向けAPIを呼び出せてしまう例です。主体は一般ユーザー、操作は読む、対象は管理者向け API、文脈はそのユーザーのロールにあたります。4つのうちロールだけを見ていないため、200が返っています。 4つのうち1つでも評価していなければ、通ってしまう経路が残ります。 Figure 4.14 A common cause of BFLA is failure to check whether users' roles have access to the requested API. In this example, a normal user gets access to an admin API. 11
3.8 Zero-trust APIs apply NIST 800-207's principles to protect all assets and endpoints, apply robust access controls, and validate data across all flows while actively monitoring malicious activity. り引用 よ 「内部APIだから」「自社DBだから」と検証を省くと、壊れたデータが別のAPIへ送信されたり、DBへ保存されたりします。ゼ ロトラストでは、出所ではなく検証結果を根拠にデータを扱います。 参考: NIST SP 800-207, Zero Trust Architecture 15
年に米国の大手金融機関Capital Oneで起きた事例です。問題になっ たのはURL文字列だけではありません。外から到達できない場所へ行け るサーバー側の権限を、未検証の入力が操作しました。 2019 Figure 5.5 Capital One's SSRF attack happened due to a misconfiguration in its WAF, which allowed the threat actor to relay a request to Capital One's EC2 instance metadata endpoint and retrieve its AWS access keys. より引用 正規のリクエスト1本で、外部からは触れないはずの認証情報が外へ出ました。 17
Gateway API 業務APIに残す判断 所有者、見せてよい項目、現在の状態、許される業務フローは、業務 APIで判断します。 Figure 9.1 API gateways serve as single entry points to multiple backend APIs, helping us provide a unified API style, manage our API inventory, apply consistent access controls and security configuration, and improve observability. 引用 より ただし、「誰の注文か」「今キャンセル可能か」という事実までは、API Gatewayは知りません。 業務データを見ずに判定できる処理だけを集約します。それ以外は業務APIに残ります。 20
APIs, we must address security early in the SDLC and shorten the feedback loop by assessing our vulnerabilities frequently. より引用 設計 脅威モデルと認可境界をレ ビューします。 実装 契約、認可、入力をテスト します。 配備 設定とポリシーを検査しま す。 運用 乱用と拒否理由を観測しま す。 22
認証、BOLA、RBAC / ABAC、業務フローを複数の主体で試します。 1. Figure 12.1 Our threat model considers the possibility that unauthenticated users can access protected content, so we must write tests to verify that our authentication layer works properly. より引用 層目は準備コストが高い一方、汎用ツールだけでは確かめられません。AIエージェントなら、主体・注文・金額・ツール実行順序を 変え、拒否される経路をテストします。 脅威モデルの「起きてほしくないこと」を、失敗するテストへ翻訳します。 3 24
HTTP 403の件数だけでは、どの関係を拒否したか再現できません。「誰が何を許可・拒否されたか」を業務上の出来事として記録し ます。 Figure 11.1 By continuously analyzing our logs, we gain an understanding of the state of our system. In this example, we find that one endpoint is encountering an unusual error rate. 25