70 % der Sicherheitsprobleme in Chromium resultieren aus Fehlern im Umgang mit dem Speicher

Die Entwickler des Projekts Chromium analysierte 912 gefĂ€hrliche und kritische Schwachstellen, die in den stabilen Versionen von Chrome seit 2015 erkannt wurden, und kamen zu dem Schluss, dass 70 % davon auf unsicheres Arbeiten mit dem Speicher (Fehler bei der Arbeit mit Zeigern in C/C++-Code) zurĂŒckzufĂŒhren sind. Die HĂ€lfte dieser Probleme (36,1 %) wird durch Zugriffe auf den Puffer nach der Freigabe des damit verbundenen Speichers (Use-after-free) verursacht.

70 % der Sicherheitsprobleme in Chromium resultieren aus Fehlern im Umgang mit dem Speicher

Bei der Konzeption von Chromium wurde ursprĂŒnglich festgelegt, dass im Code das Auftreten von Fehlern nicht ausgeschlossen werden kann, weshalb ein großer Schwerpunkt auf die Anwendung von Sandbox-Isolation gelegt wurde, um die Auswirkungen von Schwachstellen zu begrenzen. Derzeit haben die Möglichkeiten dieser Technologie ihre Grenzen erreicht, und eine weitere Aufspaltung in Prozesse ist aus Sicht des Ressourcenverbrauchs nicht sinnvoll.

Um die Sicherheit des Codes zu gewĂ€hrleisten, wendet Google auch das „Zwei-Regelzeichen“ an, wonach jeder hinzugefĂŒgte Code nicht mehr als zwei von drei Bedingungen erfĂŒllen darf: den Umgang mit nicht ĂŒberprĂŒften Eingabewerten, die Verwendung einer unsicheren Programmiersprache (C/C++) und das AusfĂŒhren mit erhöhten Privilegien. Daraus folgt, dass der Code zur Verarbeitung externer Daten entweder auf minimale Privilegien (isoliert) beschrĂ€nkt oder in einer sicheren Programmiersprache geschrieben werden muss.

Um die Sicherheit des Codes weiter zu erhöhen, wurde ein Projekt zur Verhinderung von Speicherfehlern im Code ins Leben gerufen. Es werden drei HauptansĂ€tze verfolgt: die Erstellung von C++-Bibliotheken mit Funktionen fĂŒr einen sicheren Umgang mit dem Speicher und die Erweiterung des Anwendungsbereichs des Garbage Collectors, die Anwendung von Hardware-Schutzmechanismen MTE (Memory Tagging Extension) und die Erstellung von Komponenten in Sprachen, die einen sicheren Umgang mit dem Speicher gewĂ€hrleisten (Java, Kotlin, JavaScript, Rust, Swift).

Es wird erwartet, dass die Arbeit auf zwei Hauptbereiche konzentriert wird:

  • Eine wesentliche Änderung des Entwicklungsprozesses in C++, die negative Auswirkungen auf die Leistung nicht ausschließt (zusĂ€tzliche Grenzkontrollen und Garbage Collection). Statt roh-Zeigern sollen im Code Typen verwendet werden. MiraclePtr, der es ermöglicht, die ausgenutzten Fehler der Klasse use-after-free auf sichere AbstĂŒrze zu reduzieren, ohne spĂŒrbare negative Auswirkungen auf die Leistung, den Speicherverbrauch und die StabilitĂ€t zu haben.
  • Die Verwendung von Sprachen, die fĂŒr die ÜberprĂŒfung der sicheren Arbeit mit Speicher zur Kompilierungszeit ausgelegt sind, eliminiert die negativen Auswirkungen auf die Leistung, die bei derartigen ÜberprĂŒfungen zur Laufzeit auftreten. Sie fĂŒhrt jedoch zu zusĂ€tzlichen Aufwendungen fĂŒr die Organisation der Interaktion zwischen dem Code in der neuen Sprache und dem C++-Code.

Die Verwendung von Bibliotheken fĂŒr die sichere Arbeit mit Speicher ist der einfachste, aber auch weniger effiziente Weg. Eine Neuschreibung des Codes in Rust wird als der effektivste, aber auch sehr kostspielige Weg angesehen.

70 % der Sicherheitsprobleme in Chromium resultieren aus Fehlern im Umgang mit dem Speicher

Quelle: opennet.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster