I am kind of surprised that the sites you mention can implement the spec correctly but Facebook and Google can't.
In this case, though, what happened is that Google implemented a different, earlier version of the spec than most everyone else. Mozilla is busy implementing that spec as well to bridge the gap.
I'm not surprised.
Speaking of which, why does Vanguard force you to still have SMS two factor available even when you add a U2F device...
Haha it's funny you put it this way because actually it's Firefox that implements FIDO U2F standard correctly and Chrome is not. Chrome uses low level API to communicate with their built in extension and the high level shim that they provide is not 100% spec compliant.
Google did not bother to use the U2F correctly on their accounts site, Github for example did it correctly and their 2FA works on any browser (that is FF and Chrome).
Unfortunately, these same companies often then claim that there is no harm in SMS two factor since "clearly it is stronger than one factor". But they are blind to their own systematic design flaw which is that the same SMS setting to enable two factor also usually enables one-factor password-recovery via this supposedly trusted phone.
Given what we know about SMS security, it is pretty obvious that one-factor SMS is weaker than one-factor good strong password. And if the good strong password can be merrily reset by whomever hijacks your phone, you have really just decreased your security posture while performing this whole security theater around two-factor and hardware tokens.
Not to mention that traffic inside the network is not encrypted so a lot of parties have legitimate access to the messages anyway.
I understand your point but SMS should not be used as the only factor for authentication.
You only need to hijack the victim's phone number so that messages are sent elsewhere. This can be done by technical or social hacks such as porting the subscriber's number to a new provider or pretending a phone was lost and having the phone company register a replacement SIM. There is no need to physically intercept the victim's phone, so it is not in fact a second factor.
Firefox is compliant.
Unfortunately for a large number of users that effectively means it doesn't work.
Which key did you use? I tried Yubikey 4 (via OTG cable) and 4C (directly) and the U2F flow with Authenticator did not work (just like the key would not be recognized for U2F).
but still hardly anything supports U2f :-(
It does! Open about:config and switch security.webauth.u2f to true. It'll Just Work.
I've in the recent past modified a barebones Perl webapp to try and understand U2F better, see https://u2fdemo.darkpan.com/
I've been able to log in / use U2F from:
* FF on Windows and OSX
* Chrome on Windows, OSX
* Chrome on Android using either a OTG cable for a U2F USB key, a Bluetooth U2F key, and a NFC U2F key (works if you install Google Authenticator)
* Unfortunately, not FF on Android as I can't find how to enable U2F there yet :/