[3] [DFN[[RUBY[開放型リダイレクト器][オープンリダイレクター][open redirector]]]]は、
任意の [[URL]] へと[[リダイレクト]]させることができる[[エンドポイント]]です。

[EG[
[4] 例えば <http://www.example.com/?url=http://example.net/> にアクセスすると
<http://example.net/> に[[リダイレクト]]されるように、任意の [CODE[url]]
の指定に対してそれを[[リダイレクト]]先の [[URL]] として使われるようになっている時、
これを[[開放型リダイレクト器]]といいます。
]EG]

[5] [[開放型リダイレクト器]]は、それが直ちに[[セキュリティー]]上の問題となるとは断言できません。
場合によっては必要があって[[開放型リダイレクト器]]が用意されていることもあります。
しかし意図せず[[開放型リダイレクト器]]となってしまっている[[エンドポイント]]も少なくなく、
その多くは[[セキュリティー]]上の問題を抱えています。

* 対象

[10] 対象となるのは主として [[HTTPリダイレクト]]ですが、
[CODE(HTTP)@en[[[Refresh:]]]] や [CODE(JS)@en[[[location.href]]]]
などによる[[リダイレクト]]、[[リンク]]が表示されるだけの[[中間ページ]]を生成する形の
“[[リダイレクト]]”でも問題が生じることがあります。

* 利用例

[14] [[OAuth]] や [[ASP]] サービスなど複数の [[Webサイト]]が連携することが正常な動作に含まれる[[Webサイト]]は、[[開放型リダイレクト器]]を使っているかもしれません。
ただ、ほとんどの場合、正当に利用しているサイトの [[URL]] を予め指定させるなど、
[[リダイレクト先]]を限定する方が適切です。

[16] [[検索エンジン]]や[[ニュースサイト]]などは、
[[利用者]]が外部への[[リンク]]を選択したことを統計的に記録するため、
[[リダイレクト]]を経由させることがあります。

* セキュリティー上の問題の例

[6] 何らかの処理を行った後に指定した [[URL]] に[[リダイレクト]]する形の[[エンドポイント]]の場合、
当該サイトの続きであるように見せかけた[[フィッシング]]目的のサイトを作りやすくしてしまいます。
例えばある[[Webサービス]]の[[ログイン]]機能が[[開放型リダイレクト器]]となっている場合、
[[フィッシング]]サイトは正当なサイトへの[[ログイン]]後引き続き正当なサイトを利用しているかのように見せかけることができてしまいます。
[[CSRF]] のような他の[[脆弱性]]との組み合わせで、正当な[[ログイン]]後に正当なサイトに対して不正な利用をさせてしまう可能性もあります。

[7] 指定された [[URL]] に付加情報を含めて[[リダイレクト]]する形の[[エンドポイント]]では、
本来秘密であるべき付加情報を第三者に漏らしてしまうことになります。
例えば [[OAuth]] は[[リダイレクトURL]]に [[credentials]] を追加して[[リダイレクト]]するため、
これが[[開放型リダイレクト器]]となっていると[[認証]]に使われるトークンを第三者に送ってしまうことになります [SRC[>>9]]。

[8] [[リダイレクト]]先の [[URL]] の種類によっては、[[利用者]]の [[Webブラウザー]]に危険な動作をさせてしまうことがあります。
例えば [CODE(URI)@en[[[javascript:]]]] [[URL]] が指定されると、意図せず [[JavaScript]]
が自動的に実行されてしまうかもしれません。

;; [[URL scheme]] も参照。

[13] [[URL]] (によってアクセスできる対象) が危険かどうかを判定するシステムは、
[[リダイレクト]]によって危険な対象の [[URL]] に飛ばされる [[URL]] 
も危険な対象への誘導であり危険なものと判断することがあります。
そのようなシステムや、その[[利用者]]により、[[開放型リダイレクト器]]
(またはそれを含む[[Webサイト]]全体) が危険な[[Webサイト]]と判断される場合があります
[SRC[>>12]]。

[15] [[開放型リダイレクト器]]の[[著者]]には悪意がなくても、
悪意ある第三者がそれを利用することで、
現実に[[利用者]]を危険に晒しているかもしれず、
危険な [[URL]] や[[Webサイト]]と判断することが誤りとは言い切れません。

* 開放型リダイレクト器への言及

[REFS[
- [1] [CITE@en[RFC 6749 - The OAuth 2.0 Authorization Framework]] ([TIME[2014-12-15 14:15:35 +09:00]] 版) <http://tools.ietf.org/html/rfc6749#section-3.1.2.2>
- [2] [CITE@en[RFC 6749 - The OAuth 2.0 Authorization Framework]] ([TIME[2014-12-15 14:15:35 +09:00]] 版) <http://tools.ietf.org/html/rfc6749#section-10.15>
- [9] [CITE@en[RFC 6819 - OAuth 2.0 Threat Model and Security Considerations]] ([TIME[2015-02-10 06:43:00 +09:00]] 版) <http://tools.ietf.org/html/rfc6819#section-4.1.5>
- [11] [CITE@en[RFC 6819 - OAuth 2.0 Threat Model and Security Considerations]] ([TIME[2015-02-10 06:43:00 +09:00]] 版) <http://tools.ietf.org/html/rfc6819#section-4.2.4>
]REFS]

* メモ

[12] [CITE[「st-hatena.comは危険だ!」→Google Safe Browsingの見方が間違ってるのでは?]]
([TIME[2017-01-12 23:52:59 +09:00]])
<http://anond.hatelabo.jp/20141107154452>