Ein Mitglied der Hackergruppe Phenolit hat eine gefährliche Lücke im Programm sudo entdeckt , das auf Unix-artigen Systemen wie Linux oder Mac OS X dazu dient, Root-Rechte zu erlangen. Normalerweise ist dazu die Eingabe des Passworts erforderlich.
Über einen Format-String-Angriff, bei dem ein Hacker Format-Spezifikationen wie %s oder %n aus der printf-API-Familie in den Formatstring einschleust, lässt sich sudo jedoch austricksen. Betroffen sind die Versionen 1.8.0 bis 1.8.3p1. ZDNet hat den Angriff auf einem aktuell gepatchten Debian-System nachvollzogen. Inzwischen ist Version 1.8.3p2 erschienen, die das Problem beseitigt.
Konkret lädt sudo den Parameter argv[0] , der den Programmnamen enthält, in einen Formatstring. Normalerweise lautet der Parameter daher „sudo“ wie das Programm selbst. Setzt man aber einen Softlink auf das sudo-Binary, der einen Namen wie %s oder %n trägt, lassen sich auf diese Weise beliebige Speicherinhalte einschleusen. Um die Lücke auszunutzen, muss der Angreifer sudo mit einem hohem Debug-Level ausführen.
Am einfachsten nutzt man dazu die SUDO_ASKPASS-Erweiterung, die das Passwort nicht über das Terminal abfragt, sondern über eine externe Anwendung, etwa einen GUI-Dialog. Über den Format-String-Angriff überschreibt man die Funktion setuid durch das aufrufkompatible setgid . Auf diese Weise wird die selbstbestimmte externe Anwendung mit Root-Rechten ausgeführt. Diese Anwendung kann beispielsweise eine bash-Shell sein.
Ausdrücklich weist „joernchen“ von Phenolit darauf hin, dass es nicht ausreicht, sudo mit FORTIFY_SOURCE zu kompilieren. Das mache den Angriff zwar „schmerzhaft“, aber nicht unmöglich, schreibt er unter Verweis auf einen Artikel bei Phrack .
Nutzer sollten mit dem Befehl sudo -V nachsehen, ob ihre sudo-Version von der Lücke betroffen ist. Wenn das der Fall ist, sollte man bis zum Erscheinen eines Fixes für die jeweilige Distribution die Version 1.8.3p2 selbst kompilieren und installieren.