CWE一覧に戻る
CWE-1022

window.openerアクセスによる信頼できないターゲットへのWebリンクの使用

Use of Web Link to Untrusted Target with window.opener Access
脆弱性 作成中
JA

Webアプリケーションは、その制御範囲外の信頼できない外部サイトへのリンクを生成しますが、外部サイトがwindow.openerオブジェクトのセキュリティ上重要なプロパティ(locationプロパティなど)を変更するのを適切に防止しません。

ユーザが外部サイト("target")へのリンクをクリックすると、target="_blank "属性によってターゲット・サイトのコンテンツが新しいウィンドウまたはタブで開かれ、元のページと同じプロセスで実行されます。window.openerオブジェクトは、リンクを提供した元のページに関する情報を記録します。 攻撃者がターゲット・ページ上でスクリプトを実行できれば、元のサイトとターゲット・サイトが同じオリジンでなくても、locationプロパティを含むwindow.openerオブジェクトの特定のプロパティを読んだり変更したりすることができます。 攻撃者は、例えばフィッシング攻撃の一環として、ユーザーを悪意のあるサイトに自動的にリダイレクトするために、locationプロパティを変更することができます。このリダイレクトは元のウィンドウ/タブで行われるため、ブラウザは新しいターゲット・ページに表示を集中させているため、必ずしも表示されるとは限りません。

EN

The web application produces links to untrusted external sites outside of its sphere of control, but it does not properly prevent the external site from modifying security-critical properties of the window.opener object, such as the location property.

When a user clicks a link to an external site ("target"), the target="_blank" attribute causes the target site's contents to be opened in a new window or tab, which runs in the same process as the original page. The window.opener object records information about the original page that offered the link. If an attacker can run script on the target page, then they could read or modify certain properties of the window.opener object, including the location property - even if the original and target site are not the same origin. An attacker can modify the location property to automatically redirect the user to a malicious site, e.g. as part of a phishing attack. Since this redirect happens in the original window/tab - which is not necessarily visible, since the browser is focusing the display on the new target page - the user might not notice any suspicious redirection.

Scope: Confidentiality / Impact: Alter Execution Logic
Specify in the design that any linked external document must not be granted access to the location object of the calling page.
When creating a link to an external document using the <a> tag with a defined target, for example "_blank" or a named frame, provide the rel attribute with a value "noopener noreferrer".

If opening the external document in a new window via javascript, then reset the opener by setting it equal to null.
Do not use "_blank" targets. However, this can affect the usability of the application.
MITRE公式ページ — CWE-1022