About unlukey

Unlukey is a collaborative research project on weak crypto wallet generation vulnerabilities.

Motivation

From our research into Ill Bloom, Coldcard, and other weak seed generation vulnerabilities, we learned that there is room to do more to protect users from this class of attacks. We decided to try to tackle this problem not only because it is very likely that new vulnerabilities of this class will be exploited in the future, but also because there are still victims at risk from already discovered ones.

Alerting affected users

Warning the users of wallets generated from weak recovery phrases is difficult. If there is a single product affected then the vendor’s official channels can be used to reach users. However, in cases like Ill Bloom, many affected wallets had been generated by discontinued applications but their users imported the vulnerable mnemonics into other applications. Over time, users may no longer know which software originally generated their recovery phrase.

This makes disclosure by the original vendor insufficient. A recovery phrase can remain in use long after the wallet that generated it is gone. Since the same phrase can end up in another wallet, detection and alerting needs to work wherever the phrase is currently used, not only where it was originally created.

A shared detection mechanism allows multiple systems to warn affected users as soon as a vulnerability is known.

Defenders Advantage

There is also a timing advantage for defenders. We observed cases where attackers drained funds derived from a vulnerable recovery phrase on one blockchain while funds associated with the same phrase remained untouched on another. Exploiting vulnerable seeds at scale requires attackers to generate candidate seeds, derive accounts, and search multiple blockchains for funds. This process is computationally expensive and takes time, creating an opportunity for defenders to identify affected users and warn them before attackers discover all associated funds.

Long term protection

Once a recovery phrase is created with insufficient entropy, the risk can persist and affect future deposits. Affected users who are not victims of an initial coordinated drain attack may continue using vulnerable wallets for years until their balances exceed an attacker’s minimum threshold or new attackers exploit the same vulnerability using a different strategy. Certain mistakes, such as directly using a platform’s insecure random number generator to derive entropy, can happen again in new applications or be introduced when updating a dependency. A detection system integrated into wallets and updated with every known variant of insecure entropy generation can detect new instances early on and prevent further damage.

Project goals

  • Open — Research, generators, and vulnerability datasets should be publicly available.
  • Privacy — Wallets should perform vulnerability checks locally, without transmitting entropy, mnemonics, seeds, or derived addresses.
  • Independent distribution — Datasets should be able to be hosted and mirrored independently, without relying on a centralized lookup service.
  • Simple integration — Wallets should be able to check a user’s entropy against all Unlukey-supported vulnerabilities through a single integration.
  • Extensible — New weak-seed vulnerabilities should be supported without requiring wallets to change their existing integration.

Coverage