Open Source im professionellen Einsatz

GCC macht's jetzt besser

Zufällig war der Zufall gerade erst Ende September 2011 bei GCC ein Thema, als Andi Kleen ein Patch [6] für den Compiler vorschlug, das das Seeding des GCC-Zufallszahlengenerators verbessert. Denn der initialisiert sich bis heute mit einer Mischung aus Prozess-ID und Systemzeit. Kleen fiel dieses Problem auf, als er in einer massiv parallelen Umgebung eine unzureichende Zufallszahlenqualität diagnostizierte.

Er schlägt als Verbesserung vor, »/dev/urandom« – sofern verfügbar – als Quelle für den Seed zu verwenden. Dabei bleibt jedoch ein kleines Zufalls-Restrisiko: Während »/dev/random« nur Zahlen liefert, solange sein Vorrat an durch Systemereignisse gefütterten Zufallsdaten ausreicht, emittiert »/dev/urandom« immer Zahlen. Deshalb könnte »/dev/random« blockieren und so den zugehörigen Prozess zum Stillstand bringen, bis wieder zufällige Ereignisse anfallen. Das ist für viele Anwendungen nicht tolerierbar, weshalb sich ein Ausweichen auf »/dev/urandom« empfiehlt. Damit sinkt zwar geringfügig die Zufälligkeit, allerdings ist das Eintreten des Effekts für den Angreifer nicht vorhersagbar.

Bind und Open SSL binnen eines Jahres im Visier

Ein Pseudozufallszahlen-Generator erwies sich 2008 auch als Ursache für DNS-Poisoning-Angriffe auf verschiedene BSD-Unixe, darunter Open BSD und Mac OS X [7]. Seit 1997 war bekannt, dass vorhersagbare, aufsteigende DNS-Anfragen-IDs ein Sicherheitsrisiko darstellen. Open BSD hatte darum damals schon einen Zufallszahlengenerator in seine Bind-Variante integriert, dabei aber – neben einem statischen UDP-Port – übersehen, wie stark der LCG-Algorithmus vom Startwert abhängt und wie wenig er sich für sichere Anwendungen eignet. Es gibt wesentlich bessere, kryptographisch sichere Zufallszahlengeneratoren.

Ebenfalls 2008 erwischte es die Open-SSL-Implementierung von Debian mit einer auf Zufallszahlen zurückzuführende Sicherheitslücke [8]. Durch ein Patch reduzierte sich der Startwert des Zufallszahlengenerators auf die Prozess-ID. Die maximal 16 Bit große Nummer vergab Debian aufsteigend. Ab dann war es leicht, zum Beispiel alle möglichen SSH-Keys einer Maschine vorauszuberechnen. Die dafür notwendigen Tools demonstriert [9].

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook