25.02.2014 Aufrufe

Linux-Magazin In Zockerhänden (Vorschau)

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.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!