Sicherheitsrisiko durch Legacy-Systeme: Ein Beispiel für Privilege Escalation in Linux

Autor: Felix Schlegel, IT-Consultant bei auticon Swiss

Hintergrund

Die digitale Welt ist in ständiger Bewebung, neue Technologien und Software-Versionen werden kontinuierlich veröffentlicht. Viele Firmen haben die Erfahrung gemacht, dass Updates zu unerwarteten Kompatibilitätsproblemen oder Fehlern führen können. Oft fehlt auch die Zeit oder das Know-How um komplexe Systeme nach einem Update zu konfigurieren und an die neuen Anforderungen anzupassen. Es ist somit auf den ersten Blick verständlich, dass viele IT-Abteilungen den Grundsatz «Never touch a running system» anwenden. 

Dieser Ansatz birgt jedoch erhebliche Risiken, da alte Systeme oft Sicherheitslücken enthalten, die von Angreifern ausgenutzt werden können. In diesem Artikel beschreibe ich anhand eines Beispiels, wie einfach es für einen Angreifer sein kann, sich erhöhte Rechte auf einem System zu verschaffen («Privilege Escalation») um daraufhin auf sensible Daten zuzugreifen oder Schadsoftware auszuführen.

Ausgangslage

Nehmen wir an eine Firma betreibt einen Server, welcher sensible Daten enthält und auf dem eine mehrere Jahre alte Linux Version läuft. Wegen Zeitmangel wurde das Betriebssystem bisher nie erneuert. Die Firma erstellt für Gäste und temporäre Mitarbeiter Accounts auf diesem Server. Sie wägt sich in Sicherheit, da diese Accounts nur beschränkten Zugriff erlauben, während nur der Administrator vollen Zugriff hat.

Versetzen wir uns nun in die Rolle eines Angreifers, welcher einen solchen Account erlangt hat. Entweder indem wir selbst einmal Gast bei der Firma waren oder durch Social Engineering, Phishing oder andere Sicherheitslücken an die Zugangsdaten gelangt sind.

Vorbereitung

Als Angreifer besteht unser erster Schritt darin, uns einen Überblick über das System zu verschaffen (dieser Schritt wird als Enumeration bezeichnet). Nebst der Suche nach potenziell sensitiven Daten und Passwörtern, geht es vor allem darum festzustellen, welche Softwareversionen installiert sind und ob es bekannte Sicherheitslücken (vulnerabilities) dazu gibt. In diesem Artikel fokussieren wir uns auf den Linux-Kernel, das Herzstück des Linux Betriebssystems. Als Schnittstelle zwischen der Software und Hardware besitzt der Kernel weitreichende Privilegien. Die Ausnutzung einer Schwachstelle im Kernel, ein sogenannter Kernel Exploit, kann uns somit weitreichende Privilegien (Root-Rechte) ermöglichen.

Um einen Exploit zu finden und anzuwenden, gehen wir wie folgt vor:

  1. Der Befehl uname -a zeigt uns die Kernelversion, beispielsweise «3.13.0-24-generic».
  2. Mittels einer einfachen Google-Suche oder auf spezialisierten Datenbanken wie Exploit-DB können wir feststellen, ob es für diese Version bereits Exploits gibt, d.h. Code-Beispiele, die eine bestimmte Schwachstelle ausnutzen. Solche Datenbanken dienen Cybersecurity Experten dazu, auf dem neuesten Stand zu bleiben, können jedoch ebenso von Angreifern verwendet werden.
  3. Schliesslich benötigt es etwas Trial-and-Error um einen funktionierenden Exploit zu finden. Oft hängt es davon ab, ob die entsprechende Programmiersprache auf der der Exploit basiert, auf dem System installiert ist. 

Anwendung eines Exploits

In unserem Beispiel haben wir Glück. Für die Linux Kernel Version 3.13 ist eine Sicherheitslücke (CVE- 2015-1328) bekannt (Siehe Abbildung 1). Ein CVE (Common Vulnerabilities and Exposures) bezeichnet eine eindeutige Identifikationsnummer für bekannte Sicherheitslücken wobei oft der zugehörige Exploits als “Proof of Concept” öffentlich verfügbar ist, um die Existenz und Auswirkung der Schwachstelle zu demonstrieren.

Abbildung 1: Beschreibung des Linux Kernel Exploits inklusive source code (Quelle: exploit-db.com)

Bei diesem Exploit handelt es sich um einen auf der C Sprache basierenden Code, welchen wir ganz einfach in ein Textfile exploit.c kopieren. In diesem Falle benötigen wir als Angreifer keinerlei Kenntnisse der Programmiersprache, so dass wir hier auch nicht weiter auf den Code eingehen. Häufig sind jedoch noch gewisse Anpassungen am Code nötig. Für einen bewilligten Pentest wäre es zudem wichtig sicherzustellen, dass der Exploit keine Schäden am System verursacht. Abbildung 2 zeigt die Befehle um den Code zu kompilieren und auszuführen. 

Mit dem Befehl id vor und nach Ausführung des Exploits können wir sehen, dass wir von einem einfachen User «karen» zum «root» Konto gewechselt sind, welches über uneingeschränkten Zugriff auf alle Systemressource verfügt.

In der darauffolgenden Post-Exploitation Phase könnten wir nun auf sensitive Daten zugreifen, Schadsoftware installieren, und unseren Einfluss auf weitere Systeme im Netzwerk ausweiten.

Abbildung 2: Ausführung des Exploits nachdem dieser auf das Ziel kopiert wurde.

Weitere Beispiele

Updates für das Betriebssystem können relativ einfach und automatisiert durchgeführt werden. Hingegen verfügt Software von Drittanbietern oft über separate Updatemechanismen, so dass Sicherheitsupdates in Vergessenheit geraten können. Insbesondere Applikationen welche Remote-Zugriff auf ihre Funktionen erlauben, dabei aber den Input nicht ausreichend kontrollieren und bereinigen, können eine sogenannte Remote Code Execution (RCE) Schwachstelle aufweisen. Hierbei ist es einem Angreifer möglich, beliebigen Code auf dem System auszuführen und somit Root-Rechte zu erlangen. Ein kürzliches Beispiel aus dem Jahr 2024 ist CVE-2024-45519, welches die Software Zimbra Collaboration Suite betraf. Hier war es Angreifern möglich auf einen Mailserver zuzugreifen und anstelle einer E-Mail Code zu senden. 

Fazit

Die vermeintliche Zeitersparnis durch das Vermeiden von Updates kann schwerwiegende Folgen haben, darunter Datenverlust, Reputationsschäden oder sogar rechtliche Konsequenzen für die Firma. Langfristig sind die Kosten für die Behebung von Sicherheitsvorfällen aufgrund veralteter Systeme oft höher als die Investition in aktuelle Software und Schulungen. Wie hier gezeigt wurde, bedarf es keiner besonderen technischen oder Programmierkenntnisse, um eine Sicherheitslücke auszunutzen und mittels Privilege Escalation Kontrolle über ein System zu erlangen. Während regelmässige Sicherheitsupdate essentiell sind um die Angriffsfläche zu reduzieren, haben wir jedoch gesehen, dass auch aktuelle Software über Sicherheitslücken verfügen kann.

Related Posts

Skip to content