Es sind Details über eine inzwischen gepatchte, hochgradig gefährliche Schwachstelle im Linux-Kernel aufgetaucht, die dazu missbraucht werden könnte, aus einem Container zu entkommen, um beliebige Befehle auf dem Container-Host auszuführen.

Die Schwachstelle liegt in einer Funktion des Linux-Kernels namens Kontrollgruppen, auch cgroups Version 1 (v1) genannt, die es ermöglicht, Prozesse in hierarchischen Gruppen zu organisieren und damit die Nutzung von Ressourcen wie CPU, Speicher, Festplatten-E/A und Netzwerk zu begrenzen und zu überwachen.

Das Problem wird als CVE-2022-0492 (CVSS-Score: 7.0) bezeichnet und betrifft einen Fall von Privilegienerweiterung in der cgroups v1 release_agent-Funktion, einem Skript, das nach dem Beenden eines Prozesses in der cgroup ausgeführt wird.

„Das Problem ist eine der einfachsten Linux-Privilegienerweiterungen, die in letzter Zeit entdeckt wurden: Der Linux-Kernel gab fälschlicherweise eine privilegierte Operation für unprivilegierte Benutzer frei“, so Unit 42-Forscher Yuval Avrahami in einem diese Woche veröffentlichten Bericht.

Die Manpage für cgroups erklärt seine Funktion wie folgt

Ob das Programm release_agent aufgerufen wird, wenn eine bestimmte cgroup leer wird, wird durch den Wert in der Datei notify_on_release im entsprechenden cgroup-Verzeichnis bestimmt. Wenn diese Datei den Wert 0 enthält, wird das release_agent-Programm nicht aufgerufen. Wenn sie den Wert 1 enthält, wird das Programm release_agent aufgerufen. Der Standardwert für diese Datei in der Root-Cgroup ist 0.

Das Palo Alto Networks Threat Intelligence Team stellte fest, dass der Fehler auf eine fehlende Überprüfung zurückzuführen ist, ob der Prozess, der die release_agent Datei setzt, über administrative Rechte verfügt, was ihn zu einem potentiellen Angriffsziel macht.

Mit anderen Worten: Sollte die release_agent-Datei von einem Angreifer überschrieben werden, kann der Kernel gezwungen werden, eine beliebige Binärdatei aufzurufen, die im release_agent mit den höchstmöglichen Rechten konfiguriert ist – ein Szenario, das eine vollständige Übernahme des Rechners ermöglicht.

Es ist jedoch zu beachten, dass nur Prozesse mit „Root“-Rechten in die Datei schreiben können, was bedeutet, dass die Sicherheitslücke nur Root-Prozessen erlaubt, ihre Rechte zu erweitern.

„Auf den ersten Blick mag eine Schwachstelle, die nur von einem Root-Benutzer ausgenutzt werden kann, bizarr erscheinen“, erklärt Avrahami. „Als Root-Benutzer zu agieren, bedeutet nicht unbedingt, dass man die volle Kontrolle über den Rechner hat: Es gibt eine Grauzone zwischen dem Root-Benutzer und vollen Rechten, die Fähigkeiten, Namespaces und Container umfasst. In diesen Szenarien, in denen ein Root-Prozess nicht die volle Kontrolle über den Rechner hat, wird CVE-2022-0492 zu einer ernsthaften Schwachstelle.“

Obwohl Container, die mit AppArmor oder SELinux laufen, vor der Schwachstelle geschützt sind, wird den Nutzern empfohlen, die Patches anzuwenden, da die Schwachstelle von anderen böswilligen Host-Prozessen missbraucht werden könnte, um die Privilegien zu erhöhen.

Es ist bei weitem nicht das erste Mal, dass release_agent als Angriffsvektor aufgetaucht ist. Im Juli 2019 demonstrierte der Google Project Zero-Forscher Felix Wilhelm einen „schnellen und schmutzigen“ Proof-of-Concept (PoC), der die Funktion nutzt, um aus privilegierten Kubernetes- und Docker-Containern auszubrechen.

Im November 2021 veröffentlichte das Cloud-Sicherheitsunternehmen Aqua Details über eine Kryptowährungskampagne, die genau dieselbe Container-Escape-Technik nutzte, um den XMRig-Münzschürfer auf infizierte Hosts zu bringen.

CVE-2022-0492 ist eine weitere Linux-Schwachstelle, die für Container-Escape ausgenutzt werden kann“, schloss Avrahami. „Glücklicherweise sind Umgebungen, die Best Practices befolgen, vor dieser Sicherheitslücke geschützt. Umgebungen mit laxen Sicherheitskontrollen, die nicht vertrauenswürdige oder öffentlich zugängliche Container hosten, sind natürlich stark gefährdet.“