Nvidia: Grafikchip-Sicherheitstechnik limitiert Open-Source-Treiber

Eine Sicherheitsfunktion der neuesten GeForce-Chips schränkt den Funktionsumfang der freien Firmware ein, die der Linux-Treiber Nouveau standardmäßig verwendet.

In Pocket speichern vorlesen Druckansicht 183 Kommentare lesen
Lesezeit: 4 Min.
Von
  • Thorsten Leemhuis

Nvidias neueste Grafikchips geben einige Funktionen nur für Grafiktreiber frei, die eine von Nvidia signierte Firmware verwenden. Damit will Nvidia unter anderem verhindern, dass Angreifer den Grafikchip für ungewollte Zwecke missbrauchen. Der Ansatz stellt allerdings die Entwickler des freien Linux-Grafikkarten-Treibers Nouveau vor Schwierigkeiten, denn der nutzt bislang eine eigene Firmware.

GeForce cGTX 750 Ti

(Bild: c't)

Eingeführt hat Nvidia die neuen Sicherheitsfunktionen mit der Maxwell-Architektur, auf der die Grafikchips basieren, die auf den GeForce-GTX-Grafikkarten 750 und 750 Ti sowie 970 und 980 sitzen. Wie alle Grafikchips der vergangenen Jahre enthalten sie Mikroprozessoren, die eine als Firmware oder Microcode bezeichnete Software antreibt, die der Treiber bei der Initialisierung hochlädt. Nvidia bezeichnet diese Prozessoren als "Falcon"; die Nouveau-Entwickler nennen die zugehörige Firmware "FUC" (Falcon Ucode).

Bei den Maxwell-Chips der 900er-Modelle unterstützen die Falcon-Prozessoren drei Betriebsmodi: Non-secure (NS), Light Secure (LS) und Heavy Secure (HS). Gewisse Funktionen des Grafikchps stehen nur im HS-Mode zur Verfügung, der eine von Nvidia signierte Firmware erfordert. Eine solche benötigt auch der fürs Debugging interessante LS-Mode, der etwas weniger Funktionen freigibt. Der NS-Mode funktioniert auch ohne Firmware-Signatur, blockiert aber einige Funktionen – bei den neuesten Maxwell-Chips etwa den direkten Zugriff auf Speicher, wie Nvidia in einer Beschreibung der Sicherheitsfunktionen erläutert.

Nvidias Windows- und Linux-Treiber bringen eine signierte Firmware mit. Der Nouveau-Treiber erzeugt typischerweise eine eigene, die keine Nvidia-Signatur aufweist und oft auch nicht alle Grafikchip-Funktionen unterstützt. Der vorwiegend per Reverse Engineering entstandene Treiber kann aber schon jetzt auf Nvidias Firmware zurückgreifen. Sie darf bislang nicht unabhängig vom Nvidia-Treiber vertrieben werden; Linux-Anwender, die eine solche Firmware brauchen, müssen daher einmalig den proprietären Treiber einrichten, um die Firmware anschließend aus dem Grafikchip auszulesen.

Nvidia will das Prozedere jetzt ändern und die Firmware separat anbieten. Das erläutert Nvidia-Mitarbeiter Andy Ritger in einer Mail, in der er die Nouveau-Entwickler auf die neue Signatur-Prüfung hinweist. Zur Lizenz der Firmware-Dateien macht er keine Angaben; offenbar soll es aber eine sein, die die Aufnahme in die Firmware-Sammlung ermöglicht, die viele Linux-Distributionen standardmäßig einrichten. Die populärste Ausnahme ist Debian; von Haus aus unterstützt es daher auch AMDs Radeon-Grafikchips nur rudimentär, denn auch die erfordern eine Firmware. Ähnlich ist es bei einer Reihe moderner Netzwerkchips.

Ben Skeggs, der bei Red Hat beschäftigte Hauptentwickler des Linux-Kernel-Treibers von Nouveau, bezeichnet die Falcon-Sicherheitsfunktionen als "unbequem und frustrierend"; im selben Satz gesteht er aber auch ein, dass man sich damit halt arrangieren müsse. Ritger führt in dem Zug an, seines Wissen sollen die zur Weitergabe vorgesehenen Firmware-Dateien mit denen identisch sein, die der proprietäre Treiber verwendet; es sollen keine sein, die nur Teilfunktionen ermöglichen.

Je nach praktischer Umsetzung könnte das Ganze den Open-Source-Entwicklern die Arbeit vielleicht erleichtern, denn die Entwicklung einer freien Firmware ist eines der aufwendigsten Aufgaben, wenn die Nouveau-Entwickler die Unterstützung für einen neuen Chip implementieren. Auch einige an Sicherheits-Aspekten interessierte Open-Source-Entwickler begrüßen Nvidias Vorgehen womöglich, da in Firmware auch Schadsoftware stecken kann. Der Linux-Kernel 3.17 bringt daher Funktionen mit, um die Signatur von Firmware zu prüfen, bevor diese verwendet wird. Details liefert der zweite Teil der Serie "Was 3.17 bringt" des Kernel-Logs auf heise open. Anders als dort spekuliert wird Linux 3.17 aber wohl nicht Ende September erscheinen; stattdessen wird es vermutlich der erste Oktober-Sonntag, da Torvalds noch eine weiteren Vorabversion einschieben will. (thl)