雲の鍵 — SSRFの夏(長編フィクション)
- 山崎行政書士事務所
- 2025年9月15日
- 読了時間: 6分

— 2019年の大手金融における「クラウド上のWAF→SSRF→インスタンスメタデータ→一時鍵→S3窃取」の連鎖(Capital One事案)を骨格にした創作
0|金曜 21:03 “重いメール”の裏で
穂波(ほなみ)カードの夜間運用室。夏芽はヘッドセットをずらし、Web申込の応答遅延に関する問い合わせをもう一度読み返した。WAFのダッシュボードは緑のまま、IISは短い山を刻む。ログの隅で、奇妙な行き先がひとつだけ鋭かった。
夏芽は、冷たくなったコーヒーに目を落とした。社内から社内への通信に見える。けれどそれは、**クラウドの“裏口”**だった。
「山崎行政書士事務所に繋いで。」誰かが頷き、室内の空調音が一段高くなった。
1|21:41 “止める/伝える/回す”
静岡・山崎行政書士事務所。ホワイトボードに**律斗(りつと)**が三行を書く。
止める/伝える/回す
止める:WAF背後のアプリ群を孤島化。169.254.169.254への外向き(実体はインスタンスメタデータ)を境界で即遮断。当該EC2ロールの権限を絞り、鍵の回転を開始。
伝える:三文で経営・現場・主要取引先へ。正午/17時の時刻を約束。“確認された事実”と“未確定(継続調査)”を段落で分ける。
回す:審査・照会は孤島端末+紙運用に切替。遅いけど確実に申込処理を継続。
りなが付け足す。「**法の時計(72時間)を同時に回します。“支払い先変更メールは無効”**を最初の三文に必ず。」
奏汰(そうた)は構成図に赤を走らせる。「SSRFでメタデータを叩かれ、一時鍵を抜かれた可能性。その鍵でS3に触られたら痕が出る。“自動で直す”は今は封印。」
悠真(ゆうま)が頷く。「外に出たのは“鍵”だけじゃないかもしれない。でも、まず鍵を無力化する。」
ふみかが三文の一次報を置く。
現状:公開アプリで不審な内向きリクエスト(メタデータ参照)を確認。該当群を孤島化し、169.254.169.254遮断・鍵の回転を実施。対応:審査・照会は継続(孤島端末+紙運用)。正午に一次報、17時に更新。お願い:“支払い先変更”などメールのみの依頼は無効。必ず電話で二重確認を。
「時刻は安心の枠。」りなが赤で丸をつける。
2|22:18 “鍵”が作られる場所
孤島でログが解凍される。インスタンスプロファイルに結びついた短命の認証情報、列挙の足跡、ListBuckets の乾いた音。悠真が指で机を叩く。「“鍵を盗む鍵”がメタデータ。SSRFは外の言葉で内の棚に触れる。」奏汰はバケットポリシーとロールを締め直し、書込みの行き先を分離する。「“読む鍵”と“書く鍵”は別の鍵束に。」
蓮斗(れんと)が四つの数字を掲げる。
MTTD(検知):38分
一次封じ込め:1時間02分(孤島化/メタデータ遮断/鍵回転)
列挙イベント:連続的(短時間に集中)
外向き送出:遮断以降ゼロ(継続観測)
律斗は短く言う。「勝ってはいない。**“間に合っている”**だけだ。」
3|23:03 “見ていたつもり”の穴
WAFの設定画面には古い例外が残っていた。学習モードのまま本番へ滑り込み、警告は出るのに止めない。夏芽は唇を噛む。「“見ていたつもり”だった。」りながうなずく。「例外には期限。切れた例外は弱点になる。」
受付に白い猫のマスコットが置かれる。しっぽはUSB Type‑C。札には太い字で、
「遅いけど確実。」
4|翌朝 05:55 “雲の川口”を塞ぐ
S3アクセスログとCloudTrailの相関が回り、特定ロールから特定の束が短時間に読まれた跡が浮かぶ。悠真:「“コピーされた”と書けない。でも、“読まれた可能性”は書ける。」りなはPPC向けのドラフトを二段落で整える。
確認された事実:メタデータ参照の不審リクエスト、該当アプリ群の孤島化、メタデータ遮断、鍵の回転、S3の棚卸し。
未確定(継続調査):第三者提供の有無と範囲、影響の期間。
「混ぜない。事実と可能性を同じ文に置かない。」
5|12:00 正午の報
ふみかが読み上げ、りなが段落を整える。
事実:クラウド上の公開アプリで不審なメタデータ参照を検知。孤島化/遮断/鍵回転を実施し、S3アクセスの棚卸しを進行。影響(現時点):審査・照会は継続(孤島端末+紙運用)。個人情報の第三者提供の確証なし(継続調査)。約束:17時に更新。“メールだけ”の依頼は無効、電話二重確認を。
怒号はない。時刻が不安の終わりを作る。
6|13:30 “鍵を三つに分ける”
管理者権限は職務で切り分け、全部の鍵束を誰にも渡さない。メタデータは新しい仕組みで**“扉の前に扉”を置く。ポーリングの癖を直し**、“外から”たどれない通り道にする。奏汰は白リストに**“通すべき行き先だけ”を書き、残りは黙らせる**。
7|15:05 “声の鍵”で塞ぐ場所
ヘルプデスクに不自然な依頼が並ぶ。「トークンを落とした」「緊急でアクセスが必要」。みおが攻撃者役を演じ、夏芽は台本どおり返す。「今の番号に折り返します。上長同席の10分会議で再登録します。」声は鍵になる。手続きで鍵穴を狭める。
8|17:00 二次報
封じ込め:孤島化/遮断/鍵回転の維持、S3棚卸しの一次完了、管理権限の分割、白リスト運用の常態化。影響:業務遅延 平均12分。事故報告なし。次:夜間に**“戻し”を階段で進める(安全版/二重監視)。72時間の報告線**を維持。
律斗はペン先で小さな丸を描く。「一次封じ込めは完了。残すのは手順と地図だ。」
9|21:32 “戻れる速さ”を設計する
アプリは安全版と設計変更で順番に戻る。自動更新は止め、“人の10分会議”を間に挟む。監視には二つの新しい目——“メタデータ参照率(許可系統のみ)”と“例外の期限切れ件数”。
夏芽はモニタの青を見つめる。「鳴るべきアラートが、鳴る。」
10|二日目 08:06 “川の上流”の整理
バケットごとに分類し、暗号化とアクセスレベルを棚卸し。長年の例外は切り戻し、ポリシーは**“書ける先”と“読める先”を別に。審査の紙は薄くなり、孤島端末は数を減らす。受付のやまにゃん**(白い猫のマスコット)がしっぽのType‑Cを光らせる。札には変わらない一行。
「速さは、戻れるときだけ味方。」
11|三日後 11:40 “72時間”の線
PPCへの報告が二段落で確定する。
確認された事実:メタデータ参照の不審リクエスト、孤島化/遮断/鍵回転、S3のアクセス整理、管理権限の分割、代替運用からの復帰。
未確定(継続調査):第三者提供の有無・範囲、初期侵入時期、関連事象。
蓮斗の数字。
MTTD:38分 → 11分(監視窓の再設計)
一次封じ込め:1h02m → 34m
例外期限遵守率:98%
代替運用→本線復帰:完了
りなは三行で締めくくる。
言い切る(事実と可能性を混ぜない)期限を付ける(例外は時間で管理)二重に確かめる(自動の間に“人の10分”)
12|エピローグ 雲の鍵
夏芽は、“169.254.169.254”という数字を白板の隅に小さく残した。鍵は雲の中で作られ、奪われもした。だが鍵束を三つに分け、例外に期限を置き、声に手続きを与えたとき——川はもう一度、正しい方向に流れた。
—— 完
参考リンク(URLべた張り/事実ベース・一次情報・主要技術解説)
※物語はフィクションですが、骨格(SSRF→インスタンスメタデータ→一時鍵→S3列挙/窃取、検知・公表・司法手続、クラウド側の緩和策)は以下に基づいています。



コメント