リバースタブナビング

新しいタブで開くリンクの opener 保護

説明

新しく開いたページが window.opener にアクセスできると、元のタブをフィッシングページへ移動させる可能性があります。現在の HTML 標準と対応ブラウザーでは、target="_blank" に既定で noopener の動作が適用されます。そのため保護属性の省略だけで脆弱とは断定できませんが、古い環境や opener を明示的に許可する設定の確認が必要です。

想定される影響

  • 元のタブをフィッシングページへ置き換え、認証情報や機密情報を盗まれるおそれがあります。
  • 以前から信頼していたタブ内に表示されるため、攻撃ページを正規のページと誤認する可能性があります。

対処方法

  • 外部リンクを新しいタブで開く場合は rel="noopener" を明示してください。rel="noreferrer" は同じ opener 保護に加えて Referer の送信も止めるため、必要に応じて追加してください。
  • 可能なら、フレームワークやコンポーネントで共通の外部リンク方針を適用してください。

例

変更前

html
<a href="https://example.org" target="_blank">외부 링크</a>

変更後

html
<a href="https://example.org" target="_blank" rel="noopener noreferrer">외부 링크</a>

説明:

  • 変更前: 保護属性を明示していません。現在の既定の保護が適用されず window.opener が残る環境では、元のタブを移動させられるおそれがあります。
  • 変更後: target="_blank" のリンクに rel="noopener noreferrer" を明示し、opener の接続と Referer の送信を防ぎます。

参考資料