Privater Netzwerkzugriff: erweiterter Schutz für Web Worker und Navigationsabrufe

Jonathan Hao
Jonathan Hao

Was ist der private Netzwerkzugriff?

Private Network Access (PNA, ehemals CORS-RFC1918 oder kurz „Local Network Access“) ist eine Sicherheitsfunktion, die die Fähigkeit von Websites einschränkt, Anfragen an Server in privaten Netzwerken zu senden. So werden Nutzer und interne Netzwerke vor potenziellen Angriffen wie Cross-Site Request Forgery (CSRF) geschützt. In Chrome wird PNA nach und nach eingeführt. Der Schutz wird in den nächsten Releases erweitert.

Wichtige PNA-Schutzmaßnahmen (mit ihrem aktuellen Status)

  • Sichere Kontexte: Anfragen für private Netzwerk-Unterressourcen sind nur in sicheren Kontexten zulässig (ab Chrome 94). Weitere Informationen finden Sie in unserem Update zum Zugriff auf private Netzwerke.
  • Preflight-Anfragen: Chrome sendet Preflight-Anfragen vor Anfragen für Unterressourcen in privaten Netzwerken, um Serverberechtigungen zu prüfen. In Chrome 104 werden in den DevTools Warnungen bei Fehlern ausgegeben, die in Chrome 130 erzwungen werden. Dies wurde unter Privater Netzwerkzugriff: Einführung in Preflight-Anfragen beschrieben. Seit Chrome 123 lassen Chrome einige CORS-Header wie Accept weg, wenn der Preflight nur über PNA erstellt und gesendet wird.
  • Ausnahmen für Anfragen vom selben Ursprung: Seit Chrome 115 sind Anfragen vom selben Ursprung von potenziell vertrauenswürdigen Quellen von den Einschränkungen für PNA ausgenommen.

Erweiterter Schutz: Webworker

Der Schutz durch PNA wird auf Webworker (dedizierte Worker, freigegebene Worker und Dienst-Worker) ausgeweitet. Dazu zählen:

  • Abrufen von Worker-Scripts: Erfordert sichere Kontexte und Preflights für weniger öffentliche IP-Adressen. Warnungen seit Chrome 110, werden in Chrome 130 erzwungen.
  • Von Worker-Skripts initiierte Abrufe: Alle Abrufe innerhalb von Worker-Skripts folgen denselben PNA-Regeln.

Ab Chrome 124 können Sie die Erzwingung so testen:

  • chrome://flags/#private-network-access-ignore-worker-errors deaktivieren
  • chrome://flags/#private-network-access-respect-preflight-results aktivieren

Erweiterter Schutz: Navigationsabrufe

PNA gilt auch für Navigationsabrufe (Iframes, Pop-ups), da sie für CSRF-Angriffe verwendet werden können. In Chrome 123 wurden erste Warnungen bei Fehlern angezeigt. Die Durchsetzung ist für Chrome 130 geplant.

Ab Chrome 124 können Sie die Erzwingung so testen:

  • chrome://flags/#private-network-access-ignore-navigation-errors deaktivieren
  • chrome://flags/#private-network-access-respect-preflight-results aktivieren

Wenn PNA eine Navigationsanfrage blockiert, sehen Nutzer einen bestimmten Fehler mit der Option, die Seite manuell neu zu laden und die Anfrage zuzulassen.

Wenn PNA eine Navigationsanfrage blockiert, sehen Nutzer einen bestimmten Fehler mit der Option, die Anfrage manuell zu aktualisieren und zuzulassen.
Wenn PNA eine Navigationsanfrage blockiert, sehen Nutzer einen bestimmten Fehler mit der Option, die Seite manuell neu zu laden und die Anfrage zuzulassen.

Was können Sie tun, wenn Ihre Website betroffen ist?

Der Beitrag Private Network Access: Introducing Preflights enthält eine Anleitung. Wichtig für Navigationsanfragen:

  • Access-Control-Allow-Origin darf kein Platzhalter ("*") sein.
  • Für „Access-Control-Allow-Credentials“ muss „"true"“ festgelegt werden.

Nächste Schritte

  • WebSockets: Vorläufig ab Chrome 126 werden WebSocket-Handshakes von PNA abgedeckt (zuerst Warnungen).
  • Vollständige Durchsetzung: Alle PNA-Einschränkungen werden voraussichtlich in Chrome 130 erzwungen (nicht konforme Anfragen werden blockiert). Nutzer haben eine Website-Einstellung, mit der die PNA für vertrauenswürdige Websites überschrieben werden kann.

Feedback zu Anwendungsfällen für private Netzwerke

Wenn Sie eine Website in einem privaten Netzwerk hosten, für das Anfragen von öffentlichen Netzwerken erforderlich sind, benötigt das Chrome-Team Ihr Feedback. Melde das Problem im Chromium Issue Tracker (Komponente: Blink > SecurityFeature > CORS > PrivateNetworkAccess).

Foto von Jakub Żerdzicki auf Unsplash