Webセキュリティ入門:HTTP・Cookie・脆弱性
隠れたエンドポイントを探す
この回でやること
画面に出ている入り口がすべてではありません。隠れたエンドポイントを探し、自分の持ち物を棚卸しします。
- 読む 約 5 分
- 最後にクイズ 1 問
このレッスンで学ぶこと
エンドポイントは、外から到達できるサービスの入り口です。画面に並ぶリンクの数と入り口の数が同じかどうかを、棚卸しの手順から確かめます。
読み終えるころには、自分のサービスの棚卸しをどう始めるか分かります。
画面の数と入り口の数は違う
画面が10枚でも、入り口は10個ではありません。1枚の画面が裏で複数のAPIを呼びます。加えて、次のようなものが残りがちです。
- 使われなくなった旧版のAPI
- 検証のために作った確認用の経路
- 管理用の画面
- 説明書を自動生成する経路
どれも画面からはたどれないのに、外からは到達できます。 これが Attack Surface の実体です。
どこから分かるか
自分のサービスを調べるなら、まず内側から見るのが確実です。
ルーティングの定義。 何がどのパスに割り当てられているか、コードに書いてあります。ここが一番正確な一覧です。
ビルド後のJavaScript。 フロントエンドが呼ぶAPIのパスが文字列として入っています。次の回で扱います。
説明書の生成物。 自動生成の定義ファイルがあれば、そこに一覧があります。公開範囲を確かめます。
アクセスログ。 実際に叩かれているパスが分かります。自分でも把握していなかった経路が見つかることがあります。
棚卸しは防御の前提
何があるか分からないものは守れません。減らすにしても、まず数えるところからです。使っていないものが見つかったら、直すより消すほうが確実です。
見つけたあとにやること
一覧ができたら、それぞれについて確かめます。
- これは今も必要か。不要なら消す
- 認証が要るか。要るなら効いているか
- 認可が効いているか。他人のものを取れないか
- 返答に、出すべきでない情報が混ざっていないか
やってはいけないこと
他人のサービスに対して、総当たりで経路を探さないでください。許可の無い調査になります。自分のコードとログから始めるのが、正確でもあり安全でもあります。