2017-08-16 2 views
3

Warum ist es keine Sicherheitslücke, dass PostgreSQL standardmäßig Benutzerkennwörter in einem MD5-Hash speichert? Ich studiere die Interna von PostgreSQL und bin zum System catelog pg_authid gekommen und wenn ich über die MD5-Hash-Verschlüsselung lese, scheint es, dass es als antiquiert gilt. In meinen Gedanken, wenn ein Administrator oder ein Benutzer in der Lage ist, auf den zugrunde liegenden Dateispeicher zuzugreifen, könnten sie hypothetisch die Kennwörter knacken und tun, was auch immer diese Berechtigungsnachweise ermöglichen würden.Warum ist es keine Sicherheitslücke, dass PostgreSQL standardmäßig Benutzerkennwörter in einem MD5-Hash speichert?

Ich frage, warum es keine Sicherheitslücke ist, da PostgreSQL anscheinend "Common Criteria Certified" war, das laut seinem Wiki, das aus westlichen Verteidigungsorganisationen stammt, militärsicher zu sein scheint.

Danke!

+0

Version 10 bietet ['scram-sha-256' Authentifizierungsmethode] (https://www.postgresql.org/docs/10/static/auth-methods. html # auth-password) –

+0

Also ist es fair zu sagen, dass es heute in vielen Standardinstallationen ein großes Sicherheitsloch gibt? –

+0

@ClodoaldoNETO^ –

Antwort

3

Erstens, PostgreSQL 10 adds SCRAM-SHA256 basierend auf SASL, dies ist ein strittiger Punkt.

Für ältere Versionen: Es ist eine Schwäche, aber es ist nicht eine große Sicherheitslücke für eine Reihe von Gründen:

  • Internet-entfalteten PostgreSQL-Instanzen sollten SSL verwenden, auf dem Protokoll Abhören zu verhindern. Dies verringert die Wahrscheinlichkeit eines erfolgreichen Passwortdiebstahls erheblich.

  • Passwörter sind doppelt gesalzen. Das auf der Festplatte gespeicherte Passwort wird mit einem Salz-Hash-Wert gemischt und der md5-Digest wird genommen. Das auf dem Draht gesendete Kennwort wird jedoch erneut gesalzen und mit einem Authentifizierungsaustausch-spezifischen Hashwert neugehackt. Wenn Sie also ein Hash-Kennwort auf dem Draht erfassen, können Sie es nicht einfach bei einer späteren Authentifizierung erneut wiedergeben.

Wenn Sie verwalten ein paar Kopien derselben durch das Abhören einer Klartext Verbindung zweimal gesalzen Passwort zu erhalten, könnten Sie möglicherweise Schwächen in MD5 nutzen die einmal gesalzen Version zu finden, die auf der Festplatte gespeichert ist, und verwenden, die mit der DB authentifizieren.

Aber es ist eine Menge Arbeit, und es ist ziemlich vollständig durch die Verwendung von SSL verhindert.

Ich persönlich denke, die "Common Criteria" ist nahe an einem Haufen bürokratischen Unsinn. Es gilt nur für eine bestimmte Installation mit sehr engen, spezifischen Versionen von allem von Hardware an. Es sollte helfen, das gesamte Schlangenöl auszuschließen, aber es beweist sicher nichts, was sicher ist. (Hölle, sieh dir Regierungssysteme an ...)

+0

Danke! Es macht Sinn, dass die Konfiguration der Datenbank dem System eine bedeutende Sicherheitsebene hinzufügt, und ich habe auch gedacht, dass sie nicht einfach den Common Criteria Certified-Prüfsiegel für irgendeine Software ausstellen. Auch bei @Craig Ringer bin ich gespannt, wo man mehr über richtige Deployment-Prozesse erfahren würde und wo auch wenn überhaupt der zweite Aufzählungspunkt dokumentiert ist? –

+0

@johndrinane Ich bin mir nicht sicher, ob die Details des MD5-Authentifizierungshandshakes in PostgreSQL außerhalb des Quellcodes dokumentiert sind. Siehe 'src/backend/libpq/auth.c' –

+0

Ich werde es der Dokumentation hinzufügen, denke ich dann ... muchos gracias! –

Verwandte Themen