プライベート ネットワーク アクセス: ウェブワーカーとナビゲーション フェッチに対する保護の強化

Jonathan Hao
Jonathan Hao

プライベート ネットワーク アクセスとは何ですか?

プライベート ネットワーク アクセス(PNA、旧称 CORS-RFC1918、略称ローカル ネットワーク アクセス)は、ウェブサイトが限定公開ネットワーク上のサーバーにリクエストを送信する機能を制限するセキュリティ機能です。これにより、クロスサイト リクエスト フォージェリ(CSRF)などの潜在的な攻撃からユーザーと内部ネットワークを保護できます。Chrome では PNA が段階的に実装されており、今後のリリースで保護機能が拡大される予定です。

主な PNA 保護(現在のステータスを含む)

保護の拡大: ウェブ ワーカー

PNA 保護は、ウェブワーカー(専用ワーカー、共有ワーカー、サービス ワーカー)に拡大されます。これには以下が該当します。

  • ワーカー スクリプトの取得: 一般公開されていない IP アドレスには、安全なコンテキストとプリフライトが必要です。Chrome 110 以降で警告が表示され、Chrome 130 で適用されます。
  • ワーカー スクリプトによって開始されたフェッチ: ワーカー スクリプト内からのすべてのフェッチは、同じ PNA ルールに従います。

Chrome 124 以降では、次の手順で適用をテストできます。

  • chrome://flags/#private-network-access-ignore-worker-errors を無効にする
  • chrome://flags/#private-network-access-respect-preflight-results を有効にする

保護の拡張: ナビゲーションの取得

PNA は、CSRF 攻撃で使用される可能性があるため、ナビゲーション取得(iframe、ポップアップ)にも適用されます。Chrome 123 でエラーの警告が表示されるようになり、Chrome 130 で違反措置が適用される予定です。

Chrome 124 以降では、次の方法で違反措置をテストできます。

  • chrome://flags/#private-network-access-ignore-navigation-errors を無効にする
  • chrome://flags/#private-network-access-respect-preflight-results を有効にする

PNA がナビゲーション リクエストをブロックすると、ユーザーに特定のエラーが表示され、手動で再読み込みしてリクエストを許可するオプションが表示されます。

PNA がナビゲーション リクエストをブロックすると、ユーザーに特定のエラーが表示され、手動で再読み込みしてリクエストを許可するオプションが表示されます。
PNA がナビゲーション リクエストをブロックすると、ユーザーに特定のエラーが表示され、手動で再読み込みしてリクエストを許可するオプションが表示されます。

ウェブサイトが影響を受けている場合の対処方法

プライベート ネットワーク アクセス: プリフライトの導入の投稿にガイダンスが記載されています。ナビゲーション リクエストの場合、次のことを注意してください。

  • Access-Control-Allow-Origin はワイルドカード("*")にすることはできません。
  • Access-Control-Allow-Credentials"true" に設定する必要があります。

次のステップ

  • WebSockets: Chrome 126 で試験運用を開始し、PNA で WebSocket handshake を対象にします(最初は警告)。
  • 完全な適用: PNA のすべての制限が Chrome 130 で暫定的に適用されます(準拠していないリクエストはブロックされます)。ユーザーは、信頼できるサイトに対して PNA をオーバーライドするサイト設定を行うことができます。

プライベート ネットワークのユースケースに関するフィードバック

パブリック ネットワークからのリクエストを必要とするプライベート ネットワーク上にウェブサイトをホストしている場合は、Chrome チームにフィードバックをお寄せください。Chromium Issue Tracker で問題を報告します(コンポーネント: Blink> SecurityFeature> CORS> PrivateNetworkAccess)。

写真: Jakub ŻerdzickiUnsplash