開放型リダイレクト器

開放型リダイレクト器 (Web)

[3] 開放型リダイレクト器 (オープンリダイレクター) (open redirector) は、 任意の URL へとリダイレクトさせることができるエンドポイントです。

[4] 例えば <http://www.example.com/?url=http://example.net/> にアクセスすると <http://example.net/>リダイレクトされるように、任意の url の指定に対してそれをリダイレクト先の URL として使われるようになっている時、 これを開放型リダイレクト器といいます。

[5] 開放型リダイレクト器は、それが直ちにセキュリティー上の問題となるとは断言できません。 場合によっては必要があって開放型リダイレクト器が用意されていることもあります。 しかし意図せず開放型リダイレクト器となってしまっているエンドポイントも少なくなく、 その多くはセキュリティー上の問題を抱えています。

対象

[10] 対象となるのは主として HTTPリダイレクトですが、 Refresh:location.href などによるリダイレクトリンクが表示されるだけの中間ページを生成する形の “リダイレクト”でも問題が生じることがあります。

利用例

[14] OAuthASP サービスなど複数の Webサイトが連携することが正常な動作に含まれるWebサイトは、開放型リダイレクト器を使っているかもしれません。 ただ、ほとんどの場合、正当に利用しているサイトの URL を予め指定させるなど、 リダイレクト先を限定する方が適切です。

[16] 検索エンジンニュースサイトなどは、 利用者が外部へのリンクを選択したことを統計的に記録するため、 リダイレクトを経由させることがあります。

セキュリティー上の問題の例

[6] 何らかの処理を行った後に指定した URLリダイレクトする形のエンドポイントの場合、 当該サイトの続きであるように見せかけたフィッシング目的のサイトを作りやすくしてしまいます。 例えばあるWebサービスログイン機能が開放型リダイレクト器となっている場合、 フィッシングサイトは正当なサイトへのログイン後引き続き正当なサイトを利用しているかのように見せかけることができてしまいます。 CSRF のような他の脆弱性との組み合わせで、正当なログイン後に正当なサイトに対して不正な利用をさせてしまう可能性もあります。

[7] 指定された URL に付加情報を含めてリダイレクトする形のエンドポイントでは、 本来秘密であるべき付加情報を第三者に漏らしてしまうことになります。 例えば OAuthリダイレクトURLcredentials を追加してリダイレクトするため、 これが開放型リダイレクト器となっていると認証に使われるトークンを第三者に送ってしまうことになります >>9

[8] リダイレクト先の URL の種類によっては、利用者Webブラウザーに危険な動作をさせてしまうことがあります。 例えば javascript: URL が指定されると、意図せず JavaScript が自動的に実行されてしまうかもしれません。

URL scheme も参照。

[13] URL (によってアクセスできる対象) が危険かどうかを判定するシステムは、 リダイレクトによって危険な対象の URL に飛ばされる URL も危険な対象への誘導であり危険なものと判断することがあります。 そのようなシステムや、その利用者により、開放型リダイレクト器 (またはそれを含むWebサイト全体) が危険なWebサイトと判断される場合があります >>12

[15] 開放型リダイレクト器著者には悪意がなくても、 悪意ある第三者がそれを利用することで、 現実に利用者を危険に晒しているかもしれず、 危険な URLWebサイトと判断することが誤りとは言い切れません。

開放型リダイレクト器への言及

メモ

[12] 「st-hatena.comは危険だ!」→Google Safe Browsingの見方が間違ってるのでは? () <http://anond.hatelabo.jp/20141107154452>