Chromium Chronicle Nr. 5: Programmieren außerhalb der Sandbox

Folge 5:von Ade in Mountain View, Kalifornien (August 2019)
Vorherige Folgen

Chrome ist in Prozesse unterteilt. Einige davon befinden sich in einer Sandbox, was bedeutet, dass sie nur eingeschränkten Zugriff auf das System und die Nutzerkonten haben. In einem Sandbox-Prozess sind die Fehler, die die Ausführung von schädlichem Code ermöglichen, wesentlich weniger schwer.

Der Browserprozess hat keine Sandbox, sodass ein Fehler möglicherweise dazu führt, dass schädlicher Code vollständigen Zugriff auf das gesamte Gerät erhält. Was sollten Sie anders machen? Und wie sieht es bei anderen Prozessen aus?

Sandbox-Diagramm

Sämtlicher Code enthält Fehler. Durch diese Fehler im Browserprozess kann schädlicher Code ein Programm installieren, Nutzerdaten stehlen, Computereinstellungen anpassen, auf Inhalte aller Browsertabs, Anmeldedaten usw. zugreifen.

Bei anderen Prozessen wird der Betriebssystemzugriff durch plattformspezifische Einschränkungen eingeschränkt. Weitere Informationen finden Sie im Leitfaden zur Implementierung der Sandbox in Chrome.

Vermeiden Sie die folgenden häufigen Fehler:

Zweierregel

  • Analysieren oder interpretieren Sie nicht vertrauenswürdige Daten nicht mit C++ im Browserprozess.
  • Vertraue nicht dem Ursprung, den ein Renderer angibt. Mit dem RenderFrameHost des Browsers kann der aktuelle Ursprung sicher abgerufen werden.


Das sollten Sie tun:

Verwenden Sie stattdessen die folgenden Best Practices:

  • Seien Sie besonders paranoid, wenn sich der Code im Browserprozess befindet.
  • Validieren Sie alle IPCs aus anderen Prozessen. Nehmen wir an, alle anderen Prozesse sind bereits kompromittiert und täuschen.
  • Führen Sie die Verarbeitung in einem Renderer- oder Dienstprogrammprozess oder einem anderen Sandbox-Prozess durch. Verwenden Sie idealerweise auch eine speichersichere Sprache wie JavaScript (behebt mehr als 50% Sicherheitslücken).

Jahrelang haben wir Netzwerk-Stacks (z.B. HTTP, DNS, QUIC) im Browserprozess ausgeführt, was zu einigen kritischen Sicherheitslücken führte. Auf einigen Plattformen hat das Networking jetzt einen eigenen Prozess mit einer Sandbox.

Weitere Ressourcen

  • Zweierregel von Chromium: Maximal zwei unsichere Daten, unsicherer Code und unsichere Prozesse.
  • Validierung von IPC-Daten: ein Leitfaden, mit dem Sie dafür sorgen können, dass IPCs aus dem Renderer-Prozess nicht voller Vorurteile und Falschdarstellungen sind.