Regel
Nicht verwenden veraltete Hashing Algorithmen es sei denn, kontextuell
gerechtfertigt.vermeiden Sie die Verwendung von veraltete Hashing Algorithmen (MD5, SHA-1)
in jeder sicherheitssensiblen Kontext. Diese sind kryptographisch
gebrochen, einfach zu zu erzwingen, und Schaden System Wartbarkeit.
Unterstützte Sprachen: 45+Einführung
MD5 und SHA-1 sind nach wie vor in Produktionscodebasen weit verbreitet, obwohl sie seit Jahrzehnten kryptografisch gebrochen sind. MD5 gilt seit 2004 als unsicher, SHA-1 seit 2017. Dennoch verwenden Entwickler sie weiterhin für das Hashing von Passwörtern, digitale Signaturen und die Integritätsprüfung, wo Kollisionsangriffe und Preimage-Angriffe echte Sicherheitsrisiken darstellen. Der Rechenaufwand für die Erzeugung von MD5-Kollisionen ist inzwischen trivial, und SHA-1-Kollisionsangriffe sind mit Cloud-Computing-Ressourcen praktikabel.
Warum das wichtig ist
Auswirkungen auf die Sicherheit: MD5 und SHA-1 sind anfällig für Kollisionsangriffe, bei denen zwei unterschiedliche Eingaben die gleiche Hash-Ausgabe erzeugen. Angreifer nutzen dies aus, um bösartige Dateien mit demselben Hash-Wert wie legitime Dateien zu erstellen und so die Integritätsprüfungen zu umgehen. Für die Speicherung von Passwörtern sind diese Algorithmen katastrophal schwach, weil sie schnell sind und Brute-Force- und Rainbow-Table-Angriffe trivial machen. Ein moderner Grafikprozessor kann Milliarden von MD5-Hashes pro Sekunde berechnen, was bedeutet, dass ein 8-Zeichen-Passwort innerhalb weniger Stunden geknackt werden kann.
Compliance und rechtliche Risiken: Sicherheitsstandards wie PCI DSS, HIPAA und SOC 2 verbieten ausdrücklich MD5 und SHA-1 für kryptografische Zwecke. Ihre Verwendung in regulierten Umgebungen führt zu Prüfungsfehlern und rechtlicher Haftung. Die wichtigsten Browser warnen Benutzer, wenn sie auf SHA-1-Zertifikate stoßen, was das Vertrauen erschüttert und möglicherweise den Zugriff auf Ihre Dienste blockiert.
Wartungsfreundlichkeit des Codes: Wenn veraltete Hashing-Algorithmen im Code entdeckt werden, müssen sie sofort behoben werden. Dies führt zu technischen Schulden, die sich im Laufe der Zeit erhöhen, da die Migration schwieriger wird, je mehr Daten anfallen. Die frühzeitige Einführung sicherer Algorithmen verhindert kostspielige künftige Migrationen und Sicherheitspatches für Notfälle.
Erweiterung der Angriffsfläche: Schwache Hashing-Algorithmen schaffen mehrere Angriffsvektoren. Passwort-Datenbanken werden anfällig für Offline-Knacken. Digitale Signaturen können gefälscht werden. Dateiintegritätssysteme können umgangen werden. Jede Verwendung von MD5 oder SHA-1 ist ein potenzieller Sicherheitsvorfall, der nur darauf wartet zu passieren.
Code-Beispiele
❌ Nicht konform:
const crypto = require('crypto');
function hashPassword(password) {
return crypto.createHash('md5')
.update(password)
.digest('hex');
}
function verifyFileIntegrity(fileContent, expectedHash) {
const hash = crypto.createHash('sha1')
.update(fileContent)
.digest('hex');
return hash === expectedHash;
}
Warum es unsicher ist: MD5 für das Hashing von Passwörtern bietet keine Sicherheit gegen moderne Cracking-Tools. SHA-1 für die Dateiintegrität kann durch Kollisionsangriffe überwunden werden, so dass bösartige Dateien die Überprüfung passieren können. Beide Algorithmen sind rechnerisch billig zu erzwingen.
✅ Konform:
const crypto = require('crypto');
async function hashPassword(password) {
const salt = crypto.randomBytes(16);
return new Promise((resolve, reject) => {
crypto.pbkdf2(password, salt, 310000, 32, 'sha256', (err, key) => {
if (err) reject(err);
resolve({ salt: salt.toString('hex'), hash: key.toString('hex') });
});
});
}
function verifyFileIntegrity(fileContent, expectedHash) {
const hash = crypto.createHash('sha256')
.update(fileContent)
.digest('hex');
return hash === expectedHash;
}Warum es sicher ist: PBKDF2 mit SHA-256 und hoher Iterationszahl (310.000) macht das Knacken von Passwörtern exponentiell langsamer. SHA-256 für die Dateiintegrität ist kollisionssicher, und es sind keine praktischen Angriffe bekannt. Beide Algorithmen erfüllen die aktuellen Sicherheitsstandards und compliance .
Schlussfolgerung
MD5 und SHA-1 haben in sicherheitsrelevantem Code nichts zu suchen. Ihre Schwachstellen sind gut dokumentiert, Exploits sind öffentlich zugänglich, und sichere Alternativen gibt es in jeder wichtigen Sprache. Der Weg zur Migration ist klar: Verwenden Sie bcrypt, scrypt oder Argon2 für Passwörter und SHA-256 oder SHA-3 für die Integritätsprüfung. Jeder Tag, an dem diese schwachen Algorithmen in der Produktion bleiben, vergrößert Ihre Angriffsfläche.
.avif)
