Big Redirect Detected (Potential Sensitive Information Leak)
概要
- 脆弱性の名前: Big Redirect Detected (Potential Sensitive Information Leak) (大きなリダイレクト検出(潜在的な機密情報漏洩))
- 問題の要点: Webサイトが過剰なリダイレクトを使用しており、その過程で機密情報がURLパラメータとして漏洩する可能性がある状態。
- よくある発生シーン: Webサイトのリニューアル時、URL構造の変更時、トラッキングパラメータの付与など。クラウド環境では、ロードバランサーやリバースプロキシの設定ミスにより、意図しないリダイレクトが発生することがあります。
背景
リダイレクトは、WebサイトのURL構造を変更したり、ユーザーを別のページに誘導したりするために一般的に使用されます。しかし、リダイレクトの回数が多かったり、リダイレクト先に機密情報が含まれるURLパラメータが付与されたりすると、セキュリティ上のリスクが高まります。
特に、Refererヘッダーを通じてリダイレクト元のURLが漏洩する可能性があるため、注意が必要です。
セキュリティ上のリスク
- URLパラメータに含まれる機密情報(セッションID、APIキー、個人情報など)の漏洩。
- Refererヘッダーを通じて、リダイレクト元のURLが第三者に漏洩する可能性。
- 中間者攻撃(Man-in-the-Middle attack)による、リダイレクト先の改ざん。
- フィッシング詐欺への悪用。
対処方法の具体例
Apache2
誤った設定例
.htaccess
ファイルで過剰なリダイレクトを設定している例:
# 誤った例: 過剰なリダイレクト
RewriteEngine On
RewriteRule ^old-page\.html$ /new-page1.html [R=301,L]
RewriteRule ^new-page1\.html$ /new-page2.html [R=301,L]
RewriteRule ^new-page2\.html$ /final-page.html [R=301,L]
正しい設定例
.htaccess
ファイルでリダイレクトを最小限に抑える例:
# 正しい例: リダイレクトを最小限に抑える
RewriteEngine On
RewriteRule ^old-page\.html$ /final-page.html [R=301,L]
Nginx
誤った設定例
設定ファイルで過剰なリダイレクトを設定している例:
# 誤った例: 過剰なリダイレクト
location = /old-page.html {
return 301 /new-page1.html;
}
location = /new-page1.html {
return 301 /new-page2.html;
}
location = /new-page2.html {
return 301 /final-page.html;
}
正しい設定例
設定ファイルでリダイレクトを最小限に抑える例:
# 正しい例: リダイレクトを最小限に抑える
location = /old-page.html {
return 301 /final-page.html;
}
PHP
誤った設定例
PHPスクリプトで過剰なリダイレクトを発生させている例:
<?php
// 誤った例: 過剰なリダイレクト
header("Location: /new-page1.php");
header("Location: /new-page2.php");
header("Location: /final-page.php");
exit;
?>
正しい設定例
PHPスクリプトでリダイレクトを最小限に抑える例:
<?php
// 正しい例: リダイレクトを最小限に抑える
header("Location: /final-page.php");
exit;
?>
JavaScript
JavaScriptを使用してリダイレクトを行う場合も、同様にリダイレクトを最小限に抑えることが重要です。
AWS
正しい設定例
CloudFrontを使用してリダイレクトを設定する場合、リダイレクトの回数を最小限に抑え、URLパラメータに機密情報が含まれないように注意します。
検出方法
OWASP ZAPでの出力例
- Alert 名: Big Redirect Detected (Potential Sensitive Information Leak)
- リスク: Low
- URL: リダイレクトが発生しているURL
- パラメータ: なし
- 詳細: リダイレクトの回数、リダイレクト先に機密情報が含まれるURLパラメータが付与されている可能性があるという情報
手動再現例
- Webブラウザの開発者ツールを開き、Networkタブを選択します。
- Webサイトにアクセスし、リダイレクトが発生しているURLを確認します。
- リダイレクトの回数が多かったり、リダイレクト先に機密情報が含まれるURLパラメータが付与されている場合、脆弱性が存在する可能性があります。
curl -I https://example.com/old-page.html
上記コマンドを実行し、複数のリダイレクトが発生する場合、脆弱性が存在する可能性があります。
まとめ
- CVSS 基本値: 2.6 (Low)
- 運用チームや開発者が意識すべきポイント:
- Webサイトのリダイレクトを最小限に抑える。
- URLパラメータに機密情報を含めないようにする。
- Refererヘッダーを通じて機密情報が漏洩しないように対策する。
- リダイレクトの設定を定期的に見直し、不要なリダイレクトを削除する。
- 再発防止:
- 開発プロセス全体でセキュリティを考慮する(Security by Design)。
- コードレビューを実施し、過剰なリダイレクトや機密情報の漏洩がないか確認する。
- 自動脆弱性診断ツールを導入し、定期的にスキャンを行う。
- リダイレクトの設定に関するポリシーを策定し、遵守する。
補足資料・参考URL
以上の対策と検出方法を活用して、Big Redirect Detected (Potential Sensitive Information Leak)のリスクを低減してください。