Wer mit root-Rechten (also als Administrator) in Windows arbeitet wird sicher schon einmal eine Fehlermeldung nach dem Motto „Bitte kontaktieren sie Ihren Systemadministrator“ bekommen. Blöd, wenn man selbst der Systemadministrator ist.

Wäre es da nicht schön einfach alle Rechte auf einem System zu haben oder sie gegebenenfalls temporär erteilt zu bekommen? Sicherlich, doch birgt das auch immense Sicherheitsrisiken, wie die Entdeckung mehrerer Sicherheitslücken in dem McAfee Virus-Scanner für Linux zeigte.

Diverse Sicherheitslücken in McAfee für Linux

Der Virus-Scanner von McAfee ist auch für Linux erhältlich und muss natürlich als Benutzer mit root-Rechten installiert und ausgeführt werden.

Einmal installiert, kann die gehackte Software dann Code ebenfalls mit root-Rechten ausführen, was natürlich eine sehr große Gefahr für das System ist. Im Gegensatz zu Windows Systemen kann der root-User bei Linux wirklich alles – nur nicht sich selbst löschen 😉

Andrew Fasano fand nun zehn Sicherheitslücken, mit deren Hilfe man Code als root-User ausführen kann:

Zunächst muss man einen gefälschten Update-Server bereitstellen mit dem das Script, welches man ausführen möchte. Hierzu wird natürlich eine valide Authentifizierung benötigt, die Fasano aufbrechen konnte. Sobald man die Token für die Authentifizierung hat, ist dieser Schritt erledigt. Server aufsetzen, alle Clients über neuen Server informieren (dank validem Token kein Problem) und fertig.

Wenn man eine sehr große Datei als „Update“ anbietet, kann man vor dem Beenden der Verifikation/des Downloads diese Datei bereits ausführen (sofern es natürlich ein Script o.Ä. ist). Dies kann man über geschicktes Anpassen einiger URL-Parameter erreichen, die bei Requests vom Server an das Web-Interface vom McAfee Client eine Remote Code Execution anstoßen. Dieser Parameter wurde direkt ausgeführt und sollte eigentlich einen Virus-Scan auslösen (was als root-User geschieht). Nimmt man dort jedoch /bin/sh statt /opt/NAI/LinuxShield/libexec/scanner kann man shell-Scripte ausführen … als root-User!

Das wars auch schon. Wir haben nun von einem Update-Server ein Script heruntergeladen, welches mit root-Rechten ausgeführt wird. Natürlich muss man dazu einiges anstellen und den Client direkt erreichen können, einen validen Token bekommen (die ca. eine Stunde gültig sind), etc.etc. Das Prinzip und die Mächtigkeit dieses Angriffes ist aber denke ich klar.

root ist nicht immer „gut“

Sobald unter Linux etwas nicht geht, wird auf sudo oder su zurückgegriffen um einen Befehl mit root-Rechten auszuführen. Das ist normalerweise auch sehr hilfreich, bzw. gar notwendig, jedoch birgt das auf Gefahren, wie man gesehen hat.

Wenn man sich also mal wieder fragt, warum man für einiges selbst als Admin keine Rechte besitzt, ist man nun der Antwort einen Schritt näher.

(Der Exploit ist als Python Code auf Gist verfügbar)