70 % der Sicherheitsprobleme in Chromium werden durch Speicherfehler verursacht

Entwickler des Chromium-Projekts analysiert 912 risikoreiche und kritische Schwachstellen wurden in stabilen Chrome-Versionen seit 2015 identifiziert und kamen zu dem Schluss, dass 70 % davon durch Speicherunsicherheit verursacht wurden (Fehler beim Arbeiten mit Zeigern im C/C++-Code). Die Hälfte dieser Probleme (36.1 %) entstehen durch Zugriffe auf den Puffer nach Freigabe des damit verbundenen Speichers (Use-after-free).

70 % der Sicherheitsprobleme in Chromium werden durch Speicherfehler verursacht

Bei der Entwicklung von Chromium war dies zunächst der Fall flach gelegt, dass es möglich ist, dass Fehler im Code auftreten, daher wurde großer Wert auf die Verwendung von Sandbox-Isolation gelegt, um die Folgen von Schwachstellen zu begrenzen. Derzeit sind die Einsatzmöglichkeiten dieser Technologie an ihre Grenzen gestoßen und eine weitere Fragmentierung in Prozesse ist aus Sicht des Ressourcenverbrauchs nicht praktikabel.

Um die Sicherheit der Codebasis zu gewährleisten, erzwingt Google außerdem „Zweierregel„Danach darf jeder hinzugefügte Code nicht mehr als zwei von drei Bedingungen erfüllen: Arbeiten mit nicht validierten Eingabedaten, Verwenden einer unsicheren Programmiersprache (C/C++) und Ausführen mit erhöhten Rechten. Diese Regel impliziert, dass der Code zur Verarbeitung externer Daten entweder auf minimale Privilegien reduziert (isoliert) oder in einer sicheren Programmiersprache geschrieben werden muss.

Um die Sicherheit der Codebasis weiter zu erhöhen, wurde ein Projekt gestartet, um das Auftreten von Speicherfehlern in der Codebasis zu verhindern. Es gibt drei Hauptansätze: Erstellen von C++-Bibliotheken mit Funktionen für den sicheren Betrieb des Speichers und Erweitern des Umfangs des Garbage Collectors unter Verwendung von Hardware-Schutzmechanismen MTE (Memory Tagging Extension) und Schreiben von Komponenten in Sprachen, die ein sicheres Arbeiten mit dem Speicher gewährleisten (Java, Kotlin, JavaScript, Rust, Swift).

Es wird erwartet, dass sich die Arbeit auf zwei Bereiche konzentriert:

  • Wesentliche Änderung am C++-Entwicklungsprozess, die negative Auswirkungen auf die Leistung nicht ausschließt (zusätzliche Grenzprüfungen und Garbage Collection). Anstelle von Rohzeigern wird vorgeschlagen, den Typ zu verwenden WunderPtrDadurch können Sie ausnutzbare Use-After-Free-Fehler auf Abstürze reduzieren, die keine Sicherheitsbedrohung darstellen, ohne spürbare negative Auswirkungen auf Leistung, Speicherverbrauch und Stabilität.
  • Die Verwendung von Sprachen, die zur Durchführung von Speichersicherheitsprüfungen zur Kompilierungszeit entwickelt wurden (eliminiert die negativen Auswirkungen auf die Leistung, die solche Prüfungen während der Codeausführung mit sich bringen, führt jedoch zu zusätzlichen Kosten für die Organisation der Interaktion von Code in einer neuen Sprache mit Code in C++).

Die Verwendung speichersicherer Bibliotheken ist der einfachste, aber auch weniger effiziente Weg. Das Umschreiben von Code in Rust gilt als die effektivste, aber auch sehr kostspielige Methode.

70 % der Sicherheitsprobleme in Chromium werden durch Speicherfehler verursacht

Source: opennet.ru

Kommentar hinzufügen