[3] 開放型リダイレクト器は、 任意の URL へとリダイレクトさせることができるエンドポイントです。
[4] 例えば <http://www.example.com/?url=http://example.net/> にアクセスすると
<http://example.net/> にリダイレクトされるように、任意の url
の指定に対してそれをリダイレクト先の URL として使われるようになっている時、
これを開放型リダイレクト器といいます。
[5] 開放型リダイレクト器は、それが直ちにセキュリティー上の問題となるとは断言できません。 場合によっては必要があって開放型リダイレクト器が用意されていることもあります。 しかし意図せず開放型リダイレクト器となってしまっているエンドポイントも少なくなく、 その多くはセキュリティー上の問題を抱えています。
[10] 対象となるのは主として HTTPリダイレクトですが、
Refresh:
や location.href
などによるリダイレクト、リンクが表示されるだけの中間ページを生成する形の
“リダイレクト”でも問題が生じることがあります。
[14] OAuth や ASP サービスなど複数の Webサイトが連携することが正常な動作に含まれるWebサイトは、開放型リダイレクト器を使っているかもしれません。 ただ、ほとんどの場合、正当に利用しているサイトの URL を予め指定させるなど、 リダイレクト先を限定する方が適切です。
[16] 検索エンジンやニュースサイトなどは、 利用者が外部へのリンクを選択したことを統計的に記録するため、 リダイレクトを経由させることがあります。
[6] 何らかの処理を行った後に指定した URL にリダイレクトする形のエンドポイントの場合、 当該サイトの続きであるように見せかけたフィッシング目的のサイトを作りやすくしてしまいます。 例えばあるWebサービスのログイン機能が開放型リダイレクト器となっている場合、 フィッシングサイトは正当なサイトへのログイン後引き続き正当なサイトを利用しているかのように見せかけることができてしまいます。 CSRF のような他の脆弱性との組み合わせで、正当なログイン後に正当なサイトに対して不正な利用をさせてしまう可能性もあります。
[7] 指定された URL に付加情報を含めてリダイレクトする形のエンドポイントでは、 本来秘密であるべき付加情報を第三者に漏らしてしまうことになります。 例えば OAuth はリダイレクトURLに credentials を追加してリダイレクトするため、 これが開放型リダイレクト器となっていると認証に使われるトークンを第三者に送ってしまうことになります >>9。
[8] リダイレクト先の URL の種類によっては、利用者の Webブラウザーに危険な動作をさせてしまうことがあります。
例えば javascript:
URL が指定されると、意図せず JavaScript
が自動的に実行されてしまうかもしれません。
[13] URL (によってアクセスできる対象) が危険かどうかを判定するシステムは、 リダイレクトによって危険な対象の URL に飛ばされる URL も危険な対象への誘導であり危険なものと判断することがあります。 そのようなシステムや、その利用者により、開放型リダイレクト器 (またはそれを含むWebサイト全体) が危険なWebサイトと判断される場合があります >>12。
[15] 開放型リダイレクト器の著者には悪意がなくても、 悪意ある第三者がそれを利用することで、 現実に利用者を危険に晒しているかもしれず、 危険な URL やWebサイトと判断することが誤りとは言い切れません。
[12] 「st-hatena.comは危険だ!」→Google Safe Browsingの見方が間違ってるのでは? () <http://anond.hatelabo.jp/20141107154452>