Die Bugs Spectre und Meltdown vermiesen Intel den Jahresstart

Zu Anfang des Jahres gingen Meltdown und Spectre durch die Medien.

Schaut man genauer hin, sind beide eigentlich gar nicht so wild. Ein lokal laufendes Programm den Speicher von Prozessen auslesen, mit denen es Adressraum teilt (insbesondere vom Betriebs/Asystem). Das ist für Betroffene zunächst einmal weniger schlimm als die vergangenen Sicherheitslücken Heartbleed, Silent Bob is Silent oder der RSA-Implementierungsfehler von Infineon die jeweils Angriffsfläche nach außen boten. Sie können davon ausgehen, dass das System mit dem Sie diesen Text lesen graviererende, unentdeckte Fehler hat.

Warum dann die Aufregung?

  • Der Angriff ist sehr clever und überraschend. Außerdem ist gerade bei Spectre nicht klar wie er sicher verhindern lässt.
  • Die Schwachstelle betrifft fast alle Systeme gleichermaßen.
  • Während wir uns an Softwarefehler gewöhnt haben sind Hardwarefehler selten genug um erhöhte Aufmerksamkeit zu erregen.
  • Cloudsysteme können ungepatcht ihr Versprechen der Isolierung von VMs nicht aufrecht erhalten.
  • Dank Javascript und Just In Time Compilern erlauben wir praktisch jeder Webseite Programme auf unserer CPU auszuführen. Damit ist dann auch ihr Desktop gefährdet.

Was ist zu tun?

  • Wenn Sie eine Cloudlösung verwenden setzen Sie sich mit ihrem Cloudprovider in Verbindungen oder lesen sie was bereits unternommen wurde.
  • Spectre ist nicht das einzige Problem mit Javascript. Wenn sie Angst vor Javascript auf ihrem Desktop haben, so sollten sie Javascript deaktivieren oder zumindest auf vertrauenswürdige Seiten begrenzen, z.B. mit uMatrix.
  • Abwarten und jeweils die neusten Security Updates einspielen. Es ist nicht klar, wie wirksam die jeweiligen Massnahmen der Hersteller sind. Es ist durchaus möglich, dass die derzeitigen Patches die Lücken nur teilweise schließen und es ist ein Wettrüsten zu erwarten.

Wie funktioniert der Angriff nach Spectre/Meltdown im Prinzip?

  • Moderne Prozessorarchitekturen besitzen mehrere Pipelines zur Ausführung von Befehlsfolgen.
  • Um diese optimal zu nutzen führen sie Programmteile spekulativ (also auf Verdacht) aus ohne sicher zu sein, dass die durchgeführten Berechnungen so tatsächlich benötigt werden.
  • Wenn es sich zeigt, dass die Berechnungen nicht benötigt werden (sich der Prozessor verspekuliert hat) so werden sie verworfen.
  • Prozessoren haben einen Daten Cache, auf den der Zugriff um ein Vielfaches schneller ist als auf den Hauptspeicher.
  • Die Zugriffszeit auf ein Speicherelement kann man messen und damit sagen, ob es aus dem Cache kommt oder aus dem Hauptspeicher.
  • Wird ein spekulativer Programmteil verworfen, so bleibt der Cache unverändert. Damit gibt es einen Seitenkanal mit dem spekulativ ausgeführter Code mit dem Rest des Programms kommunizieren kann. Will man eine 0 senden dann lädt man zum Beispiel eine vorgegebene Adresse 0x123456 in den Cache. Will man eine 1 senden, so lädt man sie nicht.
  • Der Empfänger code misst jetzt wie lange der Zugriff auf die Adresse 0x123456 benötigt. Geht er schnell, wurde eine 0 gesendet, geht er langsam, so war es eine 1.
  • Jetzt kommt der Designfehler: Spekulativ ausgeführter Code kann semantisch inkorrekt sein. Variablen können Werte annehmen, die sie im Programm an dieser Stelle nicht haben dürften. Damit kann man auf Speicherbereiche zugreifen, die man bei korrekter Ausführung nicht zu sehen bekäme und dann mit dem oben beschriebenen Seitenkanal die Daten Bit für Bit extrahieren. Ungefähr im Bereich von einigen dutzend kb/s.
  • Das besondere vom Spectre Angriff ist, dass der bösartige Prozess den Prozessor sogar so manipulieren kann, dass er in einem anderen Prozess (z.B. dem Betriebssystem) spekulativ an eine beliebige Stelle im Programmcode springen kann. Es ist davon auszugehen, dass ein typisches Betriebssystem Codefragmente hat, über die sich wie oben beschrieben der Seitenkanal ansteuern lässt. Sie vermuten aber richtig, dass ein Angriff sehr genau auf das Ziel zugeschnitten sein muss.
  • Bei Meltdown (auf Intel CPUs) kommt noch hinzu, dass bei der spekulativen Ausführung von Code die Speicherverwaltung nicht rechtzeitig prüft, ob der Prozess wirklich auf die Adresse zugreifen darf. Damit kann dann auch priviligierter Speicher des Betriebsystems ausgelesen werden, sofern er im Adressraum des Prozess sichtbar war. Ein Workaround ist also nicht benötigte Adressen auszublenden anstatt sich auf die Speicherverwaltung zu verlassen.

Orginal Artikel

Sprachsteuerung dringt in den Berufsalltag vor

Man kennt es seit einigen Jahren vom Smartphone. Wenn man keine Hand frei hat kann man es mittlerweile auch gut per Sprache bedienen. Und “Hey Siri, Mama anrufen” ist auch einfacher als sich durch die Kontakte zu hangeln. Zukünftig kann man damit wohl auch im Konferenzraum schnell zu Ihrer Präsentation kommen oder das Firmendashboard öffnen. Gerade im Gespräch mit einer Gruppe ist eine Steuerung per Sprache naheliegend da kein Bruch im Interface (Tastatur, Maus) stattfindet.

Orginal Artikel