オープンリダイレクト(オープンリダイレクト)とは | 意味や読み方など丁寧でわかりやすい用語解説

オープンリダイレクト(オープンリダイレクト)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

オープンリダイレクト (オープンリダイレクト)

英語表記

Open redirect (オープンリダイレクト)

用語解説

オープンリダイレクトとは、Webアプリケーションに存在するセキュリティ上の脆弱性の一つである。この脆弱性は、Webサイトがユーザーを別のページに自動的に転送する「リダイレクト」という機能の実装不備に起因する。具体的には、リダイレクト先のURLを外部からパラメータとして受け取る際、そのURLの妥当性を検証しない、あるいは検証が不十分であるために、攻撃者が指定した任意の外部サイトへユーザーを誘導できてしまう状態を指す。この脆弱性は「URLリダイレクションの脆弱性」とも呼ばれる。

Webアプリケーションにおけるリダイレクトは、ログイン後のページ遷移や、サイト内でのページ移動、言語設定の切り替えなど、様々な場面で利用される正当な機能である。一般的に、リダイレクトはサーバーからのHTTPレスポンスに含まれるLocationヘッダと、300番台のステータスコード(301や302など)によって実現される。ブラウザはこのレスポンスを受け取ると、Locationヘッダに指定されたURLへ自動的に再アクセスする。問題は、このLocationヘッダに指定されるURLを、リクエストURLのクエリパラメータなど、ユーザーが操作可能な値に基づいて動的に生成している場合に発生する。例えば、https://trusted-site.com/redirect?url=https://trusted-site.com/mypage のように、urlパラメータで遷移先を指定する実装があったとする。この時、アプリケーションがurlパラメータの値を全く検証していないと、攻撃者はこの値を悪意のあるサイトのURLに書き換えることが可能になる。https://trusted-site.com/redirect?url=https://evil-site.com のようなURLを作成し、これをメールやSNSなどでユーザーにクリックさせることで、信頼されたドメインから攻撃者のサイトへユーザーをリダイレクトさせることができる。

オープンリダイレクトの脆弱性が悪用された場合、最も警戒すべき脅威はフィッシング詐欺である。ユーザーはURLのドメイン名を見てリンクの信頼性を判断することが多い。攻撃者が作成したURLは、ドメイン部分が正規の信頼できるサイト(trusted-site.com)であるため、ユーザーは安心してクリックしてしまう可能性が高い。しかし、クリックした直後に、正規サイトと酷似したデザインの偽サイト(evil-site.com)に転送され、ログイン情報やクレジットカード情報、個人情報などの入力を求められる。ユーザーは正規サイトの延長線上にあるページだと誤信し、重要な情報を入力してしまうことで、情報が窃取される被害に遭う。この手口は、正規のドメイン名を悪用することでユーザーの警戒心を解くため、非常に効果的であり、多くのフィッシング攻撃の起点となっている。また、マルウェアを配布するサイトへ誘導し、ユーザーのコンピュータをウイルスに感染させるといった攻撃にも利用される。

この脆弱性への対策は、リダイレクト処理の実装方法に集約される。最も安全な対策は、リダイレクト先を外部からのパラメータに依存させず、サーバーサイドのプログラム内に固定的に定義することである。どうしてもリダイレクト先を動的にする必要がある場合は、遷移を許可するURLのリスト(ホワイトリスト)をあらかじめサーバー側で定義し、パラメータで受け取ったURLがそのリストに完全に一致するかどうかを検証する。この時、部分一致や前方一致で検証すると、https://trusted-site.com.evil-site.com/ のようなURLを許可してしまう可能性があるため、完全一致による厳密な検証が求められる。ドメイン名だけでなく、プロトコル(https)やパスまで含めて検証することが望ましい。別の方法として、URLそのものではなく、page_id=1 のように遷移先を示す識別子をパラメータとして利用し、サーバー側でその識別子に対応する正規のURLに変換してからリダイレクトする方式も有効である。これにより、任意のURLを指定されるリスクを根本的に排除できる。もし業務上の要件などで不特定多数の外部サイトへのリダイレクトを許可せざるを得ない場合は、リダイレクトを実行する前に「外部サイトへ移動します。よろしいですか?」といった警告ページを挟み、ユーザーに明確な意思確認を求めるクッションページを設けるべきである。

オープンリダイレクトは、直接的な情報漏洩やシステムの破壊に繋がる脆弱性ではないため、他の脆弱性と比較して危険度が低いと見なされることもある。しかし、上記のようにフィッシング詐欺の踏み台として極めて有効であり、ユーザーに深刻な被害をもたらす起点となりうる。また、脆弱性が存在するサイト自体の信頼性を著しく損なうことにも繋がる。したがって、システムエンジニアは、リダイレクト機能を実装する際には必ずリダイレクト先の検証を徹底し、安全な設計を心掛ける必要がある。