HTTP-Authentifizierung mit Wildcards? Designfehler oder Absicht?
fnord2000
- webhosting
Hi,
ich habe auf meinem Apache-Webserver ein paar Verzeichnisse passwortgeschützt, über den HTTP-Authentifizierungs-Mechanismus mit .htaccess und .htpasswd.
Um die Passwörter sicher zu gestalten habe ich natürlich auch Sonderzeichen drin und habe da u.a. das Fragezeichen verwendet. In einem bestimmten Passwort habe ich genaugenommen zwei Fragezeichen, wovon eines das letzte Zeichen im Passwort ist.
Durch einen Tippfehler ist mir jetzt etwas merkwürdiges aufgefallen: Und zwar habe ich versehentlich anstelle eines Fragezeichens (?) das Zeichen ¿ eingegeben, also ein spanisches Fragezeichen. ABER: Das Passwort wurde dennoch akzeptiert!
Danach habe ich etwas weiter herumprobiert. Dabei ist mir aufgefallen, dass das Fragezeichen inmitten des Passworts scheinbar sowohl ? und ¿ akzeptiert; beim Fragezeichen, welches am Ende des Strings steht kommt es jedoch noch extremer: Hier werden zusätzlich auch noch einige andere Zeichen, wie Ausrufezeichen, Doppelpunkt, Semikolon oder das umgekehrte Ausrufezeichen (¡) angenommen.
Interpretiert der Apache das Fragezeichen hier womöglich als ein Wildcard? Das wäre ja schon ein ziemlicher Verlust an Sicherheit für das Passwort. Oder ist das womöglich irgendein Designfehler im Mechanismus?
Hello,
Interpretiert der Apache das Fragezeichen hier womöglich als ein Wildcard? Das wäre ja schon ein ziemlicher Verlust an Sicherheit für das Passwort. Oder ist das womöglich irgendein Designfehler im Mechanismus?
Das Passwort wird üblicherweise mit der crypt-Funktion (mit salt) verschlüsselt. Da müsste man dann vermutlich dort mal nachlesen über die Besonderheiten zur Abbildungsfunktion.
Außerdem ist de relevante Länge mWn auf acht Zeichen begrenzt. Alles, was danach kommt, verursacht keine Änderung mehr, was aber zu überprüfen wäre!
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Außerdem ist de relevante Länge mWn auf acht Zeichen begrenzt. Alles, was danach kommt, verursacht keine Änderung mehr, was aber zu überprüfen wäre!
Bitte? Wer hat sich das denn ausgedacht? Das ist ja schon irgendwie lächerlich.
Aber wieso ist es dann überhaupt möglich längere Passworte einzugeben? Da würde ich vom Browser schon erwarten von vorneherein nicht mehr Zeichen zu akzeptieren.
Aber das erklärt zumindest das Verhalten des letzten Zeichens, da es sich um das neunte Zeichen im Passwort handelt. Da kann ich dann also wirklich angeben was ich will. :-/
Hi,
Aber wieso ist es dann überhaupt möglich längere Passworte einzugeben? Da würde ich vom Browser schon erwarten von vorneherein nicht mehr Zeichen zu akzeptieren.
Der Browser kann aber gar nicht wissen, ob im Apache crypt oder ein anderes Verfahren benutzt wird - also kann er auch nicht wissen, ob die Einschränkung auf 8 Zeichen sinnvoll ist oder nicht.
Wenn Du längere Paßwörter benutzen willst, dann stell Deinen Apache so ein, daß er nicht crypt benutzt. (das wird, IIRC, beim Erstellen der htpasswd geregelt, beim Hinzufügen der gültigen User).
cu,
Andreas
Hello,
Außerdem ist die relevante Länge mWn auf acht Zeichen begrenzt. Alles, was danach kommt, verursacht keine Änderung mehr, was aber zu überprüfen wäre!
Bitte? Wer hat sich das denn ausgedacht? Das ist ja schon irgendwie lächerlich.
Aber wieso ist es dann überhaupt möglich längere Passworte einzugeben? Da würde ich vom Browser schon erwarten von vorneherein nicht mehr Zeichen zu akzeptieren.
Der Browser hat damit nichts zu tun. Der gehört zur Clientseite. Hier betrifft es jedoch die Serverseite.
Aber das erklärt zumindest das Verhalten des letzten Zeichens, da es sich um das neunte Zeichen im Passwort handelt. Da kann ich dann also wirklich angeben was ich will. :-/
Dann muss ich das jetzt nicht selber nochmal ausprobieren, ob ich's richtig im Gedächtnis hatte?
Aber die Transformation anderer Zeichen innerhalb des relevanten Strings werde ich mir nochmal anschauen.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
siehe hierzu auch:
http://www.heise.de/security/meldung/PHP-5-5-soll-Passwort-Schlamperei-eindaemmen-1707355.html
http://httpd.apache.org/docs/2.2/misc/password_encryptions.html
https://de.wikipedia.org/wiki/Bcrypt
Ob man den Apachen nun dazu überreden kann, anstelle von crypt (3) bcrypt zu verwenden, hab ich noch nicht rausgefunden.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
man muss ja manchmal nur erst auf die Idee kommen zu suchen, dann finden und lesen:
http://httpd.apache.org/docs/current/programs/htpasswd.html
-m
Use MD5 encryption for passwords. This is the default (since version 2.2.18).
-B
Use bcrypt encryption for passwords. This is currently considered to be very secure.
-C
This flag is only allowed in combination with -B (bcrypt encryption). It sets the computing time used for the bcrypt algorithm (higher is more secure but slower, default: 5, valid: 4 to 31).
-d
Use crypt() encryption for passwords. This is not supported by the httpd server on Windows and Netware. This algorithm limits the password length to 8 characters. This algorithm is insecure by today's standards. It used to be the default algorithm until version 2.2.17.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
hi,
[..] Oder ist das womöglich irgendein Designfehler im Mechanismus?
Beschreibe mal bitte Deinen Eingabeprozess, von der Tastatur bis zur Passwortdatei, etwas genauer und welche Prozesse die Passwortdatei erzeugen, welches Crypt-Verfahren Du verwendest (das spielt bei der Länge des Passwortes eine Rolle) usw.
Horst