Google verabschiedet sich von C++

Google will Speichersicherheit stärker fokussieren und künftig Sprachen wie Java, Rust oder Carbon einsetzen. Für Altlasten gibt es eine spezielle Strategie.

In Pocket speichern vorlesen Druckansicht 142 Kommentare lesen
Sicherheitsschloss vor Google-Schriftzug

(Bild: Alberto Garcia Guillen/Shutterstock.com)

Lesezeit: 3 Min.

Google stellt seinen Code verstärkt auf speichersichere Sprachen wie Java, Go, Carbon und insbesondere auch Rust um. Das betrifft allen neu geschriebenen Code und die Teile der bestehenden, sicherheitsrelevanten Basis. Die Firma verweist darauf, dass nach wie vor die meisten Attacken auf Computersysteme dann erfolgreich sind, wenn sie Schwachstellen bei Speicherzugriffen nutzen.

Im Whitepaper, in dem Google seine neue Strategie vorstellt, findet sich eine genaue Aufschlüsselung schwerer, den Speicher betreffender Sicherheitslücken:

  • Chrome: 70 Prozent aller Schwachstellen mit hohem/kritischen Risiko
  • Android: 70 Prozent aller Schwachstellen mit hohem/kritischen Risiko
  • Google Server: 16 bis 29 Prozent aller Schwachstellen
  • Project Zero: 68 Prozent aller verwendeten Zero-Day-Lücken (in the wild)
  • Microsoft: 70 Prozent aller Lücken mit CVE-Eintrag.

Der zugehörige Blog-Eintrag weist auf die CWE-Schwachstellenliste (Common Weakness Enummeration) hin, in der die ersten drei Einträge bei Known Exploited Vulnerabilities (KEV) ebenfalls Speicherprobleme betreffen.

Daraus zieht Google den Schluss: "Bei Google haben wir jahrzehntelange Erfahrung [Google gibt es seit 1998, Anm. d. Red] darin, eine große Bandbreite an Klassen von Sicherheitslücken im großen Stil anzugehen." Und: "Wir erwarten, dass hochverlässliche Speichersicherheit nur mit einem Security-by-Design-Ansatz erreicht werden kann, der sich auf die umfassende Einführung von Sprachen mit rigorosen Speichersicherheitsgarantien konzentriert."

Allein die ersten drei der 10 meistausgenutzten Sicherheitslücke betreffen laut CWE-Schwachstellenliste Speicherzugriffe.

Konkret will die Firma dieses Ziel erreichen, indem sie dazu übergeht, neuen Code in sicheren Sprachen zu schreiben: Java/Kotlin, Go, Rust oder Carbon. Größere Probleme bereiten Google auf der einen Seite die Altlasten, eine Masse an bestehenden, unsicheren, aber unentdeckten Zeilen in C++, und auf der anderen Seite die Erkenntnis, dass "größere Programme in einigen Fällen die Verwendung unsicherer Konstruktionen erfordern". Hier schlägt das Paper folgende Maßnahmen vor:

  • Unsicheren Code kapseln und nur über eine API erreichbar machen.
  • Hardware-Funktionen wie das Memory Tagging in ARM-Prozessoren ab Version 8.5a: Dabei können Speicherbereiche und Pointer getaggt werden, sodass falsches Dereferenzieren zu einem Fehler führt.
  • Das CHERI-Projekt (Capability Hardware Enhanced RISC Instructions) bietet Funktionen, um auf Hardware-Ebene Speicherbereiche quasi in Quarantäne zu nehmen. Dabei ergibt jedoch eventuell der Overhead ein Problem für die Performance.
  • Die Programmiersprache Carbon soll es in der kommenden Version 0.2 im Idealfall ermöglichen, große Mengen Legacy-C++-Code einfach in sichere Gefilde zu überführen.

Eine zentrale Rolle für neuen Code soll Rust einnehmen, und Google betont die Schritte, die die Teams der Firma bislang in diese Richtung vollzogen haben:

Weiter Informationen zur Strategie der Firma finden sich im erwähnten Whitepaper und zur Speichersicherheit allgemein auf den Seiten der Internet Security Research Group.

(who)