ChromeのSecure context restriction for external requests

[目次]

非セキュアコンテキストなWebサイトからプライベートアドレスへのHTTPリクエストをブロックする「Secure context restriction for external requests」の導入が進められています。

概要

インターネットに公開されているWebサイトから、プライベートアドレスに対するCSRF攻撃が問題になっています。ネットワーク機器やプリンタの管理画面で使われるプライベートアドレスにリクエストを行わせることで、攻撃が行われます。

例えば下記のリンクを埋め込むことで、プライベートネットワークを指すrouter.local にHTTPリクエストを行わせます。

<iframe href="https://admin:admin@router.local/set_dns?server1=123.123.123.123">
</iframe>

具体的には下記のドキュメントを御覧ください

そういった攻撃を防ぐ仕組みが現在検討されています。

  • CORS-RFC1918
  • Secure context restriction for external requests

現在、最初のステップとして後者の「Secure context restriction for external requests」が Chromeで導入が進められているので簡単に見ていく。

Secure context restriction for external requests

CORS-RFC1918に先んじて、「Secure context restriction for external requests」がChrome 87のdev/canary/beta版で導入が予定されています。

これは、非セキュアコンテキストのサイト(http://なサイト)から、プライベートアドレス, ループバックアドレスに対するリクエストをブロックする機能です。

Chrome Canaryではabout:flagsから「Block insecure private network requests.」を有効にすることで動作を確認できます。

実際に、http://example.comで、デベロッパーツールからプライベートアドレスに対してリクエストを送信させています。
f:id:ASnoKaze:20200927190522p:plain

このように ERR_INSECURE_PRIVATE_NETWORK_REQUEST になってリクエストがブロックされている事が確認できます。

CORS-RFC1918

なおCORS-RFC1918 については、以前書いたとおりです
asnokaze.hatenablog.com

W3Cのミーティングでは、Chromeで実装が進められている事が書かれています
https://github.com/w3c/webappsec/blob/master/meetings/2020/2020-09-15-minutes.md#cors-rfc1918

動作確認できるようになったらまた記事を書ければと思います。