passwortverschlüsselung: lücke oder feature?

Gesperrt
knb
Beiträge: 224
Registriert: Fr 9. Sep 2005, 14:03
Wohnort: Potsdam
Kontaktdaten:

passwortverschlüsselung: lücke oder feature?

Beitrag von knb »

Wenn ich zwei Backenduser anlege, mit verschiedenem Namen aber gleichem Passwort, steht in Tabelle con_phplib_auth_user_md5, Spalte password der gleiche String.

Anscheinend geht in die Passwortverschlüsselung nur der Passwortstring ein, nichts weiter (Keine Zufallszahl, nicht der Backendusername, kein Zeitstempel)

also in Pseudocode:

$pwd = "passwort_im_klartext";
$cryptpwd = crypt($pwd);
$sql = "update con_phplib_auth_user_md5 set password = '$cryptpwd');

Wäre es nicht sicherer wenn man das so implementierte
$pwd = "nutzerkennzeichen" . "passwort_im_klartext";
$cryptpwd = crypt($pwd);


Weil jetzt kann ein user mit SQL Zugang zur DB sehen welche user gleiche passworte haben:

Code: Alles auswählen

SELECT username,
PASSWORD FROM `con_phplib_auth_user_md5`
WHERE PASSWORD IN (

SELECT PASSWORD FROM `con_dc110_phplib_auth_user_md5`
GROUP BY PASSWORD HAVING count(
PASSWORD ) >1
)
ORDER BY 2, 1 
(SQL für mysql 4, müsste für mysql 3.23 umgeschrieben werden)

Ergebnis:

Code: Alles auswählen

---------------------------------------------------------
username PASSWORD
---------------------------------------------------------
user1 	034168977b07e81744f26c91c768c111
user2 	034168977b07e81744f26c91c768c111
admin1   034168977b07e81744f26c91c768c111
user3 	ef0a706ad9aa3538892200ecef97bfde
admin2   ef0a706ad9aa3538892200ecef97bfde
user4 	   f9939ae8bde04a236ec8714d1613bed8
user5 	   f9939ae8bde04a236ec8714d1613bed8
sysadmin 	f9939ae8bde04a236ec8714d1613bed8
---------------------------------------------------------
Ist das gewollt? Kann ja seineGründe haben? Habe jetzt im contenido php code nicht nachgesehen wie es wirklich implementiert ist.

Dieser Fall kann auftreten wenn sysadmins aus Bequemlichkeit einen Testaccount mit weniger Privilegien anlegen. Also kann es recht häufig sein, ist kein theoretisches Beispiel, denke ich.
Gruss,
Knut
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

mysql 4 kann subselects? Ich dachte, das geht fruehestens ab v. 5 (wobei ich das auch noch nicht getestet habe).
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!
PickPay
Beiträge: 164
Registriert: Di 2. Dez 2003, 19:38
Wohnort: Zürich
Kontaktdaten:

Beitrag von PickPay »

Nun zum einen verwendet Contenido PHPLIB, welches die Passwörter so behandelt und zum andern würde ich behaupten dass nahezu die meisten PHP-MySQL-Applikationen diese Methode verwenden.

Ausserdem ist es ja nicht einfacher einen Useraccount zu hacken als einen Administratoraccount. Solange man ein sinnvolles Passwort wählt, denke ich, sollte das kein Problem darstellen.
knb
Beiträge: 224
Registriert: Fr 9. Sep 2005, 14:03
Wohnort: Potsdam
Kontaktdaten:

Beitrag von knb »

ja, mysql 4 kann auch schon subselects, weiss nicht ob ab 4.0 oder 4.1

Und es geht nicht um die "Sicherheit" der verwendeten Verschlüsselungs/Hashfunktion oder der verwendeten PHP Bibliothek, sondern um die Tatsache dass man aus dem verschlüsselten String schliessen kann, welcher Account noch das gleiche Passwort benutzt (auch wenn aus dem Hashwert man nicht rauskriegt *wie* es lautet.)

Der Einwand "andere Apps machen's genauso, also wirds schon ok sein" ist auch kein überzeugendes Argument.

Erstens machens es viele Standardtools besser.
Wenn ich mit anderen Tools einen User anlege unter Apache (mit htpasswd) oder (unter Unix) mit passwd, oder Samba-User mit smbpasswd, dann haben Accounts mit gleichen Passwords trotzdem *unterschiedliche* Hashes.

Zweitens ist es ein Problem der Applikation, nicht von PHP, und unterliegt somit der Kontrolle der Programmierer.
Gruss,
Knut
Gesperrt