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

Jonathan Hao
Jonathan Hao

プライベート ネットワーク アクセスとは

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

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

保護の強化: ウェブワーカー

PNA 保護はウェブワーカー(専用ワーカー、共有ワーカー、Service Worker)にも適用されます。該当するものは次のとおりです。

  • ワーカー スクリプトの取得: 公開されていない 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 に対応する予定です(最初に警告)。
  • 全面的な適用: Chrome 130 では、すべての PNA の制限が一時的に適用されます(ポリシーに準拠していないリクエストがブロックされます)。ユーザーは、信頼できるサイトの PNA をオーバーライドするサイト設定を利用できるようになります。

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

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

写真撮影: Jakub ÎerdzickiUnsplash