Covert Redirect で Query 漏れるケースもある!?

Covert Redirect 連載最後は、location.href とか <meta http-equiv=“Refresh”> とかだと referrer 通じて query に含まれる code とかも漏れるかもね!ってお話です。

古いサイトですが、こことか見れば大体いいんじゃないでしょうか => リファラ実験

で、こういうリダイレクトをしてる箇所が OAuth 2.0 の redirect_uri なり OpenID 2.0 の return_to なりに指定されていれば、query に付いた code なり email なりがリファラ経由で外部に漏れるよね、という。

はい、漏れますね! (投げやり

さて、そんなに該当例多くはないと思うのですが、ここまで該当してしまったサービスは、どうしますかねぇ…

Facebook であれば、Facebook Login で Covert Redirect を防止するにあるような方法で回避できますが、それ以外の OAuth Provider なり OpenID 2.0 Provider と連携してる場合は、困っちゃいますねぇ…

被害例

OAuth 2.0 の code が漏れた場合については既に書きました。

Client が redirect_uri 上で state パラメータのチェックを怠っていれば、code 置換攻撃が可能になるっていうアレです。

OpenID 2.0 のレスポンスパラメータが漏れた場合は、そのパラメータに email や name なんかが含まれてる場合があるので、そういった場合はそれらが外部に漏洩します。

また世の中には OpenID 2.0 の nonce を OAuth 2.0 の access token のように使って API アクセスさせる事業者があったりするんで、そういった場合は acccess token 相当のものが漏洩します。

それら access token 相当の nonce が漏れた場合の実害については、提供される API に依存するのでここでは未知です。

対策方法

リダイレクト方法変えろ、って以外の回避策を思いついたら、この下に書きます。

Comments