The dots do matter: how to scam a Gmail user
jameshfisher.com
jameshfisher.com
If you are sending private transactional emails you need to verify accounts first.
If Netflix checks for + address duplicates, then that's not an issue. But you could still have the situation where someone signs up for, let's say, Hulu with your standard jameshfisher@gmail.com account. And then you could still end up paying if you forget whether you ever signed up for Hulu or not (maybe you were about to sign up and didn't, maybe you planned to in the future).
Email validation seems like the most important defense against this kind of thing. Dots mattering seems secondary.
I think it was a valid design decision at the time, before accounts on websites were widespread and a family might only have a single email address from their ISP.
The rise of free webmail accounts from Hotmail etc changed that, of course. And now we have a shared understanding of how accounts on websites should work. Neither of those were true in 1994.
The justification I heard was that someone would have a personal and business (or library) account to the same email, but it definitely persisted longer than you think.
I had to jump through some hoops to get one of the accounts to test something I worked on with them.
As you point out, the only way around this email verification.
Lack of validation means that Netflix is emailing someone asking them to pay for something, who may be totally different than the person getting that thing.
In general we do it in two steps:
1. User detail and password
2. E-mail confirmation
Instead, if we did
1. User details but NOT password
2. E-mail confirmation and subsequently entering the password on the page that was sent via e-mail.
Actually, I think the most optimal would be
1. Enter e-mail address only
2. E-mail confirmation and entering all details
This would simultaneously protect the person that initated account creation and the owner of the e-mail address from one-another.
1. Enter email address and some out-of-band information that only an existing-account-holder should know. Eg: a web portal for a utility company could ask for the account number and amount due from a recent bill.
2. Send confirmation email with a code/link.
3. After user enters a valid code, continue registration by gathering additional user details, password, and (usually) recovery Q&A.
The user account is not created until step 3; if they provide a fake email, it's as if the registration attempt never occurred. Absolutely no access is granted until after the final step.
The extra details in step #1 only works for website registration of a user that has a pre-existing relationship with the company, of course. For a new account, email address is all you should request at that point.
Please though, anybody implementing signups - if you are going to let people sign up without validating email addresses, put a “I didn’t sign up for this account” link in every email you send.
As a user, I cannot trust that a website gets the recovery flow right. Some websites will allow you to bypass email and password if you know the answer to the question. Because of that, I cannot put in the real answer, as that would be a massive security risk.
So I usually put in some random garbage, which means it's essentially a second password. Well, if I lost my first password, chances are good that I lost the second password as well.
So please, don't do security questions. Just send a password reset link by email.
If you're worried about stuff like payment info stored in the account, just ask me to re-enter those details after I changed my password.
1. User must enter their email address, and I send them an email with a recovery code.
2. After they enter the code, validating control of the email address, I show them the Question they chose and let them enter the answer.
3. After they enter the correct answer, I force them to update their password, and I send a confirmation email about the password update.
The emails all provide contact information and ask the user to get in touch if they didn't initiate any of these actions.
You're right about the answer being essentially a second password, and I treat it as such: only an encrypted hash is stored, type=password fields are used to enter it.
One of my clients did request getting rid of the Q&A, which I was able to do pretty easily because email verification step and reset code were already implemented.
On a personal note, I never use real answers for security questions. I use randomly generated strings, just like my passwords. If I can choose my own question I use a random string for that too.
The possible disadvantage I see with the third option however is that if you are at a service desk, and they are trying to sign you up for a membership of some sort, they can't complete your registration on the spot. You would have to go home and use the computer to complete your registration (unless you can use email client on your smartphone). Which means they may lose a possible member if they don't ensure that you finish the registration right there and then.
For that reason it may be better to collect the email address, all customer details, and the desired password (typed twice). Then when the confirmation link is sent, the confirmation link should take you to a link that asks you for your password again (once) before your account is validated. This ensures that the person at the service desk is really the person using the email account to do the validation. Mere access to the email account should not be enough. The main advantage here is to make sure as little work as possible is left to the customer to do by himself when he gets home. I agree that this is a lot more messy than Doug Webb's approach, because the only accounts in that approach are validated accounts.
However to the extent that one does not want to lose a possible new membership because someone went home and decided not to continue the process because it is a lot of work, it may be worth it.
Google follows the standard, Netflix does not.
- alert@example.com
- A.Lert@example.com
- Al.Ert@example.com
etc. were different.
Requiring them to know or check what's the "local control" policy at each site may be a stretch.
Principle of least surprise, etc.
No, Netflix's errors lie in (a) sending e-mail for any purpose other than account validation to an unvalidated e-mail address, and (b) including a pre-authenticated link in the e-mail that bypasses the normal account access controls. Pre-authenticated links are poor security practice in general; e-mail is notoriously insecure, and simply being able to read an e-mail sent to the address on file does not imply that the reader should have access to the account.
As for "dots don't matter", it can be argued that Google made some scams a bit easier by routing e-mails to non-canonical e-mail addresses to users who don't realize they even have such addresses; my own recommendation would have been to block registration of e-mails differing only in the number or placement of dots, but bounce any incoming mail where the "To:" field doesn't match the canonical form chosen at account creation time. However, since doing away with the "dots don't matter" policy would not significantly impact the more general issue of e-mail address aliasing, I do not believe that Google's policies are to blame for this particular security gap.
On some systems, anything ending in '@example.com' may be a single account.
It may be that defined address to account mappings exist on a domain and all other addresses map to a default account. It's common enough the hosting industry supports it and it has a name - a catchall email account.
Nobody sending mail to any of those addresses needs to know how many addresses map to the account associated with the address to which they are sending. It's an address, not an identifier. I would argue you don't have a reason nor a right to know the address to account mappings in my systems.
What a sender should reasonably expect is that someone who can receive mail delivered to a particular address is in charge of the email account to which that address maps. Sending a verification email to someone expecting to receive it is the way to validate the recipient is the intended recipient. That's it.
If I give you my phone number, do you need to know what other phone numbers will ring that phone or how many phones I answer in order to call me? Do I need to disclose all the possible places I might receive a package if I want one delivered to a single place? No.
Email addresses are addresses. That's all they are. Stop pretending they are something else, and this will become much clearer for you.
The RFC also notes that the local-part MAY be case-sensitive (i.e. it's up to the host).
Edit: the host SHOULD ignore case: "a host that expects to receive mail SHOULD avoid defining mailboxes where [...] Local-part is case-sensitive".
(Similarly, although the RFC does say hosts shouldn't have case-sensitive local-parts, it doesn't say that senders can assume that local-parts are case-insensitive.)
But I also see his point about how this can confuse users who don't realize this or are not using this behavior intentionally.
They absolutely could. Netflix can't assume they are or they aren't. Which means Netflix is doing the correct thing here. All they can know is that the emails are potentially different and so they should treat them as different emails.
The idea that you can tell whether two accounts are the same is questionable; netflix should not be relying on it.
Furthermore, the hack is possibly much less serious (but nonetheless conceivable) even without any canonicalization issues whatsoever. Apparently, a user can trick netflix into sending email to arbitrary email addresses. Sure, this is likely not to be an issue if the recipient doesn't have netflix in the first place - but if you try 1000 times (which spammers and phishers are wont to do) - you may well happen to hit a person that'll pay nonetheless - perhaps they forgot which email they used for netflix in the first place, or perhaps they share an email account, or perhaps the real owner is dead/on vacation/otherwise unavailable and somebody else is tending the account and thus more gullible than usual.
Netflix should never ask for money from random strangers without making 100% clear what the context of that request is.
(If indeed this article is accurate, because I wouldn't rule out the chance that the author made some oversight earlier).
Sad, really...
Both the dot behavior and the even more common ‘+’ feature are perfectly spec compliant.
H: hi
Mom
Is the same as H: hi Mom
Bets on how many http clients and servers get this right? Without losing speed?My guess is when you're not responsible for ensuring compatibility or having to deal with writing robust, fast, code, the temptation to be cute with your format overtakes things.
The issue is that such a spec is entirely unneeded and overly complicated. No benefit, only downsides. And for something as simple as basic parsing rules! Not even getting into anything that should be difficult.
Muhammad.(I am the greatest) Ali @(the)Vegas.WBA
(an example lifted directly from RFC-822, apparently written by a madman in love with 70s parser theory).That's not correct. You can reliably, completely validate all email addresses . . . by sending an email to them containing information that can be used to confirm the owner's identity. All together now: the MTA is the only source of "is it valid or not" for email addresses.
It'll resolve the same in DNS, but what the user typed will be encoded in E-Mail headers, and you could route differently depending on whether it's upper-case, mixed-case or whatever.
Server can decide for non-standard behavior, but that would be foolish.
If you're going to try to "validate" an email address, read the goddamn RFCs.
I describe this technique in my blog post[0]. I'll warn everyone now though, you'll probably want an email address for real people that you trust (like +friends@gmail.com). Also, you'll rarely have to email companies, but it is a pain if you need to do it from the +plus email.
[0]: http://iamqasimk.com/2016/10/16/absolutely-zero-email-spam/
This is absolutely true, and it's very painful. I sadly now recommend against using +plus addressing if there is a possibility you'll need to get in touch with support for a website for any reason, and I have a cautionary tale. So many websites have incredibly shitty "security features" and incredibly shitty code.
I had an account with a payment processing website with myname+website@mydomain.tld. They sent me an email requesting some additional info about a payment I was to receive in order for it to clear. I responded from myname@mydomain.tld. The automated system helpfully informed me that they can only accept email from the email in the account (argh). So I sigh, go over to the website, and change my email to myname@mydomain.tld. No luck---there's already an account with that email. OK, I might have created one before and don't remember. I try to login with this info, hoping I can delete that account, but can't seem to get the password right, and it's not saved anywhere. So I use the "Forgot Password" feature. Oops, it looks like I haven't finished the onboarding process with that account, and so I can't reset the password on it (who even thought of this?!). So I make an alias of website@mydomain.tld, change my email to that, and try responding from that alias. No luck. Turns out that you have to actually use the address they originally sent the email to. If you've changed it, oh, that's too bad---please open a support ticket with us.
It took around 7 days of back-and-forth and waiting for responses from support (lots of waiting!) to explain that I'm just trying to respond to an email they sent me, and a lot of canned responses from people completely misunderstanding what my problem is.
Would not recommend to anyone.
I've had fleeting thoughts of moving away, but am pretty used to the Google's spam filtering, labelling, search, and not having to care about space or managing my own kit.
Are you DIY'ing everything?
Which is odd, since there are some very, very old TLDs that are "long" ... I am thinking of .bitnet, .uucp and even the old .ussr[1] ...
[1] "Initially, before two-letter ccTLDs became standard, the Soviet Union was to receive a .ussr domain." (https://en.wikipedia.org/wiki/.su)
The other would be that spammers know that anything after a + is usually optional and strip it. Can't do that when the delimiter is a '.'
janedoe+acme@gmail.com resolves to janedoe@gmail.com, and the "+acme" is simply a useful bit of metadata for Jane to track the provenance of the sender's mailing list. the "+" and anything following it are ignored. It signifies an optional suffix.
Whereas janedoe.acme@gmail.com resolves to janedoeacme@gmail.com -- a completely different address than janedoe@gmail.com. The "." is simply ignored as if it weren't there, making j.anedoeacme and jane.doeacme and janedoe.acme equivalent.
Yeah this is specific to how gmail chooses to handle these spec-compliant-though-often-mishandled characters, but anyone who works with email professionally absolutely has to come to terms with how gmail works.
Or did the victim in this blogpost also verify their email at some point?
Netflix could be forgiven for thinking that updating payment details via email = verifying email. But if the victim had to respond to two emails, the first of which is a “verify email for your new account,” the phishing would be less believable.
Ultimately, the viability of a phishing scheme depends on the plausibility of receiving an email from a source. In this case, Netflix does send emails about updating your card details when a subscription charge fails, so plausibility of receiving the email from Netflix is high.
Another symptom that this is a bug with Netflix is that they granted the ability for one user to trigger a crafted email to another user.
Making users retype the email (instead of merely click on a link) might be better for exposing scams but requires more work on the user’s part.
+ Netflix can send an email about optionally(!) confirming a user's address.
+ Now, rather than disabling all features and slowing down on-boarding it is possible to update the communication towards unregistered users.
+ If an email has to be sent to an unconfirmed address, preceed it with a warning. If pietjepuk@gmail.com has been confirmed, but pietje.puk@gmail.com not, emails for the latter will have this warning automatically.
+ Remaining option: do you want to send regular safety requests to unconfirmed addresses as provider? Policy might differ. However, it is possible to use this email to tell the user about safety/security w.r.t. your system. I'd say yes.
I cannot imagine the strangeness that must occur for folks with more common name combinations, and the idea that e.mail@gmail.com is the same as email@gmail.com just seems wrong to me. As far as I know, all other email services and providers treat such accounts as unique, and it's a strange situation with very limited benefit to the end user. While I have made use of "the dots don't matter", it's always been as a way of circumventing account restrictions. The casual convenience of "dots not mattering" seems like it's overshadowed by the difficulty this can cause (as evidenced with the article and my own experience)
However, you should definitely not do these things to the address that you save for the purposes of sending email because then you risk improperly sending emails to the wrong person.
In general, validating the format of an email address is both extremely hard and pointless (since only a small portion of mis-entries will results in an invalid email address).
Pretty much the only way to validate an email address effectively is to verify it by sending an email to it and expecting the user to click an email.
This on service providers to implement secure access properly.
You could also make the case that Google should have a free library for most common languages that does this for you. It would improve the safety of their users immensely.
I may, however, be somewhat biased as I am the frequent recipient of email from weird services that some other chucklehead keeps signing up for even though he has yet to get past email verification as he doesn’t own the address.
Please don't. I don't want an official library to exist to facilitate people harvesting and selling my email address without me knowing the source of the leak.
> I may, however, be somewhat biased as I am the frequent recipient of email from weird services that some other chucklehead keeps signing up for even though he has yet to get past email verification as he doesn’t own the address.
And you have existing accounts with all of these services? Or how does this relate to service providers striping dots when checking uniqueness?
You should report those emails as spam. If you never verified the email address they have no right to continue to send emails to you.
Even if Google didn't provide this feature to their users (and it is a feature that I regularly use to track who leaks my email address and then auto block emails to that address), Netflix's approach of sending sensitive emails without verifying the email address is still prone to security problems. Many people have multiple email accounts, or aren't really aware which email account they used to sign up. Sending a "please update your billing info" without verifying the email account first is purely on Netflix.
I suppose you could solve the problem by grandfathering all existing aliases and whitelisting delivery of only those that received at least one email before the policy change. And also continuing to forbid registration of any aliases.
RFC-5321 states in section 2.3.11: ''The standard mailbox naming convention is defined to be "local-part@domain"; contemporary usage permits a much broader set of applications than simple "user names". Consequently, and due to a long history of problems when intermediate hosts have attempted to optimize transport by modifying them, the local-part MUST be interpreted and assigned semantics only by the host specified in the domain part of the address.'
Furthermore, it states in section 2.4: 'The local-part of a mailbox MUST BE treated as case sensitive. Therefore, SMTP implementations MUST take care to preserve the case of mailbox local-parts. In particular, for some hosts, the user "smith" is different from the user "Smith". However, exploiting the case sensitivity of mailbox local-parts impedes interoperability and is discouraged. Mailbox domains follow normal DNS rules and are hence not case sensitive.'
While you are pedantically correct, to me that reads, "don't try to change the case of the local portion of email addresses and apply no meaning to it." In other words, treat it "as-is" and assume nothing about it.
And we don't know when it will matter and when it won't matter, therefore we have to assume that it does matter unless we are sure it doesn't for our specific case.
No account-related emails (other than e-mail validation) should be sent to the e-mail address on file until it has been validated. Period.
PSN's emails don't have a "This is the wrong email" link like some services do, and the US support page link geo redirects to a UK 404 page. I had to go googling for an email address to complain to in order to remedy this.
But when there is a real consequence on a conversion funnel for requiring email address verification (say ecommerce), I imagine the obvious business decision is to do the exact opposite.
If the email address matters then validate it, if it doesn't need to be validated then don't ask for it.
Anyways, your response isn’t relevant in that I’m not suggesting an email address should (not) be verified. Rather, we’re discussing whether verifying identity needs to come before or after (or alongside) the transactional email - e.g. a receipt of purchase.
At the same time, validation and verification are not the same thing - and sometimes it’s not necessary to perform address/identity verification.
You cannot ask a whole ecosystem to change because of a feature/flaw on a central vendor. Where will you start? Force people to create accounts and verify emails when buying a one-off train ticket or ordering a pizza? What if people/market don't want this registration/activation crap for doing small utility stuff? For a payment, I have to authenticate with my payment provider, not to my email vendor. And payment providers do have delayed reconciliation issues that are sometimes notified back. And where would you stop? Validate each and every piece of info the user provides? Send a SMS verification code to the phone for same utility bill?
The conclusion is correct: Fix the vendor. I asked for a specific email address when I signed up. Similarly I should get emails only for "dots" that I have specifically opted in to. Deny receiving the email, show me a warning, don't allow it until I opt in. Anything else is just asking for trouble.
Eeeh, I just re-read RFC 2822. It explicitly states that the local-part of an address may contain any number of dots as long as they are separated by (if I'm reading this correctly) at least one character, and do not start with a dot.
There's nothing in there that states you should treat dotted and undotted variants of an address as the same address.
So, google isn't violating the specification, but they are extending it in an unexpected way. Google could extend it further by implementing a "giraffes don't matter" policy where any instances of the word "giraffe" are recursively snipped out, so that "test@example.com" is the same as "tegirgiraffeaffest@example.com", but if they did it would be a bit rich for them to expect the rest of the world to adapt code to that decision.
It might be reasonable for google to expect others to handle this "dots dont matter" policy if it was some kind of defacto standard, but AFAIK it's not. I would argue that this form of attack is uniquely enabled by the gmail devs making a decision to add additional behavior to an otherwise well-understood spec, and that it's not netflixes problem to solve that.
To be frank, netflix can't solve it. Asking netflix to change their code will only solve it for netflix, gmail users will still be "at risk" from, you know, potentially literally every other domain on the internet.
So I would say that this is a risk that gmail users need to be aware of and mitigate themselves, perhaps by taking such drastic steps as reading their bills before paying them.
Netflix second guessing the aliasing pattern is the bug
But at the same time, in a purely practical sense the mockup at the end of the article showing an explicit warning about email being sent to a non-canonical address is clearly excellent and should be implemented.
Indeed. You should always validate emails for accounts.
The amount of accounts I “have” and can’t cancel because of sites not doing any email-ownership validation is quite annoying.
> in a purely practical sense the mockup at the end of the article showing an explicit warning about email being sent to a non-canonical address is clearly excellent and should be implemented.
Gmail is doing something very nonstandard here and it’s absolutely their responsibility to inform users why they are getting emails on addresses (most?) users would never know about nor use.
I’d even say that having this feature on with infinite whitelisting by default is a security issue which should be resolved.
Preferably by only allowing explicitly whitelisted entries created by (the few) power users using this feature.
If instead Netflix had prompted him before allowing him to change the credit card, it would not have worked, because he wouldn't have known Eve's password and Eve wouldn't have known his.
All around very bad security design on Netflix's part.
For this scam to work the "Update your credit card" mail must contain a credential that allows you to update the scammer's card without changing or being challenged for their password. That doesn't seem great.
But I don't think a scam that relies on you resetting the password and not becoming suspicious is a bit of a stretch.
That said, I dislike Gmail's "the dots don't matter" since it really screws up calendar invitation handling, because calendars don't handle aliases well.
The attack goes like this:
* Hammer the Netflix signup form until you find a gmail.com address which is “already registered”. Let’s say you find the victim jameshfisher.
* Eve creates a Netflix account with address jameshfisher+netflix
* Sign up for free trial with a throwaway card number.
* After Netflix applies the “active card check”, Eve cancels the card.
* Wait for Netflix to bill the cancelled card. Then Netflix emails jameshfisher+netflix, going to jameshfisher's inbox, asking for a valid card.
* Hope Jim reads the email to jameshfisher+netflix, assumes it’s for his Netflix account backed by jameshfisher, then (follows a link in the email and) enters his card 1234.
* Eve changes the email for the Netflix account to eve@gmail.com, kicking Jim’s access to this account.
* Use Netflix free forever with Jim’s card 1234!
Either they're both security liabilities, and they should both be removed, or the problem lies elsewhere.
Have you ever tried it on Yahoo? They wouldn't let me set my email address to yahoo@mydomain a few years ago, claiming that the "email owner" had blocked this: https://www.dropbox.com/s/t213wkajdz5753k/yahoolies.png?dl=0
Dots-don't-matter, on the other hand, is very specific to Google, and they simply do matter in many other (if not all other) email providers. I think Netflix shouldn't be blamed for not accounting for provider-specific, non-standard equivalences.
Email address verification alone doesn't seem to fix all the erroneous aspects of this issue: Let's say Netflix was requesting verification, and then you receive the email for the +tagged mail address. Shouldn't it say that you already own a Netflix account, instead of asking for a verification at that point?
In short, Netflix cannot assume things after the '+' are irrelevant and Netflix absolutely cannot canonicalize random emails like that.
And domain aliasing is certainly out of scope of any email RFCs I saw. Netflix (and everyone else) may know about googlemail.com, but it's virtually impossible to know about all other cases.
The bug is right here - you shouldn't be able to determine if a user account already exists.
If an account already exists:
- Logon shouldn't tell you that you have an account and the password was wrong
- Registration should send a "looks like you already have an account" email to the recipient with "maybe this wasn't you" warning, and the web form shouldn't indicate anything out of the ordinary.
- Password reset should say "if an account exists, we just sent it an email"
If I only need these two pieces of information, neither of which is intended to be 'secret', then I might easily already have enough information to attempt this attack on (for example) my ex, or their new partner, or someone at either work or university that I dislike, even if I didn't have enough information to target a random person in another country.
It is good practice not to expose user's email addresses to attackers. It is breathtakingly bad practice to depend on those email addresses being secret.
* Gmail: Dots are cool.
* Hotmail: No capes! I mean dots. No dots!
* Multiplied by 8 hundred gazillion domains...
The right thing to do is ask for a password, but absent that, accounting for gmail addresses seems worthwhile. It would save them getting a thread like this on hn.
How will the user know that the registration failed and what to do about it?
If the user already exists the email will be a warning + a link to the password reset form
If the user does not exist, the email will be a link that confirms the ownership of the email address and the rest of the registration process.
An attacker trying to guess if an email is registered would not know, because the form does not give away that info.
As soon as you find a valid login, you can test all known passwords (plus variations) associated with it.
But since you are giving advice to the DESIGNER of the site, why not simply tell them not to use passwords? https://qbix.com/blog for example
It's a tradeoff between usability and security, and each site should make their own decision about what is right for them.
It obviously makes attacks like the one in the article easier, but there are other ways to mitigate that.
An example often given for when revealing an email is registered would definitely be bad is dating website and pornography websites - where identifying someone is a member alone could be embarrassing or compromising.
Outside of such scenarios, websites may decide the increased conversion from a more streamlined registration process and lower numbers of support requests for login issues outweigh the marginal security gains from hiding that information.
I know that there should be some kind of compromise since any security measure added to secure accounts will lead to some inconvenience for users.
If your goal to make sign in process as smooth for users as possible you may want introduce as little steps as possible between their landing on a page and "purchase".
But verification of email address should be kind of mandatory and happen before something important will be sent to this email.
Well that wont work. If you can't register with an email it's obviously because an account has already taken it.
The acceptibility of the '+' character is specified in RFC 5322 [1].
However, the behaviour where an address comprised of:
local-part "+" some-suffix "@" domain
is automatically routed to the address: local-part "@" domain
it certainly not part of the standard. I find it very useful myself and would be displeased to see that functionality removed, yet this is certainly not part of the standard.
I set up a firstname.lastname account for someone. On other services (e.g. iTunes) they've used that combo with and without dots.
It's a nightmare trying to help them with password resets. They're not an internet-savvy individual.
For example I'm regularly cc'd on a list of a South African film production company.
I often get invites to parties from a group of students in Georgia.
And, someone seems to use a dot alternative of my name to buy sex toys! And that is just a few!
I used to send back the emails saying "Hey you go the wrong person" until I realized it has no effect on these types of group emails.
The solution is simple: email provider should let user create additional identities with their knowledge. That is by default dot feature is not enabled but user should be able to go in and create alternative identities that they want explicitly.
Only services I've seen that handled this properly are gmail and snapchat which send a verification e-mail to the entered address (for gmail its the secondary) and there is a link that you can click indicating your e-mail should not be associated with this account.
Netflix should totally fix this, even my local public library asks for email verification after signing up.
I have a very common name and signed up for gmail address right at the start. I now receive tons of spam because there are people who sign up to the weirdest things with my gmail handle.
One's in Chile. I have almost no knowledge of Spanish. The other is in California.
Having experienced this:
Services need to email new email accounts they become aware of ASAP. They have literally zero UI available to me to notify them that this is an invalid email address. The very first interaction when a user registers an account with their email on the service needs to be "Welcome username to MyCompany.com! If you didn't create an account with MyCompany, click here to let us know and we'll remove the email address from this user's account!"
If Netflix does not do this, Netflix is doing it wrong. It also would solve your security issue - by immediately notifying the address that a new account has been created on them, it notifies the user to expect additional emails and allows them to take action immediately.
This also prevents another problem: What happens if somebody has already accidentally claimed my email address on a service I want to join? If you don't provide a way in the emails to say "that's not me", then I have no way to ever register for your service with my address.
These days I'll flag any email from a service as spam, no matter how well known, if there was no email verification step.
I have had to do this with some other services as well. Some services won't allow the + in gmail addresses, which is pretty annoying.
If a service starts recognising the dots don't matter and denying the plus symbol, there's a good chance I won't be able to register without obtaining a new email address.
I wouldn't mind but my name is really not that common -- my surname is uncommon enough for me not to have met another with that surname outside my family.
I personally don't believe the penalty for putting my email address in instead of yours (which could be very close) should be complete account hijack. Instead, I usually just filter the messages to trash.
I would much prefer to be able to click a link saying "I didn't expect this email." Very few services actually do this.
There will be some people who read the OP and see treating dots in email addresses where dots don't matter as another thing on their todo list for a signup form.
A more considered approach would be to think about how you handle emails. A lot of the time the email is the most important thing -- access to the email address is often the only credential you need to get into the account, so you want it to be correct before anybody spends time entering details.
You can make sure there are no mistakes by giving users a link to click within a window of time (e.g. 7 days), before they can enter any data associated with that account. Provide a link that says "nothing to do with me." Do not count the account as real until the link has been visited.
In the case of the linked article, Netflix asking for billing information before confirmation of email address is a clear example of a threat vector that has far more to do with Netflix prematurely pestering for payment than it does with Gmail aliasing email addresses.
The strangest by far though is the huge amount of gmail accounts created with my email as the backup. I have to assume that wording on some localisations indicate you need one so they mash the keys and pop in my gmail.
So I have hundreds of security alerts for recovery and notifications it has been set.
Funny old world.
They must be fairly disorganised as I keep getting emails about overdue library fees. No matter how many times I email these places, they never remove the email from their system. I'm hoping GDPR might give me a hand with that, though I'm doubtful if they're places like a US University.
Email validation is a must for all services, people make mistakes and clearly some people don't even know their own email address. This is a problem with both Google and Netflix. Netflix are being negligent and Google should retire this feature.
Then they can never access the account and continue to to use the service.
Where available, I will delete the account as well.
I found that if I don't do this, then I am just going to be receiving notification emails forever from that account.
Mind you, I’m saying you should have to give up your email because other people have trouble spelling, just stating how I’d handle it.
On in New York used by to confirm a doctors appointment (with some information on their condition). They also gave my address to their broker who sent an account summary. Bond portfolio in the millions.
Some lunch delivery server in Mumbai sends sends out emails to the address provided with no option for me to remove my address.
Another one or two in the UK who put me down for random stuff.
I just got one for a hotel booking. Google usefully added it to my calendar.
"My" X-Box live account seems to have gone.
I did enjoy repeatedly rejecting "parental" permission for some kid to join Club Penguin though.
I get multiple snail mail bills for DirecTv to people with different names but my address. One of them apparently didn't pay, so now I'm also getting collections letters addressed to them at my address.
I've also had someone in Oregon use my google voice number at some doctor's clinic, so I was getting voice mail transcriptions about appointments and certain tests that needed to be run.
Turns out lots of people just can't figure out their own unique ids, whether they're email, phone, or home address.
This happened to me - someone registered an Uber account with my email address. So I password reset it and now I have an Uber account for no good reason.
Also had someone use my email to sign up to an airline. After messing with the seat assignment and meal selection a few times it became old and customer service didnt know what to do, so I changed the associated email to 'helpdesk@airline.com'
Even funnier was how a gameshop website that I did have an account with actually changed my password and account details to be assigned to someone in another country. No notifications etc... So now there are a bunch of trade-in credits on my account, after changing it back to my own details.
Both of them allow infinite email addresses. The tag feature is not always available because app developers frequently don’t allow the plus character.
I would prefer that (1) a Netflix require email verification and (2) GMail describe in detail all of the email address features so app developers can explore the security issues around them.
I used to work for a company that dealt with these issues almost 10 years ago. It was also fun when Hotmail and Yahoo started recycling unused email addresses after ~6 months.
Should we stop using a feature because some buggy apps don’t support it?
Other users on my setup can use it, they just have to pick a different "something" if they want to use the same example.com as me.
edit: I was corrected in other comments that the + labeling is optional part of the standard.
Allowing + in emails is not an optional part of the standard.
> you should probably strip the + and everything after before checking for uniqueness.
No, you shouldn't. Different email providers use different characters to allow "subaddressing" or "tagging" and the presence of those characters doesn't mean that any subaddressing will be done.
Also, you'll have to elaborate on how the dot usage actually breaks the RFC. I assume it states that dots are just like any other allowable character, but that's not the same as actually breaking the RFC.
The dots do not matter, this does not enable a scam, and 99% of people replying to this seem to have utterly missed the point.
First off, let's be clear: The story is about someone who entered the wrong email. They should have entered "eve@foo.com" but actually entered (or later changed it to) "james@foo.com", which means that James got some emails from Netflix about Eve's account, incorrectly assumed they were about his account, reset the password on Eve's account, and came close to entering payment information into it.
All of which is fine; this is how email works, and how modern services (correctly) use email: By identifying an account with an email address, and assuming that if you have control of the email address you should have control of the associated accounts.
The author is weirdly focused on the fact that gmail allows some flexibility in how the local part of the address is interpreted, but this is a feature of most email providers (yahoo, outlook.com, protonmail, and fastmail all do it), and is a feature offered by qmail, courier, and postix as well. It's also explicitly required by the relevant RFCs. And...
...it's utterly unrelated to the issue at hand. This isn't about how the local part is interpreted; it's about someone typing the wrong address that they don't control when they sign up for an account. Sub-addressing and the details of how some random mail server normalises the local part is not what this is about. If gmail bounces all emails with "incorrect" periods, it might have stopped this particular incident, but it doesn't solve the issue which is about people giving out your address instead of their own when creating an account, which is the actual issue here.
Further, the proposed scam, if it works, only works because (allegedly) Netflix lets you change an account email without verifying that you know the current password. This violates every tenant of account security; because email is used to prove you control an account (allowing, eg, password resets), changing the email obviously requires you to prove you control the account. You have to ask for the password! I rather suspect Netflix does, but if not, this is the core issue.
The author is writing about getting a Netflix account funded by causing Netflix to send an email to a Gmail account holder. For all intents and purposes this is a legitimate email originating from Netflix. It is not about someone surreptitiously transferring control of another person's Netflix account to himself.
That's exactly what we're talking about. Keep in mind that by the end of the proposed "scam", there are two accounts, both registered to James' email address, and with passwords that only James knows. He has control over both accounts.
Any attempt to profit from the scam would require surreptitiously transferring one of the two accounts James controls to someone else, which 1) may not even be possible 2) doesn't have anything to do with Gmail's normalisation of the local part of email addresses.
If there's an attack here, it's about Netflix not stopping an attempt at gaining control of an account when you do not control its email address and do not know the password.
The scam is operating on the chance that James does not realize that it is someone else's Netflix account and goes ahead to add funds to it. The other person then logs in before James realizes his mistake and changes the recovery email to something else.
Right, but keep in mind that he's already changed the password.
> The other person then logs in
How? They don't know the new password.
The timing doesn't seem to work; James can't add funds without resetting the password, and Eve can't hijack it without knowing the new password. There's a potential loophole if Netflix 1) doesn't invalidate the old session when the password changes and 2) doesn't require a user to provide the current password for changing the email but as far as I'm aware, that isn't the case. (It certainly shouldn't be! And if it is, then that's the real issue here...)
In order for the scam to work, either he has to be able to change the credit card details without knowing or changing the password, or the scammer has to be able to access the account without access to the password or e-mail address. Both of these are serious security issues, but not what the article was about.
If the other person had tried to use the author's email address written exactly the same as his existing Netflix account, Netflix wouldn't have let the other person create a new account, but would instead have made them log into the existing account. The fact that Netflix and Gmail don't have the same notion of "existing account" IS the key issue here.
> the proposed scam, if it works, only works because (allegedly) Netflix lets you change an account email without verifying that you know the current password
Well, Eve knows the account's password at the time she changes the account email, the article explicitly mentions this: "Eve has access to account N2 because she set its password when signing up".
But this does touch on an interesting point. If Netflix required him to enter his password before he could update the credit card from Eve's to his own, then to go through with it he'd have to reset the password, so even if he went through with it and double-paid at least Eve wouldn't be able to reap the benefit of a free Netflix account, which is at least a less severe security issue than the current situation.
Right, but read the rest of the sentence:
> I also have access to the account because I own james.hfisher@gmail.com, and so I can follow the password reset process for this account. I did so.
So at a minimum, Eve did not know the password at the time they would have (hypothetically) tried to change the email, as James says he had reset the password. And at least based on my interpretation of the linked article, this is unavoidable; you can't manipulate payment details without being logged into an account, and the only way to log into his bogus second account would be via a password reset.
If that's true, your proposal is in fact the situation: You do have to reset the password, and there's no benefit to the "scammer"; at most you can trick someone into paying for two different Netflix accounts. And this does seem to be true; he provides the link as https://www.netflix.com/simplemember/editcredit?locale=en-GB which doesn't contain an account identifier and does (of course) require authentication.
> The fact that Netflix and Gmail don't have the same notion of "existing account" IS the key issue here.
Well, first it's worth noting that Gmail is following the relevant RFC here (as per RFC 5321 2.3.11 Mailbox and Address, "...the local-part MUST be interpreted and assigned semantics only by the host specified in the domain of the address."), so if Netflix is relying on the semantics of the local-part then they're simply in error. And second even without this there's a lot of ways of getting a plausible looking phishing email into someone's inbox. If Netflix security relies on targets not seeing a malicious email, then they've done something terrible.
That is not the correct way to use e-mail. Unless you're encrypting all your customer messages with S/MIME or PGP, a number of people have access to the content other than the account holder. This includes the e-mail provider, the operators of any servers the message happened to pass through, and of course anyone who happened to hack them, plus anyone who can listen in on the links between the mail servers in the event that those aren't encrypted. None of these people should have control over the associated accounts just because they have the technical ability to read e-mails send to the address on file.
> If gmail bounces all emails with "incorrect" periods, it might have stopped this particular incident, but it doesn't solve the issue which is about people giving out your address instead of their own when creating an account, which is the actual issue here.
The actual issue is more nuanced than that. This isn't just about signing up for a service with someone else's address, it's about signing up for a service the target already subscribes to using an alternate e-mail address routed to the same account. Now, it is absolutely true that getting rid of the "dots don't matter" policy would not prevent this from happening, since there are other ways of aliasing e-mail accounts such as "+labels". However, in the absence of aliasing this issue wouldn't exist, since someone who doesn't subscribe to Netflix would (probably) not fall for a request to update their payment information, and the scammer couldn't create a new account with exactly the same e-mail address as an existing subscriber.
> Further, the proposed scam, if it works, only works because (allegedly) Netflix lets you change an account email without verifying that you know the current password.
The scam does not require the ability to change the e-mail address. That just makes it harder for the target to regain control, but ultimately the scheme depends on the target remaining blissfully unaware that they're paying for someone else's account. If the target becomes aware of what is going on then they can just dispute the charges with their card issuer; they don't need access to the Netflix account for that.
No, this scam only works because Netflix does not require validation of the e-mail address on file before sending account-related e-mails to that address. This is the core issue. The first e-mail you get related to an account should always be the notice that a new account is being created, with active effort required on the recipient's part before the address is considered valid.
first.mid.last, firstmidlast, firstmid.last
Any others bounce or display the warning header suggested in the article.
Would be nice to be able to easily reply as any of those combinations and default to the one it was sent to (dots, +'s, and domain).
I also have to put forward that if you have trouble telling people your email address then you probably chose a bad address. You didn't have to put in the dots, and he isn't actually suggesting that they get rid of them now anyway. I point this out only because it means your use case doesn't mean it's an "important and useful feature".
I’m now in complete control of someone else’s commercial business hvac account because of precisely this problem. And the worse part is that I don’t know the correct email to get ahold of this person. They’ve set up library appointments, I received a receipt for a down payment on a lake house, basically most of this persons recent attempt to start a commercial business has been emailed to me.
I don’t want this email google. Please give us the option to make it stop.
Sometimes I'll text the person and complement them on their choice of purchases- yesterday it was a stunningly large Domino's pizza order.
My comedy ownership of someone else's identity is a Staples account. Presumably someone in New York with a similar name had a store person look up their Staples account, which was actually my Staples account, and associate their business name with it. Their business name now appears on mailings I get from Staples and sometimes I get sample pens and the like branded with their business name.
This person that recently started using this email is using the same name but with no dot.
first.lastname@gmail is what I use, and now I’m getting a bunch for firstlastname@gmail.
Some of these emails look pretty important too, if I had malicious intent, I could probably ruin and or steal this persons identity and or business with the specific mail that I’ve received recently.
I’m really amazed at the lack of confirmation of emails before sending things like your HVAC business license, or city contracting permits, that have other people’s identifying information in them too.
I agree that sending verification emails should be the standard. But if I can’t bounce the emails then there isn’t even the slightest way to inform the sending service that there might be a problem.
I also combat with the same problem from time to time.
But that has absolutely nothing to do with the dots. Indeed, almost every comment about this has nothing to do with the dots, including the submission.
Someone entered the wrong email address, and in the process got yours. It isn't like the dotted or undotted one is legitimately theirs -- it can't possibly be -- but that they forgot a middle initial or something of the sort.
I've written about this before-
https://dennisforbes.ca/index.php/2016/04/08/email-addresses...
-but the issue is with email itself, and the notion that once someone enters an email address it is authoritative. Like you I get a tonne of email for other people. I get travel tickets. I get room reward points. I get calendar events for car service in England. The dots aren't the reason.
But the scam described by the author works because he victim already has an account registered with their Gmail address.
The warning could be a good idea
also I wish the email address of both the recipient and emitter were shown in a better in Gmail.
But at the same time I still wish Gmail would stop you from receiving emails on addresses other than the one you created yourself (ie by treating dots like any other character). It'd save me from getting several misdirected emails per day.
It's true that all these misdirected emails come down to people misremembering their addresses, but I think you're overlooking an important class of such misremembering (which can be addressed on its own).
I have a dot in my actual email address. There are several people who have a similar address who must be forgetting that their email address actually contains an additional initial or number. However some of these people do not have the dot in their actual email address.
I.e my email address: this.that@gmail.com
The other email addresses: thisnthat@gmail.com, thisthat7@gmail.com, etc
...where the other addresses get misremembered as: thisthat@gmail.com
I get these peoples' emails, but that could be easily avoided if Gmail took note of the dots.
Something like this: https://stackoverflow.com/questions/24540743/how-to-spam-fil...
I dont know for sure if that's how the filter would behave, though.
People just mistype addresses and vendors don't verify
You can (should) also mark the messages as spam because whoever accepted that address without verifying it shouldn’t be sending emails to it.
It would be nice if gmail's filters had "bounce" and/or "report as spam" as available actions.
I'm not sure of the legality of that process, and you could argue the morality of it, but doing this once to one of their less important accounts (library?) might be a good way to get enough information to contact them properly.
[1] It wasn't technically the same, because the typo was done by a phone carrier agent, not the person whose account they were setting up. My email is firstname.unrelatedstring, theirs was firstname.theirmiddlename.lastname, but my unrelated string happens to be their middle name.
They can work with customer service to get the email corrected.
This is a bizarre quote. The fact that "Netflix should verify the email address on sign up" would not "force Netflix and every other website to have insider knowledge of Gmail’s canonicalization algorithm".
- Some would say that Netflix should verify the email address on sign up, but there's no obvious attack that this mitigates. Using someone else's address on signup only cedes account control to them.
- Others would say that Netflix should disallow the registration of james.hfisher@gmail.com when a Netflix account already existed for jameshfisher@gmail.com. But this would force Netflix and every other website to have insider knowledge of Gmail’s canonicalization algorithm.
Someone could carry out this exact attack but without dots. The attacker creates an account, associates it with your email, and hopes you put your credit card info into the account.
How come the attacker didn't "[cede] account control to [you]" when the attacker put your email into the attacker's account? The control issue seems the same regardless of how dots are treated.
Many websites allow multiple accounts to have the same email address.
If any of them had shared my name, the effect would have been just the same as in your case despite there being no canonicalization issues. Likewise would you really have been suspicious about seeing the notification come in for e.g. jamesfisher+netflix@gmail.com? Who can remember exactly what services they used a +something for?
No. This hole is totally on Netflix. It's a total shitshow, especially for a company that loves to brag so much about how they only hire the best technical people. No. Either they don't hire the best, or they let some kind of piece of growth hackers actually run the show.
I can't really imagine that there are that many blackhats trying to get free Netflix accounts when torrents or Usenet gets you more content anyway.
And while yes, there is some friction getting torrents, it's not nearly as much as trying to phish multiple people in hopes that they will pay for your account.
- When these accounts were active, I'd keep getting email from Netflix that I could not stop receiving.
- In the first two cases, I could have done a password reset on the accounts and just started using them. The original owner would have to continue paying for it, since they'd have no way to disassociate the CC from the account.
- In the third case the user didn't get the account back at all after forgetting their password (maybe no recovery phone number?). They lost all their viewing history and probably also ended up paying Netflix for service they had no way of using.
From a technical perspective, this email handling is total garbage. The only persons winning are on growth hacker scumbags who get to write slides every quarter about how they lose no customers in the email verification part of the signup funnel.
Anyone who owns fmail.com hmail.com gmil.com gmai.com can easily steal account details an personal information from people who have a typo when entering their email address if you don't verify the email address before sending that personal information.
If you are not verifying an email address before sending sensitive content or allowing an account to access sensitive information, you are doing security wrong.
edit: typo spelling typo...
(I'm guessing they did A/B testing and found that having to log into your account lost them some percentage of people. If that's the case, Netflix are clearly putting their retention rate ahead of security)
There's probably a not insignificant number of people who are happily using a dotted variation of their gmail account. Putting a big warning above the email wouldn't make them very happy.
Edit: Or at least invalidate all sessions initiated using the old password if you have that tracked.
Doesn't with Google. They display a prompt and let you select which sessions to expire.
What is the difference between dots and pluses? They both have the same flaw: to Netflix they will both be distinct addresses.
It's harder to accidentally type "bobfoo+abc", and it's harder to miss the difference if you're on the receiving end.
If someone made that typo (for a gmail address) everything would be fine, because both emails would go to the same correct person. There needs to be some additional typo for it to go to a different person.
EDIT: huh, turns out RFC 5233 covers this. TIL. Thanks, ipsin
Had an acquaintance who was signed up to a popular email service with "a.b." (their initials) for years until they changed their underlying platform, after which they actually were very sorry to let him know that they could not support his strange email address any more and terminated the account.
"Read the Friendly Standard", I know, but dots are much less likely to be rejected.
Half the time I think it's because the site wants it to be less obvious when their database is compromised.
https://community.developer.authorize.net/t5/Integration-and...
When I got my gmail account, Google gave me a "googlemail.com" address, due to a pre-existing trademark in Europe. These days the "gmail.com" suffix works for my account, but I've already set everything up with the "googlemail.com" form and saw no reason to switch. Sometime in 2016, someone started using the "gmail.com" version to sign up for stuff, and I repeatedly nearly fell for this exact problem... It's made more difficult by the fact that Google clearly _want_ me to use the "gmail.com" form, and refer to it by that address in many places, despite me opting to use the long form in settings.
I don't think the person using my email address is being malicious, I think it's by mistake, but I have no means to contact him to fix the problem.
Sure, you end up paying for an account you don't use, but nobody gains from that (other than netflix). It certainly is an issue that can easily be fixed by netflix validating email addresses, but I don't see any incentive for scammers abusing it.
Getting rid of dots only solves one tiny portion of this problem which would be completely solved if Netflix and others required verification. Gmail cannot stop people from using my email address to sign up for things, but Nextlix et al. can do that and protect their users privacy and personal info with one single email.
A better example is that a few years ago Turbo Tax emailed me personal details and gave me access to someone else's taxes because they didn't require verification. That is insane (and I believe/hope was since fixed)!
and no, it should never "know about" the dot feature in gmail. that is working as intended all around. it's simply that netflix put user bounce rate metric in front of protecting users from scam. plain and simple.
The only sane way to handle this is email-based confirmation.
Companies who do not send "you've created an account! Click here if you didn't!" emails can die in a fire.
They allow any idiot to register my gmail address as their "alternative recovery email" without confirmation. And then from time to time i get a dozen "recover your account" emails from those accounts.
Don’t know from where this is coming from but there’s no such _should be_ rule, there never was.
As a matter of fact an email server can have any aliasing setup it wants. FastMail for example does sub-domain aliasing, which is awesome because I can use an unique email address for any service I sign up to.
Any email server or service worth its salt allows aliases. Which aren’t hard to guess for a determined attacker either.
Netflix has no excuse ;-)
You actually mean: Too many sites were coded by incompetent people and have broken input validation.
For example: meetup.com
On an email with a plus in it, they complain with this exact error message: "This isn't a valid email address".
I contacted their support a year ago. They replied that they've passed along my "feedback". Nothing happened since then.
That said, plus aliasing is sort of a standard. And spammers could eliminate anything after the plus, its usage being pretty obvious, so you can't rely on it for tracing spam. Eliminating the aliasing is much trickier to do with sub-domains, as it's not at all clear when aliasing is used or not. And some email services support custom email routing based on your own regular expressions (e.g. GSuite) so you can come up with your own weird scheme.
Plus aliasing is only fine when you don't have control for doing something better, more opaque. Like when you have a work or a @gmail.com address.
I don't see any excuse to not confirm an email address, honestly.
1. In order to provide the payment details, they had to do a password reset to the dot-email address. I can only assume that locks out 'eve' in this case, but I suspect it doesn't force a re-login on all devices.
2. When 'eve' signed up to the dot-email address, surely Netflix would have sent a welcome email thanking them for starting a trial. So in that case, I can't see how it would have gone completely undetected up to this point.
I personally feel that Netflix should validate the email address on registration. Otherwise people who genuinely sign up with a typo in their address may lose access to it forever.
This is beyond bizarre. I have at least 2 accounts with the same email and the way into it is by knowing what password leads to which one.
I have yet to see what happens if I try to set both accounts to the same password.
I'm trying to think of a simple way to screenshot / show this without leaking person info...
However it's implemented, this is a well-known, long-standing "feature" of Amazon. I think it happened to me once when I first tried to sign up for AWS, and accidentally ended up with a second Amazon account. See http://adaptivepath.org/ideas/the-woes-of-multiple-accounts/
Pretty sure that is all it takes.
Source: I used to work at Amazon, though never on any systems that would be directly involved in this.
While I, like many in the comments, agree that Netflix needs to validate the email account, my hunch is this trick would still be quite effective with that.
The real issue is that old account names are actually case sensitive too. Starting a few years ago Google normalized all account creation to lowercase, but existing case sensitive accounts remain. We implemented OAuth, normalizing accounts to lowercase in our db and everything was fine for years until we ran across a user who's account legit was FirstLast@ and would only auth that way.
To test a theory I told her to login as both using the same password. Both go to her gmail account. Logging in without the dot shows the address as still firstname.lastname.
My assumption at the time is during signup Google strips the dot and it's merely there for cosmetic purposes. The RFCs should treat the dots as separate accounts but Google does not.
Just to verify this is still happening, I also have a first.last account and signed in without the dot. When I got into my account it says 'signed in as first.last'.
This may affect accounts created up to a certain point in time though as both accounts are almost as old as gmail. I got invited back during the early days and invited my then girlfriend at the time (now my wife). If this has changed over time it's become way more confusing.
Now admittedly its dense to read, but the two sections that are relevant are;
https://tools.ietf.org/html/rfc2822#section-3.2.4 & https://tools.ietf.org/html/rfc2822#section-3.4.1
3.2.4 explains what a dot-atom can be made up of 3.4.1 explains what can be accepted in the make up of an address.
I'll always prefer vendors operating within spec even if the spec is a dense as fuck.
1. Canonicalize email addresses
Whether or not dots or +asdf is considered okay, an email address used for identification needs to be canonicalized in order to avoid duplicate sign-ups.
2. Never leak information through sign-up forms
A login attempt either succeeds or fails. That is all the user should know. Telling the user if the attempted email address exists or does not exist is a privacy breach and a security breach as demonstrated in this article.
3. Never assume ownership of an email address until it is verified
Some services verify email addresses at some point in the user flow, some never verify, and few verify at the right point. The best sign-up flow I've seen is Slack where setting a password is part of the email verification flow and a user cannot set a password and own the account until they have verified the email address.
Thus, sending transactional emails beyond verify your email or reset your password before the email address has been verified opens one up to security breaches as in the case of Netflix.
Since it isn't a standard or norm, how would that work? These are gmail exclusive features, and other services have other unique features.
1. Netflix shouldn't have to care about the internal implementation of Gmail addresses. It's perfectly fine to treat ab@service.com and a.b@service.com as separate accounts.
2. If you attempt to sign up for Netflix with an email address which already exists in their system and they tell you that, it isn't a security or privacy breach. There is absolutely no other way to handle the situation.
Agree with the third one though. A "click here to activate" email absolutely needs to be standard in every sign-up flow.
As for the second point, I consider it a privacy breach if a service publicly associates my email address with their service without my consent. Sign-up forms do this when giving different responses when an email address is registered vs not registered.
As for how to handle it, if a user signs up with a new email address, you send them an email to verify their email address and instruct them to check their email. Similarly, if a user attempts to sign up with an already registered email address, you send them an email letting them know they already have an account and instruct them to check their email, which will provide them with a link to login.
In the latter case, if they enter the correct password, you can just directly tell the user they already have an account, as they've proven their identity.
The 'user' part of an email address (before the @) has a maximum length of 64 characters. If n is the number of non-dot characters in the user part, then only (64 - n) dots can be added to the address for it to still be valid.
The valid email addresses for that user are a subset of all 64 character combinations possible with dots, alphanumeric chars, _, and a finite set of characters that I don't remember right now. That is a finite set, therefore the subset is also finite.
On the other hand, e-mail verification should be done eventually to protect Eve from James to recovering her account in case Eve had a typo unintentionally.
Sure, Netflix should have done things differently, and technically what Google is doing is not wrong, but if we look back at reality for a second here, it is simply the case that many services (and users) make the assumption that only one e-mail address leads to a user's inbox.
This breaks this paradigm and as a result does cause realistic security issues, whether it requires a Netflix to make a mistake, too, or not.
I wonder if others feel that it is ethical or unethical to log into other people's accounts in this situation.
I get lots of emails resulting from people typo'ing my email address instead of theirs—and the unsubscribe links are often hidden behind a login page. But I feel uncomfortable signing in using a "forgot password" link into an account that I know isn't mine. At the end of the day, I usually just create (yet another) email filter to automatically delete these emails (marking them as spam doesn't train the spam filters in my experience).
I'd be interested to know what others think of the ethics of this, or if there are other workarounds.
Curious how often this happens.
Do we have a word to describe frustrations caused as a byproduct of other people's use of technology? I wonder if the Japanese do.
I also get regularly added to conversations with other people who think I'm someone else. Again and again I've had to try and explain that they've got the wrong email address, but it happens so often now, I just don't bother now and ignore the emails.
It’s never happened to me with a paid account, but if it did, I’d cancel it.
I'm pretty sure that legally it's problematic as well.
My rule is that I'm willing to "steal" the account and cancel it or change the email for "unimportant" services, like dating sites. For financial institutions, I contact the institution instead. (My email has gotten associated with at least two bank accounts that aren't mine.)
My other gmail account is namesurname@gmail.com and i receive about 6-7 of different peoples mail with the same name surname combination. It happened in hotmail also btw.
I got phone bills, cargo shipment details, hospital working schedule documents, private messages from a marriage social network kind of a site. I can easily login to the site with link in the mail and can read all his really private messages, flirting with the ladies.
I called the phone bill guy, his parents answered it a little panicking, i explained them the situation. But the mails keep coming, so i call the phone company. They said they take action immediately but nothing changed.
I called the cargo guy tell him his cargo is on his way and who i am. He surprised and confused like others when he heard a guy with the same name surname called him.
I called the hospital, someone else answered. Explain him the situation to let him know. He was surprised and asked me if i have the last months schedule pdf because it got lost or something.
I couldn't reach the old womanizer guy, contact the site and mails stopped.
I'm not using the dot feature myself but somethings not working correctly with it i guess. In this particular case i think Netflix should validate the e-mail addreses.
> The only clue in the screenshot above is that the interface says “to james.hfisher”, instead of “to me”.
I just tested it, and I'm not even getting that clue. It says "to me", and it's only when I click on the little arrow that it says "(Yes, this is you.) Learn more". But you'd have to be suspicious in the first place to click the arrow...
I find this to be a very poor idea indeed, and hiding the clue is poor design to boot.
1) mentions the dots DO matter, and calls for they're removal as a feature, but makes no mention of the ability to add '+{whatever}' to an email providing the exact same attack vector
2) states this is a gmail issue, when any email provider could do the exact same thing and have it be a problem
3) states the Netflix not verifying the email before payment is somehow not a fix because "using someone else’s address on signup only cedes control of the account to that person", when the receiver has full ability to _not_ confirm the phishing account.
Netflix is what, just supposed to know and stay up to date with all possible email providers various email mappings? No, rather, they should verify the email address before payment. Granted, the onus is on the user to notice a new 'Confirm your email with Netflix' email. Maybe Netflix could make it really obvious that the email is for a _new_ account? Defense against phishing attacks will always rely on some amount of intelligent user behaviour, if a user is going not going to read an email and blindly click-though I'm not sure there's much that can be done anyway.
(Some of us use the dots to trick some sites into using a nonstandard email, rather like the username+netflix@gmail trick, so you can see who sold your email to the viagra trolls. Some sites reject + in emails, making the dots v handy.)
When I asked Netflix's support to remove the association of that account with my e-mail address, they replied I had to change the card details with mine, because it was like I was "stealing" the scammer account credit card. I replied I would not add my credit card details. The operator then wrote me he was going to invalidate my e-mail address so that the user that would log in, had to change it. And that it should solve my issue.
The problem, for me, is not the Gmail feature. Nor the dots, neither the plus addressing. It's a lack of the validation systems. Just verify the e-mail ownership before allowing any interaction.
I also received a photo of his passport once. Using that, a friend in the UK was able to look up his parent’s home address. I phoned them up and left a message asking that he stop using my email address.
He’s still using it, so I eventually set up a Gmail filter to shunt his likely emails into a separate folder. I’ve changed my password since all this happened, and I don’t get why he still uses my address.
I get a lot of emails for other Evans this way. I've had wedding invitations, been CC'd in on rental dispute discussions and all sorts of stuff because of this assumption.
The most recent was an invitation to edit a 5th grade basketball roster google doc. So at the top of the document I wrote a politely worded rant on the subject of email addresses. At the same time, the original author was editing the document and trying to delete my rant as I was typing it, so we had a little battle going on for a few minutes. I reckon that's one person who will never do that again.
When a company that I worked for went under, I managed to catch their falling domain name. I setup catch-all which was mostly boring emails of ex emps Fecabook notifications and some bills etc, BUT the emails for the owners and few top execs were very interesting. In that sense that 3 years later I decided to build exactly the same business (well, one of a few)
Now it is running mostly on autopilot with $2.5MM annul revenue. Many times it obviously is what you don't know that is stopping you from entering the market. Everything I learnt by reading my ex bosses emails in few years allowed me to setup somewhat successful business, all on the side.
Instagram had a link at the bottom of the mail called ‘remove your email from this account’. I click it and it says it’s not a valid link...
I don’t want this from gmail. I want the address I signed up with. It should be simple. It’s hard to explain to others why the dots don’t matter.
The idea that a company should only accept one account per email address is bullshit (it a contact address, not an identity), and if they don't do that, any of that "don't allow any aliases for email addresses" on the part of the email provider would be completely pointless anyway. You simply don't use context delivered by email as a starting point for disclosing credentials, and you have solved all (email) phishing attacks.
Also, a few times when I've signed up with "name+service@gmail.com", I've then failed to unsubscribe because their unsubscribe form didn't accept the + but the subscription form did.
They might realize the "+site" and not the dots, but your point was about ability not awareness. ;)
But all right, '+site' is more well known, so it does definitely work better.
I get so many emails that aren’t for me, more than one person out there thinks they have firstlast@gmail.com
I don't understand this though, how do they think they have an email address if they were never able to create it or sign into it? I think more likely they forgot the number at the end or something like that.
My problem was that I used a "first.last+website@gmail.com" format when I signed up for a website and some time later I needed to contact customer support by e-mail. They had no record of my account because my e-mail came from "first.last@gmail.com" and not "first.last+website@gmail.com".
It turns out there is a way to send mail from "first.last+website@gmail.com" but I don't think it existed at the time.
Those are three different addresses. On some systems they may be three different accounts. On others they may be one account. On some systems, anything ending in '@example.com' may be a single account.
It may be that defined address to account mappings exist on a domain and all other addresses map to a default account. It's common enough the hosting industry supports it and it has a name - a catchall email account.
Nobody sending mail to any of those addresses needs to know how many addresses map to the account associated with the address to which they are sending. It's an address, not an identifier. I would argue you don't have a reason nor a right to know the address to account mappings in my systems.
What a sender should reasonably expect is that someone who can receive mail delivered to a particular address is in charge of the email account to which that address maps. Sending a verification email to someone expecting to receive it is the way to validate the recipient is the intended recipient. That's it.
If I give you my phone number, do you need to know what other phone numbers will ring that phone or how many phones I answer in order to call me? Do I need to disclose all the possible places I might receive a package if I want one delivered to a single place? No.
Email addresses are addresses. That's all they are. Stop pretending they are something else, and this will become much clearer for you.
And if he knows them in person, why hasn't either of them switched email addresses already (within the last 10 years)? Something doesn't add up here.
Let's say that James Fisher also owns jameshfisher@yahoo.com. Eve finds that jameshfisher@gmail.com has a Netflix account, so she registers a new account with jameshfisher@yahoo.com. The scam proceeds the same way; if James registered for Netflix a while ago, he may not remember whether he registered with his Gmail address or with his Yahoo one (he has some services registered with the one, and some with the other). If he set up forwarding from his Yahoo account to his Gmail one, or if he's using a mail client, he may not even notice that the message went to a different address.
So the solution in this case is for Google to disallow registering jameshfisher@gmail.com if jameshfisher@yahoo.com already exists? Or to display phishing warnings on every email that was sent to a different address (and possibly forwarded)?
Maybe Netflix should simply verify the address upon registration after all.
Totally wrong.
Dots don't matter is a great way to filter your messages without giving an obvious filter. An example...
I used to use first.last+yourcompany@gmail.com when I shopped online. But a lot of companies started blocking addresses that contained a "+" as an invalid address.
So now I use firstlast@gmail.com for general shopping, and first.last@gmail for friends and family. Lets me easily keep the same inbox, but filter all the unwanted crap.
Also, I like to rotate it around a bit -- since the lack of a dot doesn't really give me much insight... I will put the dot in based on which vendor I'm working with -- f.irstlas.t@gmail.com, for example -- then use my password manager to keep track of which vendor that goes to... another easy way to just block all crap I don't want from my inbox.
I don’t like the dots-don’t-Matter policy. It’s just an opportunity for abuse.
> Gmail already provides this in the better form of “plus labelling”
True, but lots of singups disable the +.
Netflix should do what everyone else does and do an email verification test.
1. ignore all mail coming to the base (no plus) address that isn't also whitelisted/greylisted (too bad gmail doesn't support greylisting)
2. give out foo+vendor to any vendor, or foo+date to throwaway time limited mail. now you can see how +vendor gets distributed and decide to block all such mail easily.
3. stop accepting the time-limited mail after some period. eg
+2018 stop accepting after 2/2019
+201803 stop accepting after 4/2018
+20180407 stop accepting after 4/8/2018
boom, magic filters.I can understand wanting to minimize user-friction, but if you're asking someone to enter their payment information, it's very reasonable to have them log in first.
Email aliasing (dots/plus) in gmail is very useful to many people, and it seems overkill to blame Google for having introduced it. Besides, getting rid of it at this point would break backwards compatibility for a huge number of users, so the author's idea is completely infeasible.
1) It can only be exploited on sites that don't verify email addresses, which is a relatively small number 2) In Netflix's case it's a pretty small "scam". $14 each month which you'd probably notice on your credit card history isn't going to break the bank. And presumably Netflix doesn't ever show a user's full credit card number, especially before email verification.
It's an interesting case, but I can't think of any bigger ways this could be exploited.
> 7. Change the email for the Netflix account to eve@gmail.com, kicking Jim’s access to this account.
This assumes that Eve is 1) still logged into the session despite the fact that Jim has changed their password and 2) that Netflix does not require a user to provide the current account password to change the email.
I have no idea if Netflix does item 1; it's debatable, although it might be a good idea in some cases. But item 2 is a super basic security; I can't imagine they don't do that. And if they do that, then there's no real attack here.
- Netflix shouldn't charge cards without verifying email addresses. Security should be an integral part of UX, and not subservient to it.
- Individual email address canonicalisation/resolve _could_ actually be a standard. I'm not sure whether it is or not, but if we can agree on emoji we could also maybe agree on something that binds the internet together. Email is infrastructure, Netflix is not.
- There is still a potential issue by having configured catch-all email addresses on some domains, but we should in that case optimise for the hundreds of millions of gmail.
As an alternative (and sometime supplement) to the regular email/password sign-in, social sign-in is increasingly popular (mainly with OpenID Connect aka Authentication with OAuth2.0). A clear realization by many that have implemented social sign-in has been the separation of concerns between "account management" and "authentication management", which has the natural and arguably convenient side-effect of connecting multiple identifiers to the same account. The way it's done is that registered users are offered the possibility to add alternate sign-in methods to their existing account (e.g. you registered with Google, now you can add Facebook, or email/password).
The multiple login channels feature when correctly implemented with only OpenID Connect is safe since the identifier verification step is always part of the flow. Chances that the owner of the account unwillingly adds a sign-in channel not under their control is slim.
Consider on the other hand a situation where an organization would attempt to offer the same feature with OpenID Connect and their own email/password flow. If they do the latter à la Netflix, that is without confirming that the user owns the claimed email, there's your exploit window.
Malicious user John registers the account using social login (lets say Facebook). He later adds email/password as a login method along with an invalid credit card, but he uses unsuspecting user Jane's email, much like it was done in the Netflix case. Jane receives a message and thinking that it's her account that needs updating she first changes her password as a precaution, before "correcting" her credit card info. All throughout never realizing that an additional social sign-in option is enabled (Facebook).
As previously said here by many, always validate that the user owns the address you're communicating or authenticating with.
For some added fun and since I was pissed for all this wasted time (figuring out what exactly happened, if my mom's email was hacked or not because I was very confused initially about not seeing an email verification email from ebay), I call the guy in india and asked if he had ordered some chaddi's, he said yes, freaked out and hung up the phone.
So yes the moral of the story is companies, PLEASE VERIFY YOUR USERS' email, or if you don't then don't associate that email address with the account and only do business with that user through SMS.
It's still a statistics game. Not everyone would pay without verification and not everyone would click the big green button in the verification mail, but some people will without realizing what's up, just like people fall for Nigerian scams mails.
There's no technical solution, only education can help.
No service ever sends me account verification e-mails for existing accounts. I'm not supposed to click on those. The text in the e-mail has instructions about whether I should click on it. This makes it different from the credit card e-mail.
Though people are forwarding their second factor SMS confirmation codes for their banking accounts to attackers upon request, so it's not too far fetched someone would find a way to trick some users to enter it.
Here's one study about the phenomenon (the N is basically zero, but this happens and banks are warning people against doing this):
This would be a Netflix issue IMO for not validating emails properly and allowing duplicate signups.
1. Create a filter on "To", with correct dotting, with the action being to apply a new tersely-named label e.g. "dot".
2. Color all instances of the new label a greenish shade to signify goodness. Do this by going back to Inbox, hovering over the name of your new label, clicking on the downward triangle, and following the menus from there.
Anything incoming lacking the green label is a suspect.
However since Netflix is not managing email addresses in accordance with RFC-5322 They are clearly wrong.
Where are they not?
Apparently some people (all women so far) found my domain name cute, they use it to register services (usually Twitter).
Maybe they think "Email" field in the signup form akin to "Username", something you create instead of something you already have.
Just to clarify with an example: My email is: abcd.wxyz@gmail.com Other guy: abcdwxyz@gmail.com
I wonder how many of my emails the other is receiving. All my stuff is linked with Gmail. Any suggestions to resolve this?
There are just idiots who genuinely don't remember their own email address. So they'll type in your address, or the dotless variant of it, and as described for Netflix this "works" except you get all the stuff sent to you.
Might have been a happy accident for all I know, but it changes the behavior that people expect from emails, which IMO is a bit of an inconvenience for other systems that rely on uniqueness of email addresses.
If that is the case, that is pretty scary and I cannot trust gmail to proceed my payment related email anymore.
"Someone already has that username. Note that we ignore full stops and capitalisation in usernames. Try another?"
Many services do strip capitalization when checking email address uniqueness, but this is as much a mistake as stripping dots.
Fuck off, that is my favorite feature.
What they want is an easy way to begin using subscription. What users need is a safer process to manage their account.
WIN-WIN?
First, this is all on Netflix. Regardless of what any provider does, Netflix has to protect its own accounts and the obvious way to do that is to verify an email address before taking payment info. It could do that in a specific way (per-provider, understanding how gmail specifically treats addresses) but treating it in a generic way seem better and insulates them from changes to gmail or other providers.
Now, gmail certainly could do things that bring attention to the quirks of their own platform, but that doesn't take any of the onus off of Netflix or any other service to DTRT themselves.
The flaws in the article:
1. You cannot have an infinite number of addresses. per RFC 5321 par 4.5.3.1.1, only 64 chars are allowed in the mailbox name.
2. Further, unless the mailbox is quoted, eg "mailbox", then dots may not be at the beginning or the end, and consecutive dots are not allowed. (RFC 5322, par 3.4.1 and 3.2.3). The article doesn't mention the need for quoting in its description of "infinite" addressing. This is due to the use of dots to atomize the text around it, for domain name parsing. It happens to be used in the local-part for some reasons, I suppose because dot isn't otherwise allowed and they didn't want to create another named grammar item.
3. There is no requirement for plus or dot to be non-unique elements. RFC 5233 defines plus addressing, but this only applies to systems that care to treat the plus in this special way. There's no general requirement that foo+bar and foo+baz are both subaddresses of the foo mailbox; they could instead be 2 distinct addresses. The specific relevance is that Netflix should treat plus just like dot -- don't treat it specially.
The issue from the perspective of the user should be that the author clicked on a link in an html email, when he should have instead gone to Netflix.com. He clicked first and only then checked. Gmail even warned him of the phishing possibility, and he still clicked on the link! He is the vulnerability that was almost exploited.
It is true that there are other issues with user interactions, such as Netflix allowing signups without email verification, however those were purposefully designed that way by Netflix. They are features not bugs.
Where are you seeing this? I see no warning in the screen shot.
> Netflix not performing canonicalization of email addresses
AFAICT, Netflix CAN'T canonicalise the email address (unless they start making assumptions about specific providers) -- according to the RFCs, they can be different email addresses.
Most of the startups I work for don't require a valid e-mail when you enter your payment information. Reasons are multiple - conversion drop, "we took your money, we don't care", the e-mail is anyway entered with the payment provider, etc.
Also what comes to your e-mail and you act on is your responsibility. I don't know about you, but I don't pay for more than a dozen services with my card and I usually am aware when / what is being paid, so a scam like this would be easy to detect.
Weird, I've been using this feature for a decade. It's one of the features that keeps me on Gmail.
That's not the internet is supposed to work.
Eve in this scenario wouldn't be able to get back into the account once James had reset the password.
I really don't see how this could be an effective scam.
I'd guess 25 million Netflix users use gmail accounts (~20% of 120M).
I'd guess 1 in 100 of those have been victims of this scam.
This would mean 250,000 victims are overpaying a cumulative $30M per year.
Given how popular gmail is, Netflix and others should disallow duplicate account where the only distinction is the dots. They should also force email verification within 30 days of signup.
That said, I have a firstname.lastname Gmail account and I get a lot of email following this problem:
And some have the dot, and some don't. Piles of services. Sometimes I get confused for a second because they're services I use.... but maybe registered under a different account.
The number of emails that don't include a "this is not me" link in them is pathetic. Or that require you to sign in with a username and password to contact support.
What I usually do is request a password reset and delete the account or just remove my email address from the account. But in the Netflix case, the "update payment" button on the email log you to the account without asking for the password or anything. For the most part, people sign up to junk services/games or is just creating a throwaway account. But this was looking like a legit mistake. This person was actually using the Netflix account and had the payment info there and everything. I tried to just change the email address to something else but it required to confirm the password to change the email. I could just request a new password and change the email, but I was trying to be careful here because I didn't want to screw this person. I started to investigate a little bit more. Maybe this person had the account connected to Facebook, so it would be okay to change the password and remove my email and the account owner would still be able to log in. But it wasn't the case. I checked the watch history, just Peppa Pig and movies for kids. The name in the account was a female name. Probably a mom that created a Netflix account for her child. At this point, I was feeling super guilt to remove my email address and lock this person out of the account. All I could think of was a monday morning, the password not working, the kid crying out loud, the mom trying to figure it out. Anyway, I was just trying to not cause someone trouble.
So I thought about trying to find this person on Facebook or something. She had a not very common name so it shouldn't be hard. The payment method on Netflix was direct debit, so I had her bank account number. From the bank account number, I got the number of the bank's agency, and a quick google I discovered in which city her bank's agency was located, so it made the Facebook search very precise. There I was looking at her Facebook page. The profile picture it was a happy family of three: mom, dad, and the little child. Browsing a little bit her public feed I learned that her kid had my name (Vitor) and that explained why the account name had her name and the email address was a different name (her kid). So, either she created an email address for a 1-2 years old and mistyped it, or she just typed whatever email and created the account. The second option seemed more plausible. In any case, she seemed pretty much clueless and I thought about how to approach this and explain to her what was going on. So, I started to write a message... but it sort of started to sound weird/creepy, like how I got her contacts, and I was worried that she was going to think I was trying to scam her or something, so I gave up and said whatever. I still receive her (I mean, her kid's) movies recommendations.
This is very difficult to exploit and the most you could gain is a Netflix subscription. This is an incredibly complicated form of phishing which is entirely mitigated by the fact that it is difficult to execute for essentially zero return.
You have to be truly delusional to think that someone would waste their time trying to perform this attack when they could instead download a public sentryMBA profile and get hundreds of working accounts in seconds.
Takeaway for developers: no email should be sent to unverified addresses, except the verification emails. An "I didn't register for this" link is also a must have in these letters.