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

Jonathan Hao
Jonathan Hao

Was ist der private Netzwerkzugriff?

Private Network Access (PNA, früher bekannt als CORS-RFC1918 und 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. Bei Chrome wurde nach und nach PNA implementiert und der Schutz wird in den kommenden Releases erweitert.

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

  • Sichere Kontexte: Nur sichere Kontexte dürfen Anfragen an private Netzwerkunterressourcen senden (ab Chrome 94 erzwungen). Weitere Informationen finden Sie in unserem Updatebeitrag für den privaten Netzwerkzugriff.
  • Preflight-Anfragen: Chrome sendet Preflight-Anfragen vor Anfragen von privaten Netzwerkunterressourcen, um Serverberechtigungen zu prüfen. In den Entwicklertools werden Warnungen bei Fehlern seit Chrome 104 angezeigt, die in Chrome 130 erzwungen werden. Dies wurde unter Privater Netzwerkzugriff: Einführung von Preflights beschrieben. Seit Chrome 123 lässt Chrome einige CORS-Header wie Accept weg, wenn der Preflight nur aufgrund von PNA erstellt und gesendet wird.
  • Same-Origin-Ausnahmen: Seit Chrome 115 sind Anfragen desselben Ursprungs von potenziell vertrauenswürdigen Ursprüngen von den PNA-Einschränkungen ausgenommen.

Erweiterter Schutz: Web Worker

Der PNA-Schutz gilt auch für Web-Worker (dedizierte Worker, freigegebene Worker und Service Worker). Dazu zählen:

  • Worker-Skripts abrufen: 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 aus Worker-Skripts folgen den gleichen 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 aufgrund ihrer potenziellen Verwendung bei CSRF-Angriffen auch für Navigationsabrufe (iFrames, Pop-ups). In Chrome 123 werden jetzt Warnungen für Fehler angezeigt. Die Erzwingung 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 spezifischen Fehler mit der Option, die Anfrage manuell neu zu laden und zuzulassen.

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

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

Der Beitrag Privater Netzwerkzugriff: Einführung von Preflights enthält entsprechende Hinweise. Wichtig für Navigationsanfragen:

  • Access-Control-Allow-Origin darf kein Platzhalter ("*") sein.
  • Access-Control-Allow-Credentials muss auf "true" festgelegt sein.

Nächste Schritte

  • WebSockets: PNA wird vorläufig in Chrome 126 gestartet und deckt WebSocket-Handshakes ab (zuerst mit Warnungen).
  • Vollständige Durchsetzung: Alle PNA-Einschränkungen werden in Chrome 130 vorläufig durchgesetzt (nicht konforme Anfragen werden blockiert). Nutzer haben eine Websiteeinstellung, mit der sie die PNA für vertrauenswürdige Websites überschreiben können.

Feedback zu Anwendungsfällen für private Netzwerke

Wenn Sie eine Website in einem privaten Netzwerk hosten, für das Anfragen aus öffentlichen Netzwerken erforderlich sind, interessiert das Chrome-Team Ihr Feedback. Melden Sie ein Problem unter Chromium Issue Tracker (Komponente: Blink> Sicherheitsfunktion> CORS> PrivateNetworkAccess).

Foto von Jakub Żerdzicki bei Unsplash