【おーぷんりだいれくと】

オープンリダイレクト とは?

最終更新:
💡 正規サイトのリンクが、別のサイトへの入口に

サイトが信頼できない入力を転送先に使い、攻撃者が任意の外部サイトへ利用者を誘導できる脆弱性。正規サイトから始まるリンクをフィッシングなどに悪用できる。外部への転送機能やURLパラメータがあるだけで、必ず脆弱性になるわけではない。

📌 このページのポイント
オープンリダイレクト:転送先の穴正規サイトから始まるリンク転送先の指定は、攻撃者が変更正規サイト転送先を検証しない偽サイト情報の入力を誘う転送移動後は、アドレスも転送先になる
転送先の指定を悪用する例。外部への転送機能そのものが常に脆弱性になるわけではありません。
ひよこ ひよこ
リダイレクトは、普通の機能だよね?
ペンギン先生 ペンギン先生
そうだよ。古いページから新しいページへ案内するなど、正常な用途がある。問題は、利用者が渡した値を十分に検証せず、攻撃者が任意の外部URLへ転送させられることなんだ。
ひよこ ひよこ
正規サイトのリンクでも、危ないの?
ペンギン先生 ペンギン先生
たとえばリンクの前半が正規サイトでも、転送先の指定が攻撃者のサイトになっている場合があるよ。最初のドメインを見て安心させ、別のサイトへ誘導するために悪用できるんだ。
ひよこ ひよこ
移動しても、アドレスは同じに見える?
ペンギン先生 ペンギン先生
別のサイトへ移動すれば、ブラウザーのアドレスも転送先に変わるよ。移動前のアドレスがずっと残るわけではない。リンクを信じて開いた後、移動先を確認せず情報を入力すると、フィッシングの被害につながるんだ。
ひよこ ひよこ
トークンも、自動で盗まれる?
ペンギン先生 ペンギン先生
転送があるだけで、すべてのトークンが盗まれるわけではないよ。ただしOAuthの認証の流れで、転送先の検証などに問題があると、認可コードやトークンが漏れる攻撃につながる。通常のページ案内と、認証に使う転送は区別して点検しよう。
ひよこ ひよこ
作る側は、どう防ぐ?
ペンギン先生 ペンギン先生
転送先を固定するか、短いIDをサーバー側で許可したURLに対応させる方法があるよ。URLを受け取るなら、許可した先か適切に検証する。OAuthでは登録済みURIとの厳密な一致が原則。相対パスと見える文字列だけを理由に、安全とは判断しないでね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「オープンリダイレクト」って出てきたら「正規サイトを入口に、勝手な転送先へ誘導できる穴」と思えばだいたいOK!
📖 おまけ:英語の意味
「Open redirect」 = 制限されていない転送
💬 Redirectは別のURLへ移動させること。転送先の指定が適切に制限されず、悪用できる状態を指すよ。

参考資料

← 用語集にもどる