Stack-Clash-Schwachstelle in Linux, BSD-Systeme ermöglichen Root-Zugriff

Es sind Patches für eine neu entdeckte Linux-, BSD- und Solaris-Schwachstelle namens Stack Clash verfügbar, die die Stack-Guard-page-Milderung umgeht und den Root-Zugriff ermöglicht.

Linux, BSD, Solaris und andere Open-Source-Systeme sind anfällig für eine lokale Privilegieneskalations-Schwachstelle namens Stack Clash, die einem Angreifer die Ausführung von Code an der Wurzel ermöglicht.

Große Linux- und Open-Source-Distributoren haben heute Patches zur Verfügung gestellt, und Systeme, auf denen Linux, OpenBSD, NetBSD, FreeBSD oder Solaris auf i386- oder amd64-Hardware läuft, sollten bald aktualisiert werden.

Das Risiko, das von diesem Fehler, CVE-2017-1000364, ausgeht, wird besonders dann erhöht, wenn Angreifer bereits auf einem verwundbaren System vorhanden sind. Sie wÃ?rden nun in der Lage sein, diese Schwachstelle mit anderen kritischen Punkten, einschließlich der kÃ?rzlich angesprochenen Sudo-Schwachstelle, zu verketten und dann beliebigen Code mit den höchsten Privilegien auszufÃ?hren, sagten Forscher von Qualys, die die Schwachstelle entdeckt haben.

Die Schwachstelle wurde im Stack, einer Speicherverwaltungsregion auf diesen Systemen, gefunden. Der Angriff umgeht die Stack-Guard-page-Milderung, die 2010 in Linux eingeführt wurde, nachdem die Angriffe 2005 und 2010 auf den Stack abzielten.

"Unser [Proof-of-Concept]-Ausnutzen lässt den Stack wachsen, wobei er an den Schutzmechanismen vorbei in Bereiche des Speichers gelangt, in denen wir keinen Code zur Ausführung bringen können sollten", sagte Jimmy Graham, ein Direktor bei Qualys.

Wie entworfen, enthält der Stack-Speicherbereich einen Mechanismus, der sich ausdehnt, wenn ein Programm mehr Stack-Speicher benötigt; diese Ausdehnung stellt jedoch eine Sicherheitsbedrohung dar.

"Wenn sich der Stack-Zeiger eines Prozesses vom Angriff in einen anderen Speicherbereich (der genau dort endet, wo der Angriff beginnt) bewegen kann, ohne einen Seitenfehler auszulösen, dann benutzt der Prozess diesen anderen Speicherbereich, als wäre er eine Erweiterung des Stacks", schrieb Qualys in einem Advisory. Ein Angreifer könnte in diese Stack-Erweiterung schreiben und den angrenzenden Speicherbereich zerschlagen, oder in den anderen Speicherbereich schreiben und die Stack-Erweiterung zerschlagen.

Die Guard-page-Milderung sollte davor schützen, indem sie nicht abbildbare Seiten unterhalb des Stack-Anfangs einfügt, die bei Zugriff auf den Stack Ausnahmen auslösen oder den Prozess mit einem SIGSEGV-Fehlersignal beenden.

"Leider ist eine Stack-Guard-page von einigen Kilobyte nicht ausreichend: Wenn der Stack-Zeiger über die Guard-page 'springt' - wenn er vom Stack in einen anderen Speicherbereich wechselt, ohne auf die Guard-page zuzugreifen - dann wird keine Seitenfehler-Ausnahme ausgelöst und der Stack erstreckt sich in den anderen Speicherbereich", sagte Qualys.

Graham sagte, dass Qualys die Möglichkeit, dass diese Schwachstelle auch aus der Ferne ausnutzbar ist, nicht völlig ausgeschlossen hat, indem er diesen Aspekt als anwendungsspezifisch bezeichnete.

"Wir haben uns in einer Anwendung (dem Exim-Mailserver) vergraben, von der wir glaubten, dass sie es gewesen sein könnte, aber es stellte sich heraus, dass sie es nicht war", sagte Graham. "Es gibt Remote-Anwendungen, die diese Schwachstelle haben könnten, aber wir haben uns auf den Aspekt der lokalen Privilegieneskalation konzentriert.

Qualys sagte in seinem Gutachten, dass seine Proof-of-Concept-Exploits (Forscher sagten, sie hätten sieben davon gebaut) vier aufeinanderfolgenden Schritten folgen, die Speicher zuweisen, der nicht freigegeben werden darf, bevor alle vollständig sind. Diese vier Schritte umfassen: Zusammenstoßen des Stapels mit einer anderen Speicherregion, Ausführen des Stack-Zeigers zum Anfang des Stapels, Springen über die Stack-Guard-Seite und Zerschlagen des Stapels oder einer anderen Speicherregion.

Qualys empfiehlt in seiner Empfehlung, die Größe der Stack Guard-page als kurzfristige Lösung auf mindestens 1MB zu erhöhen, bis eine Aktualisierung durchgeführt werden kann. Es empfiehlt außerdem, den gesamten Userland-Code mit der Option -fstack-check neu zu kompilieren, was verhindern würde, dass der Stack-Zeiger in andere Speicherregionen wandert. Qualys räumt jedoch ein, dass dies eine teure Lösung ist, die jedoch nur dann überwunden werden kann, wenn eine unbekannte Schwachstelle in der Option -fstack-check vorliegt.

"Ich würde dies definitiv als eine hochriskante Schwachstelle einstufen", sagte Graham. "Verkettet mit anderen Schwachstellen kann man sehr schnell von der Ferne zu den Wurzeln gelangen."