Passwörter unknackbar speichern

Seite 3: Web-Anwendungen

Inhaltsverzeichnis

In der Praxis nutzen zwar viele Betriebssysteme bereits Salts und Key Stretching, um die Passwörter der Anwender sicher zu speichern. Gerade bei populären Web-Anwendungen steht es um die Passwort-Sicherheit jedoch schlecht, obwohl dort das Risiko am größten ist, dass Angreifer Passwörter von Nutzern oder Kunden auslesen. Da werden Passwörter mitunter sogar noch im Klartext abgelegt; und wenn sie doch gehasht wurden, dann nur mit MD5. Selbst verbreitete Content-Management-Systeme wie Typo3 nutzen standardmäßig MD5 ohne Salt oder Runden zum Hashen der Nutzerpasswörter.

Mehr Sicherheit verspricht die Typo3-Extension "saltedpasswords". Sie bietet zusätzlich die Sicherung mit bcrypt oder dem Sicherheits-Framework phpass an; dazu gleich mehr. Die Erweiterung will allerdings erst aktiviert und konfiguriert werden, was jedoch die Installation weiterer Extensions und Eingriffe am System nach sich zieht – da wundert es wenig, dass viele Betreiber es bei der Grundinstallation belassen.

Wordpress und phpBB setzen auf das Framework phpass des Entwicklers Solar Designer – der im Übrigen auch den Passwort-Cracker John the Ripper entwickelt. Phpass setzt standardmäßig auf bcrypt. bcrypt beruht auf dem Blowfish-Algorithmus, bei dem es sich streng genommen gar nicht um einen Hash-, sondern um einen Verschlüsselungsalgorithmus handelt. Bcrypt nutzt einen aufwändigen Schlüsselinitialisierungsalgorithmus und verschlüsselt das resultierende Chiffrat immer wieder abwechselnd mit dem Salt und dem Passwort. Die Zahl der Runden ist eine Potenz von 2, der benutzte Exponent wird der erzeugten Zeichenkette vorangestellt. Diese hat üblicherweise folgendes Format:

$2a$08$Ra4upKLreqDA18E/OtFSIu/ED6iTmorUKyNJF6aVwbpO9AIBS/j7u

Die am Anfang zwischen die Dollarzeichen eingeklemmte Zeichenkette 2a steht für den bcrypt-Algorithmus, die darauffolgende Zahl 08 signalisiert den Exponten zur Potenz 2 – 2 hoch 8 ergibt die Anzahl der Runden: 256. Die sich anschließende Zeichenfolge ist das 16-stellige Salt und das verschlüsselte Passwort.

Der kostenlose Cracker Hashcat unterstützt zahlreiche Hash-Algorithmen und die bei Anwendungen benutzten Varianten.

Fehlt die Implementierung des Blowfish-Algorithmus auf dem System, fällt das phpass-Framework automatisch auf Extended-DES und im Notfall auf MD5 mit Salt und Iterationen zurück. Um den Rückfall auf schwache Algorithmen zu verhindern, empfiehlt der Entwickler, mindestens PHP 5.3.2 einzusetzen. Ab dieser Version sind Blowfish, SHA-256 und SHA-512 nämlich schon fest in PHP integriert, sodass man nicht mehr auf Betriebsystem-APIs oder zusätzliche Bibliotheken angewiesen ist. Alternativ erweitert das PHP-Sicherheitsframework Suhosin den PHP-Interpreter um Blowfish.

Allerdings nutzen WordPress und phpBB die unsicherste von drei möglichen Konfigurationen. Wordpress setzte in unserem Test auf einem Ubuntu-System auf die MD5-Variante, wobei das CMS den Rückfall absichtlich erzwingt, um die Kompatibilität zwischen verschiedenen Webanwendungen zu erhalten. WordPress soll so die Nutzerdatenbank von phpBB nutzen können und andersrum. Die Drupal-Entwickler hingegen haben das Framework für ihre Zwecke angepasst und hashen seit Drupal 7 mit SHA-512. Für ältere Drupal-Versionen steht das Modul "Secure Password Hashes" zur nachträglichen Sicherung bereit.

Standardmäßig ist es auch etwa um das CMS Joomla nicht zum Besten bestellt. Es ist zwar in der Lage, über die PHP-Funktion crypt() SHA-512 mit Salt und vielen Runden zu nutzen (getCryptedPassword), ab Werk kommt jedoch nur ein Salt und MD5 mit einer Runde zum Einsatz. Grundsätzlich lässt sich die eigene Installation eines CMS ohne größere Problem manuell anpassen und auf eine sicherere Variante umstellen. Man muss nur im Auge haben, dass unter Umständen Zusatzmodule inkompatibel zu den Änderungen sein können.