LedgerHQ / ledgerjs

⛔️ MOVED to monorepo "ledger-live"
https://github.com/LedgerHQ/ledger-live
Apache License 2.0
574 stars 375 forks source link

Chromium 72+ has broken Ledger U2F support #306

Closed gre closed 4 years ago

gre commented 5 years ago

Any users that comes on a web app using @ledgerhq/hw-transport-u2f on Chromium 72+ will fall into a bug that breaks Ledger device communication. (U2F TIMEOUT error).

What happened?

Chrome 72+ has started being rolled out around February 21th, 2019. This new version has changes in the U2F protocol implementation that is breaking Ledger's.

What solutions

In the short term, Users can be advised to switch to Opera or Brave but it's probable that these browsers will upgrade Chromium as well.

In the mid term, we are working on a fix for U2F. It will only be a fix on the Ledger device side, meaning users will have to upgrade (the apps). If you are a developer of one of these applications, you can take a look at this for reference, for further questions please get in touch with @btchip or discuss on our Slack Devs.

In the long term, switching to WebUSB is probably going to be the good plan. At the moment, this API is still a draft spec but we anticipate it will be more widely supported in the future. It is much more relevant for Ledger devices (more performant, more features like being able to detect disconnection,..)

Regarding @ledgerhq/hw-transport-webusb current implementation, it works on latest firmware / apps but there are some slight different in the way it works (coming from u2f) which have some UI/UX implication. We'll try to document it better in the next weeks.

gre commented 5 years ago

you can follow development https://github.com/LedgerHQ/ledger-live-desktop/pull/2057 (this is one milestone, there will be a few more work after this first PR but it's a good kickoff)

dogperrokukur commented 5 years ago

Having the same problems (ALERT: TransportError: Failed to sign with Ledger device: U2F TIMEOUT) • Ledger Nano S • Google Chrome version. 75.0.3770.90 • Windows Version: Win 10 (Official Build) (64-bit) OS Build 18362.175 • Ledger Firmware 1.5.5 • Ethereum App 1.2.7 • Metamask and MEW

Downloaded and installed earlier versions of Chrome, Brave, Opera and Firefox. Nothing helps. I am unable to move tokens from my ledger or engage in smart contract transactions on certain DEX, https://staking.linkpool.io/dex This is a very serious issue. Have not had access to tokens for several months. Hoping for a speedy resolution.

marcinsx commented 5 years ago

Hi dogperrokukur, did You try this concrete version of Opera 58.0.3135.53? It worked for me + I was using myetherwallet.com. Also, please remember uninstall first the "new" Opera which YOu may have installed in Your system. Also please try to restarting Your computer (but I think it worked by me without restarting). Good luck.

OId versions of Opera You can find here: http://get.opera.com/ftp/pub/opera/desktop/ (I chose the 58.0.3135.53 version, You can find it here: http://get.opera.com/ftp/pub/opera/desktop/58.0.3135.53/win/ IMPORTANT: chose Setup version not Autoupdate, because You want to install an OLD version without updating to the newest one)

claytucker commented 5 years ago

I have this error. Ledger Nano S Firmware: 1.5.5 Ethereum App 1.2.7 dYdX Exchange accessed via MetaMask connected to Ledger Nano S Tried using Chrome, Opera, and Brave Tried using Windows 10 Home and Windows 7 Enterprise (up-to-date security patches). All six of these options create the same error. All my funds are essentially trapped on the dYdX Exchange/in the smart contract.

Update: Was able to work around. Copied the MetaMask data and sent the identical transaction via MEW in the advanced data field instead and it worked.

dogperrokukur commented 5 years ago

Thanks for all the suggestions. I seem to have solved the problem independently, well at least temporarily. But I’m still of the opinion this is a big issue for the community. Like the above poster, I also lost access to my tokens. More importantly I was unable to conclude several time sensitive trades on a DEX because of this “known issue”. I’m just amazed that this isn’t a bigger deal across the web. I’m also amazed that this has not been solved yet. Its been months now. I’m sorry but the first post on this thread was in Feb. Anyway enough, I’m sorry about the rant. Here is what I did.

First I uninstalled the latest version ofChrome and reverted back to an older version. I installed a version that was released just before Feb 2019, when the known issue occurred. I used Version 71.0.3578.80 (Official Build) (64-bit) You’ll have to stop chrome from auto updating, (which it likes to do all the time). Just do a quick search on the web to see how to do that. In my particular case I was using metamask to complete my transactions.
Initially I installed the latest version of Metamask, but that also seems to cause similar issues. So I decided to use MetaMask 5.2.1. This version was released around the same time as the Chrome version I have reverted to using. You can also easily find this on the web. When installing the metamask extension, use developer mode within the extension settings. Then click on "load unpacked" and install the custom extension. Not sure how to stop auto updates on metamask however. You might have to reinstall over time. Again I am not sure how long this will work for, and if it will work for everyone. But it does prove that reverting to older web browsers does seem to be the way to go for now.

shawnholt commented 5 years ago

Tried everything. old version of opera will only allow install of ver Version 3.14.1 of metamask which does not support Ledger! There is NO WAY to access ERC 20 Tokens on Ledger. This is crazy!

shawnholt commented 5 years ago

Error message: image

Creamers158 commented 5 years ago

I used Chrome Beta and that one works for me ;)

dmdque commented 5 years ago

Worked with:

Metamask: 6.7.2 Chrome: 75.0.3770.100 Ledger Nano S: Secure Element: 1.55, MCU: 1.7

TeslaNguyen commented 5 years ago

Still getting "Failed to sign with Ledger device: U2F TIMEOUT" on Manjaro/Brave. What can I do? It's been weeks. :/

nyetwurk commented 5 years ago

Also hangs the Ledger dead.

TeslaNguyen commented 5 years ago

Still getting "Failed to sign with Ledger device: U2F TIMEOUT" on Manjaro/Brave. What can I do? It's been weeks. :/

Alright, I could actually get around the aforementioned issue by following this link (granted, I probably should've look there earlier): https://support.ledger.com/hc/en-us/articles/115005165269-Fix-connection-issues

I was missing this part:

"wget -q -O - https://raw.githubusercontent.com/LedgerHQ/udev-rules/master/add_udev_rules.sh | sudo bash"

However, now I keep getting "Failed: need signature."

It's really not funny anymore.

nyetwurk commented 5 years ago

It is hilarious that they recommend searching for a driver for windows 10 that doesn't exist.

nyetwurk commented 5 years ago

@AdvocateOne, thank you for the information you provided.

We suspect this is related to USB driver on Windows 7. Can you try updating them ?

https://support.ledger.com/hc/en-us/articles/115005165269-Fix-connection-issues

Thanks a lot.

This simply doesn't work. There are no windows drivers that I can find. Please provide a direct download link for your drivers.

nyetwurk commented 5 years ago

For all users experiencing this issue - try to update Firmware on your device to the latest version (1.5.5) and update your Ethereum app as well (1.2.4)

This does not work. On every browser (Chrome, FF, Brave, Opera) MM times out too soon with the latest firmware (1.5.5) and Ethereum app. The topic of this bug should be changed to reflect this is a general problem with Ledger support and MetaMask. It should also include the fact that MM U2F hangs the ledger stone dead when attempting to sign an ERC20 transaction (or any transaction with contract data).

The lack of progress on this bug is dismaying in the extreme; it makes the Ledger almost completely useless when browsing web3/u2f pages.

nyetwurk commented 5 years ago

Will https://github.com/LedgerHQ/nanos-secure-sdk/pull/21 fix this bug?

nyetwurk commented 5 years ago

https://github.com/MetaMask/metamask-extension/issues/6345

seanatwork commented 5 years ago

I sent some erc-20 tokens to my ledger prior to discovering this issue (trying to be safer!). Obviously I can't move them now in metamask . Am I SOL until this is resolved or a new ledgerlive is released?

I tried @dogperrokukur 's post of rolling back chrome/mm extension from Jun19 and the page just freezes on the "connect a hardware wallet" screen of metamask. Any assistance is greatly appreciated.

btchip commented 5 years ago

If you're running Windows 1903 please see https://www.reddit.com/r/ledgerwallet/comments/cxf3h9/new_beta_windows_pop_up_issue/ and report in the reddit thread if this fixed your issue

nyetwurk commented 5 years ago

Why is this discussion on reddit and not here?

btchip commented 5 years ago

For better visibility and follow up - of course, you can also report here. We'll update the related threads once the beta is closed if the outcome is successful.

gre commented 4 years ago

The situation should be back to normal (using latest firmware)

jafri commented 4 years ago

@gre what do we need to update for EOS?

mitakash commented 4 years ago

Still seeing this issue with Ledger Nano S firmware 1.6.0. Basically won't connect to Metamask. I can connect to Ledger Live 2.0.
TransportError: Failed to sign with Ledger device: U2F DEVICE_INELIGIBLE
Can someone please help? I am on Ubuntu 18.04 LTS

youfoundron commented 4 years ago

+1 Seeing this error as well

liamzebedee commented 4 years ago

Me too. 🙌 WebUSB is broken with the ledger web3-subprovider.

gre commented 4 years ago

Please share a (minimal) example that reproduce the problem in a new Github issue because it's not easy to understand what exactly you are raising. this task is about U2F support issue we had a year ago and have nothing to do with WebUSB or web3-subprovider.