Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Programmieren<br />
www.linux-magazin.de Bash Bashing 05/2011<br />
92<br />
Shellskripte aus der Stümper-Liga – Folge 14: Symlink-Attacken bei NPA-<strong>In</strong>staller<br />
Bash Bashing<br />
Der neue Personalausweis NPA spaltet Anwender und Experten in Deutschland: Einige preisen die hohe Sicherheit<br />
für jeden Bürger, andere befürchten Überwachung und Fälschbarkeit. Bei genauem Hinsehen fangen die<br />
Probleme jedoch bereits viel früher an. Manche <strong>In</strong>stallationsroutine hat eine Leiche im Keller. Nils Magnus<br />
Von Sicherheit als ganzheitlichem Prozess<br />
predigen Sicherheitsberater gerne<br />
und meinen damit, dass es nicht nur darauf<br />
ankommt, ob ein Produkt oder eine<br />
Lösung die richtige Kryptographie und<br />
ein geeignetes Verschlüsselungsprotokoll<br />
verwendet. Es sollten auch die Benutzer<br />
mit den Sicherheitsfunktionen vertraut<br />
und die umgebende <strong>In</strong>formationstechnik<br />
auf dem neusten Stand sein.<br />
Dazu gehört auch die <strong>In</strong>stallation der<br />
beteiligten Softwarekomponenten. Wer<br />
etwa SCM Microsystems Basiskartenleser<br />
SCL011 einsetzen möchte [1], um seinen<br />
neuen elektronischen Personalausweis<br />
auszulesen (siehe Abbildung 1), freut<br />
sich zunächst über die vorhandenen <strong>Linux</strong>-Treiber<br />
[2]. Da ein Kartenleser sich<br />
jedoch komplex in die <strong>Linux</strong>-Distribution<br />
einklinkt, unterstützt der Hersteller die<br />
Anwender mit einem <strong>In</strong>stallationsskript,<br />
das er als Bash-Skript ausführt.<br />
So gilt es, zunächst den über USB verbundenen<br />
Kartenleser überhaupt anzusprechen.<br />
Das Paket »libusb«<br />
installieren die meisten Distributionen<br />
bereits mit. Das<br />
Low-Level-Protokoll PC/ SC,<br />
das auf serielle Leitungen<br />
setzt, müssen die meisten Systemverwalter<br />
erst – beispielsweise<br />
über das Paket »libpcsclite1«<br />
– unter Debian und<br />
seinen Derivaten einspielen.<br />
Umsichtige Prüfung<br />
Nach diesen Vorbereitungen<br />
darf der Admin als Root das<br />
der Treiberbibliothek beigelegte<br />
Skript »install.sh« ausführen<br />
(Listing 1). So installiert<br />
er die herstellerspezifische<br />
Software für den Leser, der offiziell nach<br />
der technischen Richtlinie TR 03119 des<br />
Bundesamts für Sicherheit in der <strong>In</strong>formationstechnik<br />
[3] zugelassen ist.<br />
Hier lauern erste Hürden: Der Code geht<br />
davon aus, dass sich der Anwender mit<br />
seiner Shell im ausgepackten <strong>In</strong>stallationsverzeichnis<br />
befindet. Ruft er das Skript<br />
von einem anderen „Current Working Directory“<br />
aus auf, droht Unheil.<br />
Klappt das Anlegen des »bundle_path« –<br />
trotz fehlender Prüfung, ob das Verzeichnis<br />
schon existiert – eher zufällig wegen<br />
des Parameters »-p«, so kopiert der »cp«-<br />
Befehl in Zeile 19 eventuell die falschen<br />
Dateien, da das Skript von einem Aufruf<br />
aus seinem <strong>In</strong>stallationsverzeichnis ausgeht,<br />
was nicht zwangsläufig stimmt.<br />
Hinterlistige Leere<br />
Gerade wer solche Pakete in »/tmp« auspackt,<br />
ist aber nicht davor gefeit, dass<br />
ein Kollege oder Anwender dann eigene<br />
Dateien mit der Endung »bundle« dem<br />
Skript unterschiebt. Wenn ein Angreifer<br />
etwa mutmaßt, dass der Admin aus dem<br />
»/tmp«-Verzeichnis heraus arbeitet, kann<br />
er dort Dateien anlegen, die Leerzeichen<br />
enthalten und die mit der Zeichenfolge<br />
»bundle« enden.<br />
Defensive neue Dateien<br />
Die For-Schleife in Zeile 29 kommt damit<br />
nicht zurecht. Das Suchmuster »*.bundle«<br />
ohne doppelte Anführungszeichen expandiert<br />
die interpretierende Shell zu mehreren<br />
Argumenten und setzt sie schließlich<br />
in Zeile 30 ein. Die Symlinks legt das<br />
Skript immerhin mit Rootrechten an und<br />
überschreibt damit im ungünstigsten Fall<br />
auch Systemdateien.<br />
Um diese Probleme zu vermeiden, befolgen<br />
erfahrene Bash-Entwickler einige<br />
Faustregeln. Zunächst einmal gilt als gute<br />
Abbildung 1: SCMs Kartenleser SCL011 holt sich<br />
kontaktlos Daten vom neuen elektronischen Personalausweis.<br />
Bei der <strong>In</strong>stallation der <strong>Linux</strong>-Treiber<br />
lauern jedoch Fallen durch Symlink-Attacken.