Tabnabbing
Tabnabbing(タブナビング)とは
Tabnabbingブラウザで、リンク先を別のタブで開くアクションを使った攻撃手法。フィッシッングに用いられる。ブラウザでの対策も進んでおり、改めて再確認をする。
HTMLで以下のように記述すると、hoge.htmlを新しいタブで開くことができる。
<a href=hoge.html target=_blank>新しいタブで開く</a>
この時、hoge.htmlからリンクを開いた元のページを操作することが可能。
具体的には、以下をhoge.htmlで実行すると、リンク元のページを書き替えることができる。
window.opener.location = "https://www.yahooo.co.jp/login"
再ログインを求められている、と利用者に誤認させられれば、IDとパスワードを詐取できる。
Tabnabbing対策
具体的な対策として、rel="noopener noreferrer"を追加する方法が一般的。
<a href=hoge.html target=_blank>新しいタブで開く</a>
を
<a href=hoge.html target=_blank rel="noopener noreferrer">新しいタブで開く</a>
と書き換えることでTabnabbing攻撃を防げる。
noopenerとnoreferrerの役割は以下。
- noopener:window.opener経由での参照を不可能にする。
- noreferrer:"noopener"の機能に加えて「参照元のリンク情報を渡さないようにする」という役割がある
noreferrerの方が、サポートしているブラウザが若干多い。
https://caniuse.com/?search=norefer
また、IE11はnoopenerをサポートしていないようです。
noreferrerだけ設定しておけば良い気もします。副作用として、リンク元が取得できないため、アクセス解析やアフィリエイトをしている方には不都合があるようです。
また、最近のChrome, Edge, FireFoxなどでは、リンクを自動的にnoopenerとして開くようになっているようです。
noopenerで開くことにより、パフォーマンスの影響を受けにくくなる、という効果もあるようです。
結論
Tabnabbing対策として、rel="noopener noreferrer"を付与するのは過去の対策となり、設定しなくても問題無さそう、という意見が多い。理由としては、ブラウザでnoopenerとして開くから。
セキュリティ的には、最新のブラウザを使っていれば大丈夫、ということになる。
しかし、IEモードが生き残っている状況を考えると、noreferrer付与の検討も必要で、その場合は、リンク元が取れない副作用とのトレードオフになる。