De Chromium Chronicle #5: Coderen buiten de zandbak

Aflevering 5: door Ade in Mountain View, CA (augustus 2019)
Vorige afleveringen

Chrome is opgesplitst in processen. Sommigen van hen zijn sandboxed, wat betekent dat ze beperkte toegang tot het systeem en tot gebruikersaccounts hebben. In een sandbox-proces zijn bugs die ervoor zorgen dat kwaadaardige code kan worden uitgevoerd, veel minder ernstig.

Het browserproces heeft geen sandbox , dus een bug kan kwaadaardige code volledige toegang tot het hele apparaat geven. Wat moet je anders doen? En hoe zit het met andere processen?

Sandbox-diagram

Alle code bevat bugs. In het browserproces zorgen deze bugs ervoor dat kwaadaardige code een programma installeert, gebruikersgegevens steelt, computerinstellingen aanpast, toegang krijgt tot de inhoud van alle browsertabbladen, inloggegevens, enz.

Bij andere processen wordt de toegang tot het besturingssysteem beperkt via platformspecifieke beperkingen. Zie de sandbox-implementatiehandleiding van Chrome voor meer informatie.

Zorg ervoor dat u de volgende veelgemaakte fouten vermijdt:

regel van twee

  • Parseer of interpreteer geen onbetrouwbare gegevens met behulp van C++ in het browserproces.
  • Vertrouw niet op de oorsprong die een renderer beweert te vertegenwoordigen. De RenderFrameHost van de browser kan worden gebruikt om de huidige oorsprong veilig te achterhalen.


Doen

Gebruik in plaats daarvan de volgende best practices:

  • Wees extra paranoïde als uw code zich in het browserproces bevindt.
  • Valideer alle IPC van andere processen. Ga ervan uit dat alle andere processen al zijn gecompromitteerd en erop gericht zijn u te misleiden.
  • Voer uw verwerking uit in een renderer- of hulpprogrammaproces of een ander sandbox-proces. Gebruik idealiter ook een geheugenveilige taal zoals JavaScript (lost >50% beveiligingsbugs op).

Jarenlang hebben we netwerkstacks (bijvoorbeeld HTTP, DNS, QUIC) in het browserproces uitgevoerd, wat tot enkele kritieke kwetsbaarheden leidde. Op sommige platforms heeft netwerken nu zijn eigen proces, en komt er een sandbox.

Aanvullende bronnen

  • Chromium's regel van twee : niet meer dan twee onveilige gegevens, onveilige code en onveilige processen.
  • IPC-gegevens valideren : een gids over hoe u ervoor kunt zorgen dat IPC's uit het rendererproces niet vol leugens en verkeerde voorstellingen zitten.