Frage:
Ist es ein Sicherheitsproblem, bei der Registrierung nahezu identische E-Mail-Adressen zuzulassen?
Abe Miessler
2016-01-28 02:00:58 UTC
view on stackexchange narkive permalink

Angenommen, Sie haben eine Website, auf der Konten für alle folgenden E-Mail-Adressen erstellt werden können:

  'test @ test.com''test @ test.com' 'test @ test.com; '' test@test.com; test2@test.com ' 

Sollte dies als Sicherheitsproblem angesehen werden? Ich habe getestet, ob Sie auf die Daten von test@test.com zugreifen können, während Sie als test@test.com angemeldet sind. und nicht .

Trotz der Tatsache, dass Sie nicht auf die Konten zugreifen können, die mit sehr ähnlichen E-Mail-Adressen erstellt wurden, scheint dies zumindest seltsam und möglicherweise so, als könnte es zu einem Sicherheitsproblem führen, aber ich kann ' Denken Sie nicht an bestimmte Sicherheitsprobleme, die dadurch auftreten könnten.

Kann jemand bestimmte Sicherheitsprobleme vorschlagen, zu denen dieses Setup führen könnte?

Hm ... Nun, ich kann mir viele Systeme vorstellen, in denen das Zulassen von ", " jemandem, der nur Zugriff auf email1 hat, erlaubt, Spam zu versenden, wer auch immer email2 hat. Und das hat natürlich DoS-Potenzial; Wenn Sie eine Liste von Adressen angeben, von denen Ihre nur eine ist, müssen diese ein (ungefähr ganzzahliges) Vielfaches der Anzahl der von Ihnen gesendeten Bytes in direktem Verhältnis zur Anzahl der von Ihnen angegebenen E-Mail-Adressen senden.
@ParthianShot, aber das ist kein Problem mit nahezu identischen E-Mail-Adressen. Im Idealfall sollte so etwas bei der Registrierung abgefangen werden, aber es ist eher eine Sicherheitslücke der verwendeten E-Mail-Funktion / Bibliothek, die es in ihrer Benutzeroberfläche explizit machen sollte, wenn es einen Empfänger gibt oder wenn es mehrere Empfänger gibt und ungültige Eingaben verweigert .
@tim Das stimmt. Ich dachte nur nach dem Motto "Was könnte schief gehen, wenn die Zeichenfolge in einer SMTP-Sitzung wörtlich verwendet wird".
Ich bin es wirklich leid, dass Leute meinen E-Mail-Test spammen. Test@test.com ... würde es vorziehen, wenn Sie die E-Mail eines anderen als Beispiel verwenden.
Kann ich unter der Annahme, dass das Konto 'test@test.com' vorhanden ist, 'test@test.com' registrieren und Mitteilungen senden, die anscheinend von 'test@test.com' oder Spam 'test@test.com' mit Nachrichten stammen? Dies ist zwar kein technisches Problem für die Website, Ihre Kunden genießen jedoch möglicherweise nicht die Möglichkeit, sich auszugeben.
@blankip Die Domain [als Beispiel reserviert] (http://www.example.com) wäre eine gute Wahl.
@Blorgbeard example.com ist reserviert. test.com ist eine Website für Zertifizierungstests.
Hinweis: Bitte beschränken Sie Ihre E-Mail-Adressen nicht zu stark, wenn Sie versuchen, sie zu validieren. Siehe [Ich wusste, wie man eine E-Mail-Adresse validiert, bis ich den RFC gelesen habe] (http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until -i.aspx /). Sobald Sie festgestellt haben, dass die grundlegenden Teile vorhanden sind, können Sie NUR die E-Mail senden und prüfen, ob der Benutzer sie erhält. Sie haben kein Geschäft damit, die Verwendung gültiger E-Mail-Adressen zu verhindern, indem Sie zu restriktiv sind!
Sechs antworten:
Thomas Pornin
2016-01-28 02:09:49 UTC
view on stackexchange narkive permalink

Das wichtigste Problem bei diesem Ansatz ist, dass in Ihrem Beispiel nur das erste eine syntaktisch gültige E-Mail-Adresse ist. Die drei anderen sind es nicht. Dies bedeutet, dass eine der beiden folgenden Optionen gilt:

  1. Die "E-Mail-Adresse" ist lediglich ein Vorschlag. Das System möchte eine eindeutige Anmeldekennung. E-Mail-Adressen sind eine recht gute Kennung, da sich Benutzer an sie erinnern und das E-Mail-System bereits weltweite Einheitlichkeit gewährleistet.

  2. Die E-Mail-Adresse sollte eigentlich eine E-Mail-Adresse sein (z. B. zum Senden von E-Mails) an diese Adresse), und das Registrierungssystem kann nicht überprüfen, ob der vom Benutzer eingegebene E-Mail-Adresse ist.

  3. ol>

    Im letzteren Fall bedeutet dies, dass E-Mails nicht gesendet werden vermittelt, und auch, dass der Entwickler in Bezug auf die Validierung von Benutzereingaben sehr schlampig war, was im Allgemeinen kein gutes Zeichen für die Sicherheit ist.

    Wenn die Bezeichner jedoch Freiform sind, dann was Sie sehen ist das Ergebnis der Kreativität menschlicher Benutzer. Dies ist kein Problem, solange die Anmeldekennungen für das verwendet werden, was sie sind. Leerzeichen, Semikolons ... können schlecht implementierte Skripte oder Anwendungen zerstören. (Versuchen Sie, sich mit einem Kontonamen zu registrieren, der ein einfaches Anführungszeichen enthält, falls eine mögliche SQL-Injection möglich ist.)

tim
2016-01-28 02:14:13 UTC
view on stackexchange narkive permalink

Nur die erste E-Mail-Adresse ist tatsächlich eine gültige Adresse. Natürlich ist die E-Mail-Adressvalidierung schwierig, daher ist es nicht sinnvoll, eine perfekte Validierung zu implementieren. Sie können die Validierung maximal approximieren, und aus Gründen der Benutzerfreundlichkeit sollten Sie mit Ihrem Filter nachsichtig umgehen. Aus diesem Grund sollten Sie Ihre Sicherheit nicht auf die Gültigkeit von E-Mail-Adressen stützen.

Wenn Sie jedoch eine E-Mail-Adresse für die Registrierung benötigen, ist es üblich, einen Bestätigungslink an diese Adresse zu senden (um dies zu verhindern) Tippfehler usw .; wenn Sie dies nicht tun, kann dies tatsächlich als Sicherheitsproblem angesehen werden. Dies würde Ihr Szenario unmöglich machen.

In beiden Fällen handelt es sich nicht um ein Sicherheitsproblem. Ihre Authentifizierung sollte mit ähnlichen Namen umgehen können, andernfalls ist sie fehlerhaft .

Ich würde jedoch mit Leerzeichen am Anfang oder Ende vorsichtig sein, da es ziemlich oft vorkommt, dass sie irgendwann abgeschnitten werden, was tatsächlich Probleme verursachen kann.

Davon abgesehen Es gibt nur zwei kleine Probleme:

  • Tippfehler: Möglicherweise gibt es einen Benutzer test@example.com: 123456 und einen Benutzer test@example.co : 123456 . Wenn einer von ihnen versehentlich seine Anmeldeinformationen falsch eingibt, landet er möglicherweise auf dem Konto des anderen Benutzers. Dies ist jedoch ein ziemlicher Zufall, und ich würde aus Gründen der Benutzerfreundlichkeit nicht versuchen, mich dagegen zu verteidigen.
  • Identifizierung: Sie können E-Mail-Adressen anstelle von Benutzernamen anzeigen, sodass ein Benutzer möglicherweise einen anderen Benutzer imitieren kann . In Ihrem Beispiel sind beispielsweise test@test.com und test@test.com schwer zu unterscheiden. Dies ist jedoch wiederum ein Eckfall, da normalerweise Benutzernamen zur Identifizierung und keine E-Mail-Adressen angezeigt werden.
Ihr Link zu dieser Regex ist gefährlich für die Augen.
Die E-Mail-Validierung ist schwierig, wenn Sie Ihre eigenen rollen müssen. Da es sich um eine Website handelt, gibt es zahlreiche Bibliotheken, Frameworks oder Whatever, die eine E-Mail-Validierung enthalten. Sie * mögen * auch nur "nah genug" sein, aber es verringert die Notwendigkeit, eine eigene Validierungslogik zu schreiben, was es wesentlich einfacher macht.
Philipp
2016-01-28 03:17:20 UTC
view on stackexchange narkive permalink

Alle bis auf die erste sollten abgelehnt werden, nur weil sie keine gültigen E-Mail-Adressen sind.

Wenn Sie &paste wörtlich in Ihren bevorzugten E-Mail-Client kopieren, können sie möglicherweise das tun, was Sie erwarten. aber das wahrscheinlichste Verhalten ist, dass es sie alle gleich interpretiert. Wenn Sie also möchten, dass E-Mail-Adressen Benutzer eindeutig identifizieren, sollten Sie darauf bestehen, eine (genau eine) syntaktisch korrekte E-Mail-Adresse in das Registrierungsformular einzugeben.

Sie können bei der Registrierung nicht wirklich alle ungültigen E-Mail-Adressen ablehnen, da die E-Mail-Validierung recht komplex ist und eine perfekte Validierung unpraktisch ist. Und anstatt gültige Adressen abzulehnen, ist es besser, ungültige Adressen durchzulassen. Sie können höchstens Bestätigungscodes senden, um zu überprüfen, ob die Adresse tatsächlich vorhanden ist. Zu diesem Zeitpunkt ist der Benutzer jedoch bereits registriert und seine Daten in der Datenbank gespeichert.
mostlyinformed
2016-01-28 08:17:34 UTC
view on stackexchange narkive permalink

Es gibt definitiv ein Sicherheitsproblem, das von einem Anbieter herrührt, der die Registrierung nahezu identischer E-Mail-Adressen ermöglicht. Aber es ist nicht ganz das, was Ihre spezifischen Beispiele testen. Die Auswirkungen sind nicht unbedingt auf Benutzer des E-Mail-Dienstes beschränkt, sondern können sich allgemeiner auf jeden auswirken, der E-Mails von einem Benutzer dieses Dienstes empfängt. Die Gefahr, von der ich spreche, besteht darin, dass sich ein Benutzer des Dienstes an E-Mail-Empfänger ausgibt.

Um zu sehen, was ich meine, lassen Sie uns zunächst die verwirrenden (bereits gut diskutierten) Probleme beiseite legen, was eine gültige E-Mail-Adresse ist und was nicht und ob die ID eines Benutzers tatsächlich mit der externen E-Mail-Adresse des Benutzers übereinstimmt . Schauen wir uns stattdessen das folgende Szenario an:

Angreifer möchten, dass Malware auf Jane Smiths Computer implantiert wird. Der Angreifer kennt die E-Mail-Adresse von Jane Smith, weiß, dass Jane Smith eng mit John Anderson befreundet ist, und weiß, dass John Anderson eine aktive E-Mail-Adresse bei einem Webmail-Anbieter mail.com unter JohnAnderson@mail.com unterhält. Der Angreifer überprüft den Registrierungsprozess von mail.com und stellt erfreut fest, dass der Dienst es ihm ermöglicht, johnanderson@mail.com (ohne Großbuchstaben) als gültige Adresse zu registrieren. Der Angreifer legt seinen "Von" -Namen für das Konto als "John Anderson" fest und beginnt, eine E-Mail zum Speerfischen zu verfassen, die sich an Jane Smith richtet. Der Angreifer findet im Internet ein PDF-Dokument, das wie die Art von Element aussieht, die sowohl John Anderson als auch Jane Smith für beide Seiten interessant finden könnten, und verwendet dann SET, um einen PDF-Exploit und eine böswillige Nutzlast in dieses Dokument einzufügen.

Angreifer sendet die Nachricht. Am Ende von Jane Smith erhält sie eine E-Mail von "John Anderson" an die Adresse johnanderson@mail.com. Die Nachricht ist eine Weiterleitung eines PDF-Artikels mit einer Ein-Satz-Empfehlung von John: "Ich bin gerade damit fertig und denke, Sie werden es als lesenswert empfinden. Ich bin mir nicht sicher, ob ich allen Punkten des Autors zustimme, aber sehr, sehr interessant. "" Und weil mail.com kryptografisch bestätigt, dass die Nachricht tatsächlich von der angeblichen Adresse stammt, hat Jane Smiths E-Mail-Dienst die Nachricht in ihren Posteingang geleitet, anstatt sie in den Spam-Ordner zu werfen (wie es passieren könnte, wenn Attacker die Nachricht einfach fälscht) "von der Adresse).

Rhetorische Frage: Wie hoch ist die Wahrscheinlichkeit, dass Jane Smith diesen PDF-Anhang öffnet?

Antwort: ungefähr so ​​hoch wie für einen Speerfischangriff. (Zumindest ohne Zugang zum E-Mail-System ihres Arbeitgebers zu erhalten und sich als ihr Chef auszugeben, oder so ähnlich.)

Die Wahrscheinlichkeit, dass ein typischer Benutzer erkennt, dass JohnAnderson@mail.com, johnanderson @ mail.com oder sogar JAnderson@mail.com sind nicht die gleichen Absender sind ziemlich niedrig. (Wenn der Benutzer im Allgemeinen sehr sicherheitsbewusst ist, steigen offensichtlich die Erkennungswahrscheinlichkeiten. Ich vermute jedoch nicht so viel, wie manche vermuten.) Wenn die tatsächliche E-Mail-Adresse der realen Person, die der Angreifer zu verkörpern versucht, bereits vorhanden ist Im Adressbuch des Empfängers, bevor die E-Mail des Angreifers eintrifft, kann der Empfänger (möglicherweise), wenn er die Nachricht erhält, feststellen, dass der Absender dieser bestimmten Nachricht nicht dort ist, wie es der Empfänger erwarten würde . Und er oder sie könnte (könnte) das ein wenig verdächtig finden. Andererseits geht er oder sie eher davon aus, dass der Korrespondent aus irgendeinem Grund eine E-Mail von einer neuen, etwas anderen Adresse gesendet hat. Oder dass die Adressbuchfunktion seines E-Mail-Dienstes schwierig war. Oder ...

Sie verstehen: Diese Taktik des Identitätswechsels bei engen E-Mail-Adressen kann bei Phishing- / Speerfischangriffen sehr mächtig sein (wenn sie manchmal übersehen wird).

Was E-Mail-Anbieter tun können und wollen Um zu versuchen, sehr ähnliche Adressregistrierungen zu sperren, ist es eine schwierige Praxis, effektiv zu bekämpfen, selbst wenn ein E-Mail-Anbieter dies wünscht. Und wenn man bedenkt, dass ein bestimmter E-Mail-Anbieter es vorziehen würde, potenzielle Benutzer zu registrieren, "Entschuldigung, diese Adresse / Benutzer-ID ist bereits vergeben." So oft wie möglich (wenn sie diese Nachricht genug erhalten, geben sie möglicherweise einfach auf und prüfen, ob ein anderer E-Mail-Dienst einen ihrer gewünschten Namen frei hat) besteht der Anreiz für E-Mail-Dienste darin, die Registrierung praktisch jeder technisch gültigen E-Mail-Adresse (mit wenigen) zu ermöglichen Ausnahmen).

Max Apex
2016-01-28 08:30:56 UTC
view on stackexchange narkive permalink

Stimmen Sie allen anderen zu, dass die erste E-Mail-Adresse die einzig gültige ist. Ich möchte auch darauf hinweisen, dass es eine schlechte Praxis ist, zusätzliche Leerzeichen am Ende eines Anmeldenamens zuzulassen. Wenn ich das richtig verstehe, versuchen Sie, mögliche Ähnlichkeiten bei Benutzer- / Kundenanmeldungen am System herauszustellen.

Als Antwort auf Ihre Frage: "Sollte dies als Sicherheitsproblem angesehen werden?" Meine Antwort wäre "Nein" für diejenigen, die keine zusätzlichen Leerzeichen enthielten. Ansonsten ja ... aber hauptsächlich aus dem Grund unten.

Ihre Frage; "Kann jemand bestimmte Sicherheitsprobleme vorschlagen, zu denen dieses Setup führen könnte?" Auf den ersten Blick gibt es zwar möglicherweise ein paar mehr, als mir derzeit bekannt ist, aber das einzige, was ich in Betracht ziehen würde, ist eine Art Injektionsproblem. Dies hängt jedoch davon ab, wie die zusätzlichen Leerzeichen in Ihrer Codierung definiert sind. Wenn es gut genug verriegelt ist, sollte es kein Problem geben. Andererseits werden alle Arten von Techniken auf immer neue Weise eingesetzt. Also ist nichts wirklich jemals völlig sicher. Man kann also nur auf eine bessere Sicherheit hoffen und versuchen, diese zu erreichen.

Jason Napolitano
2016-01-28 07:45:02 UTC
view on stackexchange narkive permalink

Ich entwickle Webanwendungen, um meinen Lebensunterhalt zu verdienen, und das kann ich sagen. Es ist zwar kein "großes" Sicherheitsrisiko, aber es ist sicherlich eine schlampige Entwicklung, jemandem zu erlauben, sich bei test@test.com zu registrieren. und / oder 'test@test.com'.

Einfach, weil der Entwickler nicht die normalerweise minimale Zeit zum Hinzufügen der Eingabevalidierung benötigt hat. Ich meine sogar mit einfachem HTML5, wenn Sie eine

  <input type = "email" / >  

verwendet und eine der beiden zweiten E-Mail-Adressen ausprobiert haben Der Browser selbst würde Ihnen einen Fehler anzeigen, der besagt: "Keine gültige E-Mail-Adresse (zu diesem Zeitpunkt noch nicht getestet, aber ich gehe davon aus, dass HTML5 seit einiger Zeit Mainstream ist).

Aber als Entwickler sind Sie Niemals zulassen, dass sich jemand mit etwas in seiner E-Mail registriert, das nicht vorhanden sein sollte. Wie *, &, ^, $ usw. Es sollte (meiner Meinung nach) eine gültige alphanumerische E-Mail sein, die mit endet an @ Something.com / net / org usw.

Es ist sehr schlecht, die Eingabe von Formularen nicht ordnungsgemäß zu validieren. Dies gilt insbesondere dann, wenn es sich um potenzielle Kundendaten oder Kundendaten, Studentendaten und dergleichen handelt. Für Spam-Bots oder andere Formen böswilliger Bots / Menschen ist es sehr einfach, diesen Fehler zu finden, zu erkennen und die Lücke im Eingabeprozess auszunutzen. Dies kann ein Sicherheitsrisiko darstellen.

Nur meine zwei Cent aber. Hoffe es hilft.

*> Erlaube niemals jemandem, sich mit irgendetwas in seiner E-Mail zu registrieren, das nicht da sein sollte. * - ** Alle ** von "*, &, ^, $" sind im lokalen Teil einer E-Mail-Adresse gültig. Dann lehnen Sie auch IDN-Domänennamen und alle neuen gTLDs ab. Was ist, wenn ich `bob! @ 例 .xyz` habe? Das ist eine gültige Domain (übrigens ist sie verfügbar, wenn jemand möchte). Und eine gültige E-Mail-Adresse. Es wurde bereits zuvor diskutiert: Allgemeiner Konsens ist, dass der beste Weg, eine E-Mail-Adresse zu "validieren", darin besteht, zu versuchen, eine E-Mail an sie zu senden. Wenn sie durchkommt, ist die Adresse gültig. Oder verwenden Sie einen der richtigen kompatiblen Parser.
Sie sind also für die Websites verantwortlich, auf denen ich meine gültige ".name" -E-Mail-Adresse verwenden kann!


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...