Software::Desktop

Diskussionen um die Linux-Desktop-Sicherheit

Sicherheitsfachleute haben, ausgehend von Sicherheitslücken in GStreamer, auf die teils unerwartete Verzahnung von Software-Komponenten hingewiesen, von denen jede ihre eigenen Probleme mitbringt und die insgesamt die Sicherheit eines Linux-Desktops beeinträchtigen. Sie haben Diskussionen zu Abhilfen und vorbeugenden Maßnahmen angestoßen.

Mirko Lindner

In den letzten Tagen hat Chris Evans eine Reihe von Sicherheitslücken in GStreamer aufgezeigt. Das GStreamer-Team zeigte sich kooperativ und korrigierte nicht nur die entdeckten Lücken, sondern suchte auch aktiv nach weiteren ähnlichen Codestellen, wobei einige weitere Fehler behoben wurden. Die Korrekturen sind nun auf dem Weg in die Distributionen.

Gstreamer wird allerdings selten für sich allein verwendet. Es ist ein Multimedia-Framework, das mittels Plugins in der Lage ist, fast jedes existierende Audio- oder Videoformat abzuspielen. Sicherheitslücken in GStreamer können daher viele andere Programme betreffen. In der Regel ist dazu aber die freundliche Mithilfe des Benutzers nötig, der aus dem Internet Software herunterlädt, die mit schädlichem Code präpariert wurde.

Nutzt man Google Chrome oder Chromium, so ist dabei aber nicht einmal die aktive Mithilfe nötig. Aufgrund fragwürdiger Design-Entscheidungen kommt es zu Problemen in Kombination mit der Gnome-Desktop-Suche Tracker. Das Problem ist, dass Chrome Dateien automatisch und ohne Rückfrage herunterladen kann, wobei diese Dateien immer im Download-Verzeichnis des Benutzers landen. Ist die Tracker-Software aktiv, was in aktuellen Gnome-Versionen offenbar die Voreinstellung ist, dann analysiert diese die neuen Dateien, um sie in ihren Index aufzunehmen. Diese Analyse erfolgt aber nicht in abgesicherter Weise. Laut Hanno Böck hat das KDE-Programm Baloo ähnliche Probleme.

Zur Dateianalyse ruft Tracker externe Programme auf: GStreamer für Mediendateien, ImageMagick und Poppler für PDF. Diese wiederum verlassen sich auf eine Vielzahl von Bibliotheken, um die Dateien zu parsen. Die meisten davon sind in C geschrieben und komplex genug, dass man davon ausgehen muss, dass sie nie völlig fehlerfrei sein können.

Autoren wie Evans werfen GStreamer eine schlechte Code-Qualität vor, einige empfehlen die Verwendung von FFmpeg, das dieselbe Funktionalität abdeckt, aber eine höhere Qualität aufweisen soll. Das ändert aber nichts daran, dass verstärkt nach möglichen Problemen in allen Desktop-Komponenten gefahndet werden sollte. Eine Möglichkeit, die immer mehr Beachtung erfährt, ist Fuzzing, das von Hanno Böck mit dem Fuzzing-Projekt verstärkt betrieben wird.

Böck geht auch auf vorbeugende Maßnahmen ein. Teile der Bibliotheken könnten in sicheren Programmiersprachen wie Rust geschrieben werden. So untersucht GStreamer bereits die Möglichkeit, Plugins in Rust zu schreiben. Für die meisten Komponenten ist ein Neuschreiben aber wohl unrealistisch, da niemand verfügbar ist, der diese Arbeit leistet. Sandboxing sollte dagegen verstärkt eingesetzt werden. Gerade Programme wie Tracker bieten sich dafür an, mit dem Linux-Seccomp-Mechanismus gebändigt zu werden. Weitere Verbesserungen im Kernel sowie in den Compilern sind möglich. So können durch die zufällige Anordnung von Adressbereichen (Address Space Layout Randomization, ASLR) einige Techniken zur Ausnutzung von Sicherheitslücken neutralisiert werden. Eine neue Technik in der Diskussion ist Control Flow Integrity in den Compilern. Bei der Anwendung dieser Technologien besteht laut Böck noch Nachholbedarf. Ein weiteres aktuelles Thema, das von Böck allerdings nicht angesprochen wird, ist die Isolation von Anwendungen in Container wie Flatpak oder Snap. Im konkreten Fall von Chrome und Tracker hilft aber auch eine weise Konfiguration von Tracker, die die Indizierung auf die nötigen Verzeichnisse beschränkt und nicht vertrauenswürdige Verzeichnisse wie das Download-Verzeichnis ausschließt.