サービスを作っていないセッションに攻撃させる。外部スキャンが見えないもの、自前のレッドチーム、セッションをまたぐ検証、そしてAIという新しい戦線。
§ 00 · 青信号
スキャナーを回す。A、100点、発見0、すべて合格。安心する。
しかしここまで読めば分かる。今受け取ったのは真実でなく自白だ。私は同じスキャナーが、コード一行も変わらず九分で「穴六つ」から「異常なし」に反転するのを見た。この文章はその青信号についてだ。
§ 01 · スキャナーの自白
外部スキャナーが見るのは表皮。転送、ヘッダー、Cookie、露出ファイルだ。必要な衛生だが、二つはできない。
第一、スキャナーが見るのは一瞬。デプロイの過渡期に一件のリクエストでヘッダーが抜けると「全部突破」と出た。八回の実測でそれを崩した。第二、本当の事故が起きる場所、認可、インジェクション、ビジネスロジック、サーバー内部は構造的に見えない。
合格は表皮がきれいという意味で、中が安全という意味ではない。だから報告を読むだけでなく、自分で状態を測り直せ。青信号は主張で、証拠は実測した応答だ。
§ 02 · 作り手の盲点――自己取調べ
作った人は自分の前提の内側でだけ検証する。動くと証明したい確証バイアスだ。ひっくり返せ。自分の出力を証言台に立たせ、嘘だと仮定して取り調べろ。
このルートは認証なしで開くか。他人のidで自分のデータが開くか。バンドルに秘密情報が漏れるか。それでも天井がある。監視される者は最後まで自分の死角をすべて見られない。
§ 03 · 第二の取調官
実際にこういうことがあった。あるセッションが共用関数を削除し、見える二つの利用箇所を直してデプロイしようとした。しかし、その出発点から構造的に見えない第三の利用箇所があった。別のセッションはそれを持っていた。異なるbaseと前提が盲点を捕まえた。
一般化すれば、そのコードを作っていないセッションに攻撃させろ。その死角はあなたの死角とは違う。予測不能は無作為でなく、異なる出発前提から来る。
§ 04 · 有償の攻撃者は合理的だ
金を受け取ってサービスを殴る者は無作為に動かない。ROIを追う。狙うのは最重要資産、資金の流れ、認証、個人情報、可用性。だからその順に守れ。
化粧品のようなヘッダー指摘百個より、決済経路の競合状態一つが致命的だ。スキャンの前に問え。有償の攻撃者は、ここで正確に何を欲しがるか。
§ 05 · 新しい戦線――AIそのもの
AIで作る人への逆転が一つ。サービスはAIが作るだけでなく、チャットボットやアシスタントとしてAIを内包することも多い。それが最も新しく、最も守られていない表面。プロには最高のROIだ。
プロンプトインジェクション。利用者の入力や外部コンテンツが指示を上書きする。安全でない出力。AIの出力を未検証で描画すればXSSになる。そして自力で作る人に最も残酷なのが費用爆発。高価なプロンプトを浴びせてあなたの金を燃やす。AI層も他の容疑者と同じように取り調べろ。
§ 06 · 相互検証の限界
どんなスキャンも十分ではない。表皮だけだ。別セッションのレッドチームも完全には独立していない。同じモデルには共通の死角が残る。違うモデルを混ぜろ。
そして最も残酷なこと。レッドチーム自身も腐る。設置したセンサーが、一度も失敗しない空ファイルになる。監視者も監査せよ。異常なしと確信する防御こそ、疑うべき防御だ。
CODA · 本当に噛む部屋か
スキャナーの青信号、テスト全合格、デプロイ完了。すべて自白だ。サービスの安全は、文書に書いた取調べでなく、実際に動く取調べの分だけだ。
声に出して問え。自分の防御は本当に噛む取調室か。誰も確かめていない青信号か。
記事を読む: sass.studio.