Vendors, Disclosure, and a bit of WebUSB Madness
pwnaccelerator.github.io
pwnaccelerator.github.io
As far as Yubico, I get that they are doing something pretty hard in the hardware / product-market-fit domains, and I respect that and I want them to succeed, but they appear to be seriously dropping the ball on the software part of their product [1], as well as "simplicity breeds security". They could do so much better on the actual UI/UX if they piece-by-piece copied the setup UX of a "smart" vacuum cleaner.
1. I emailed & on-site support ticket submitted them days ago about some of their certs having expired on 2017-05-10, and have gotten not a peep in response & no fix in sight. Did nobody set a team calendar reminder and is nobody responsible for checking it on a monthly / quarterly / at the very least end-of-year cycle? That seems pretty elementary "underwear goes inside the pants" kind of security competence.
https://i.imgur.com/bOCfXJ2.png https://developers.yubico.com/yubikey-neo-manager/Releases/y...
did they literally go "yeah this website can send
anything to the YK device directly, waht could go wrong?".
WebUSB displays a prompt, albeit an uninformative one [1]. The idea is to trick the user into enabling WebUSB when they think they're enabling U2F.[1] https://developers.google.com/web/updates/images/2016-03-02-...
Of course U2F devices should be excluded from the list, and there should be some warning text about "do not allow important devices on random websites", but that doesn't seem like a huge deal.
Well that clearly doesn't look like a U2F prompt.
Thus downgrading U2F from "makes phishing impossible" to "relies on the user taking care to spot phishing attempts"~sigh~
It's really depressing to learn that reality was much worst than any of my "this is going to end badly" predictions[1]. I originally thought[2] the problems would start on the hardware side with devices that were never designed for security. Forwarding everything with a proxy is shockingly worse.
> Also there seems to be a kind of relationship between Google and Yubico that I would love to know more about.
I've gotten this impression too, though looking back, it may be because Google suggests you Google for U2F, and every time I search for U2F I see Yubico. Anyone know more about this?
In fact, they were closely involved when developing the USB Type-C variant.
If there is a security issue with YubiKeys, it puts Google's corporate systems at risk.
Google and Yubico developed U2F, so....
Still, precisely because of this, I would say it's poor form for Google to award Yubico a bug bounty relating to U2F (would they award a bug bounty to an Android manufacturer for a kernel bug?).
It also seems like poor form for Yubico not to disclose their research when asking about the same topic to another researcher, and poor form for Google to be unwilling to award two bounties (this isn't the patent office, acknowledging and even incentivizing multiple discovery is fine).
Mozilla team, if you're reading, please reject implementing or at least enabling such APIs with extremely high-risk to the user by default in your browser - "sandbox" or not.
The issue is that 99.99% of USB devices aren't designed with the possibility of hostile payloads coming from the host, so the security rests entirely on the webusb permission dialog. Which should be presented as "grant this website administrative access to your computer" but isn't.
The other NaCl https://developer.chrome.com/native-client
This is something most companies can't do. Small co., can pull it out that for some times, but as companies grow, the temptation to "simply make money" overwhelms even most principled person.
Also, maybe bluetooth and USB devices don't need to be on the net.
Only if you believe minified JS is significantly easier to audit, which seems rather unlikely.
In both cases, the thing which works is securing the capability rather than the code. Having generic USB support is risky but e.g. having mediated access to cameras and microphones has been fine.
I find it highly unlikely we are going to be able to trust "mediated" access.
How can you build applications on the web that use
Bluetooth or USB devices without these APIs?
Same way you use mice, keyboards, sound cards, printers, webcams and so on: a generic, secure interface supported by all device makers, OSes and browsers.The whole benefit of web apps is they demand less trust because they're better sandboxed. Poking holes in the sandbox (like WebUSB) makes web apps worse, not better.
a) Don't do it and pivot your company to doing something else.
b) Implement your own solution with companion native apps that build this missing bridge. Out of public scrutiny and with many times less resources, but hey: the browser is secure! ;)
You simply don't
Really? Web applications can essentially change at the whim of the owner or server(s) hosting them, every time you refresh the page. You have far more control and "transparency" over when a native application changes.
Is it even using tls for network requests? So many things we can’t see in a native app.
You're just not looking hard enough. ;-)
As all the vulnerabilities discovered and exploited in closed-source software shows, along with those in open-source which have been there for many years without being discovered, whether the source is open or closed is nearly irrelevant.
To quote the mentality of those who see beyond that debate, "Source code? We don't need no stinkin' source code!"
Unfortunately, the only viable alternative right now is to install a companion native application. That companion app launches an (https/ws) server that talks to the device and exposes some api for your site to use through javascript.
It is a disgusting can of worms, but if you squash them all you get a working system at the end.
As "everything" is supposed to live inside a browser window, there "naturally" needs to be rich APIs for accessing whatever the user may decide to plug into ports or their wireless equivalents.
We are going full circle here, with the web "browser" becoming the new leased line terminal. Keep in mind that at the end of the mainframe era, some "terminals" had local hardware that could rival a micro-computer.
This is why the X protocol included support for printing, as the printer would be hooked up to the X "terminal" and not the mainframe (DEC had their own wire protocols for talking either to terminals or printers for doing bitmap and vector graphics).
Everything old is new again, and i wonder if i will live long enough to witness some rainbowhaired dev blog (or whatever it will be called at the time) about how they are gleefully ripping out all this cruft from the "soon" to be retired web protocol.
In the future, as these mega corporations become even larger and more powerful, brave employees who are willing to violate NDAs are the only source of info we will have at all.
Why mention them then, if not to pressure them into refunding the donation?
I wrote an assumption based on what i read in the article.