Bei so einer Lücke kann auch das Linux-Maskottchen Tux nur staunen.

Grafik: Linux Foundation

Es ist eine Behauptung, die im Zusammenhang mit der Sicherheit von Open-Source-Software gerne fällt: Der Umstand, dass der Quellcode öffentlich einsehbar ist, erleichtere es auch, Lücken aufzuspüren – und diese somit früher zu melden. Ein Argument, das in der Theorie zweifellos etwas für sich hat, oft aber an der Realität scheitert. Und zwar der Realität, dass solche Projekt oftmals auch so schon viel zu wenige Entwickler mit viel zu wenig Zeit haben. Aber auch dass sich eigentlich kaum wer einfach nur zum Spaß in den Code anderer Projekte einliest, um dort nach Lücken zu suchen.

Worst Case

All das führt dann im schlimmsten Fall zu dem, was nun Sicherheitsforscher von Qualys aufgespürt haben: einer schweren Lücke in einem zentralen Systemdienst, die trivial ausgenutzt werden kann und den Angreifern umgehend Root-Rechte gibt – also einen uneingeschränkten Zugriff auf das angegriffene System. Vor allem aber: Diese Lücke war bereits vor Jahren entdeckt und wieder vergessen worden.

Konkret geht es um einen Fehler in Polkit, einem bei fast allen Linux-Distributionen genutzten Dienst, der für die Regelung solcher Zugriffsberechtigungen zuständig ist. Was das Ganze besonders unerfreulich macht: Laut Qualys ist die Lücke sehr schnell, sehr einfach und vor allem zu hundert Prozent zuverlässig auszunutzen – etwas, das bei Sicherheitslücken oft nicht der Fall ist. Angriffspunkt ist dabei das Programm pkexec, der eigentliche Polkit-Daemon muss dafür gar nicht laufen.

Vorgeschichte

Betroffen davon sind sämtliche Polkit-Versionen zurück bis ins Jahr 2009, als die Software noch PolicyKit hieß. Als wäre das nicht schon unerfreulich genug, wurde der Fehler eben bereits einmal entdeckt. Im Jahr 2013 hatte der Softwareentwickler Ryan Mallon das problematische Verhalten in einem Blogeintrag erläutert. Da es ihm aber nicht gelang, die Lücke wirklich aktiv auszunutzen, scheint dieser Hinweis ignoriert worden zu sein.

Polkit wird übrigens nicht nur bei Linux, sondern auch bei einigen BSD-Varianten genutzt. Dort soll der Angriff laut Qualys aber nicht funktionieren. Das liegt daran, dass bei der Attacke zwar ein klassischer Speicherfehler, wie er bei C-Programmen recht typisch ist, ausgenutzt wird, dabei aber auch eine Eigenheit im Linux-Kernel genutzt wird. So wird dabei das Programm pkexec mit einer leeren Zahl von Argumenten aufgerufen, womit der argc-Wert auf 0 steht, was OpenBSD schlicht nicht zulässt.

Ablauf

Entdeckt haben die Sicherheitsforscher von Qualys das Problem bereits vergangenen November, Linux-Distributionen wurden vor rund zwei Wochen informiert. Insofern gibt es auch Erfreuliches zu berichten: Mittlerweile liefern bereits viele Distributionen Updates zur Fehlerbereinigung an, andere bereiten diese gerade vor. Angesichts der Schwere dieses Problems sollten diese umgehend eingespielt werden.

Abzuwarten bleibt auch, wie die Entwickler des Linux-Kernels mit der Situation umgehen. Dass die beschriebene Eigenheit des Kernels problematisch sein könnte, wurde nämlich auch bereits öfters diskutiert. So wurde schon im Jahr 2008 erstmals die Option ins Spiel gebracht, ebenfalls bei einem argc-Wert von 0 die Ausführung von Programmen abzubrechen – eben aus Sicherheitsgründen. Eine Sicherheitsexpertin von Alpine Linux hat dieses Thema nun als Reaktion auf den aktuellen Vorfall wieder in die Diskussion gebracht und einen entsprechenden Patch eingereicht. (Andreas Proschofsky, 27.1.2022)