MFAはログインで終わる。乗っ取りはそこから始まる
ログインの儀式にはハードウェアキーと生体認証が並ぶ。だがその後のすべては、一枚のクッキーに乗っている。いま乗っ取りが起きるのはパスワードではなくセッションだ。
この10年、多くのチームは責任ある仕事をした。ログインを固めたのだ。パスワードには第二要素が付き、第二要素はフィッシング耐性を獲得し、平均的なSaaSの正面玄関は、招かれずに通り抜けるのが本当に難しい場所になった。
だから攻撃者は、玄関を通るのをやめた。玄関が配っているものを盗むことにした。
トークンこそがアカウントだ
ログインが成功すると、セッションが発行される。クッキー、トークン — 「このリクエストは認証を済ませた本人からのものだ」を意味する文字列だ。その瞬間から、ハードウェアキーも生体認証プロンプトも、丹念に調整したMFAポリシーも、舞台から退場する。それらが参照されたのは一度きり。セッションは、すべてのリクエストで参照される。
ここに、攻撃者のほうが防御側よりよく理解している非対称性がある。ログインの儀式は数分間の精査だ。セッションは数週間の無審査の信頼だ。インフォスティーラー、悪意あるブラウザ拡張、日常業務に見えたOAuth認可、言いくるめられたサポートデスク — 手段は何であれ、その文字列さえ手に入れば、固められた部分を丸ごとスキップできる。盗まれたトークンは、自分が移動したことを知らない。
これがセキュリティモデルに何をもたらすかに注目してほしい。最強のコントロールが守っているものは一度だけ発行され、あとは単独で旅をする。MFAへのあらゆる投資は、発行の瞬間に効力を終える。
セッションは何かに結びついているか?
大半のシステムでの正直な答えは「何にも」だ。ベアラートークンとは文字通りの意味である — 持参した者が、本人だ。別のマシンから、別のネットワークから、別の大陸からリプレイしても、サーバーに見えるのは「有効なセッションが有効な操作をしている」姿だけだ。
ヒューリスティクスを足すシステムもある。新しいIPレンジにフラグを立てる、新しいユーザーエージェントで再ログインを求める。役には立つ。同時に、ユーザーを「たまにランダムに再認証を求められるもの」に慣れさせるという代償も払う。構造的な修正は別の場所にある。セッションを発行先のデバイスに証明可能な形で束縛し、トークンの所持だけでは無価値にすることだ。ログイン段階にはデバイス束縛型のクレデンシャルがすでに存在する — プラットフォームパスキーがそれだ。その束縛をセッション層まで延長するのが業界の緩やかな進行方向であり、現在のギャップが住んでいる場所でもある。
本当に重要な儀式
ここから導かれる視点の転換はこうだ。セキュリティ上の重大イベントはログインではない。ログインは、すでに信頼したデバイスから毎日起きる。重大イベントは新しいデバイスの初登場だ — 正当な利用と乗っ取りが最も見分けにくいのはそこであり、高価なチェックに値する判断もそこにある。
デバイス登録を一級の儀式として扱うと、システムが発する問いが変わる。「このリクエストは有効なセッションを持っているか」ではなく、「このデバイスはいつ、誰によって導入され、どう検証されたか」。乗っ取りの試みは、クッキーで素通りする代わりに、こちらの最強の経路を突破しなければならなくなる。しかも登録イベントは稀なので、そこには本物の摩擦を置く余裕がある。毎回のログインでの摩擦にはユーザーは反乱を起こすが、「見たことのないマシンが入りたがっている」ときの摩擦は、むしろ期待されるものだ。
自分のシステムに問う価値のある質問
- セッションは実際どれだけ生きるか — 設定値ではなく、リフレッシュフローまで数えた観測値として?
- あるマシンのセッショントークンが別のマシンから提示されたとき、何かが気づくか? 何か一つでも?
- データ削除、出金先変更、管理者追加 — 「いまここにいる証明」を改めて求める操作が一つでもあるか? それとも朝のクッキーが深夜まですべてをカバーするか?
- アカウントに新しいデバイスが現れたとき、それは後から人間がレビューできる場所に記録されるか、それともログイン行の海に溶けるか?
どれも、ログインのために築いたものを捨てろという話ではない。固めた境界線が、実際に越えられている境界線ではないことに気づけ、という話だ。
テストの居心地の悪い版はこうなる。あなたのラップトップのセッションクッキーが、いま別の国のマシンからリプレイされたら、あなたのプロダクトはそれを「あなた」として扱うか? 大半のプロダクトの答えはイエスであり、スティーラーのログを読むすべての攻撃者がそれを知っている。
Axowlはデバイス登録を封印された監査可能なイベントとして扱う — アカウント上の新しいデバイスは、ログイン行ではなく記録された意思決定だ。仕組みを見る