Kryptowährungen versprechen Sicherheit. Als sicherste Art der Aufbewahrung gelten sogenannte Hardware Wallets, wodurch die Schlüssel auf einem externen Gerät gespeichert werden und somit vor softwareseitigen Angriffen geschützt sind. Thomas Roth, Dmitry Nedospasov und Josh Datko von wallet.fail zeigen jedoch auf, dass dies hardwareseitig nicht unbedingt gilt – einige der meistverwendeten Hardware Wallets sind angreifbar.
Die Überweisung von Kryptowährungen funktioniert grundsätzlich nach einem asymmetrischen Verschlüsselungsprinzip: Ein privater Schlüssel dient zur Signierung von ausgehenden Überweisungen, während der öffentliche Schlüssel zum Empfangen genutzt wird. Da der private Schlüssel unbedingt geheim bleiben muss, liegt die Idee nahe, die Schlüssel auf einem dafür gedachten, abgeschlossen Gerät (einem Hardware Wallet) zu speichern, welches auch die Signierung von Überweisungen übernimmt. So muss der private Schlüssel nie das Wallet verlassen und ist vor Softwareangriffen geschützt.
Problematischer sieht es jedoch mit der Hardware aus. Eine Anmerkung vorweg: Die von wallet.fail geschilderten Angriffe setzen physischen Zugriff des Angreifers auf das Gerät voraus. Nun könnte man sich sicher fühlen, wenn man sein Hardware Wallet immer in einem Tresor aufbewahrt. Allerdings könnte eine entsprechende Modifikation auch vor dem Erwerb des Geräts installiert werden – Siegel auf Kartons sind ja bekannterweise keine Absicherung, dass diese nie geöffnet wurden. Die einzige Möglichkeit, komplett sicher zu sein, ist, sich ein Hardware Wallet selber zu bauen, sei es nach (vertrauenswürdigen) Open-Source-Plänen oder einem eigenen Design.
Das Team von wallet.fail hat dabei drei der am weitesten verbreiteten Hardware Wallets untersucht: Ledger Nano S, Ledger Blue, Trezor One. Die gefundenen Schwachstellen sind dabei vielfältig: So ist es möglich, den Mikrocontroller des Ledger Nano S zu kapern, die PIN des Ledger Blue drahtlos mitzulesen und den Key-Seed (aus welchem privater und öffentlicher Schlüssel generiert werden) des Trezor One auszulesen.
Die Logik des Ledger Nano S beteht aus zwei Mikrocontrollern: Ein STM32 übernimmt die Kommunikation zwischen dem Rechner, dem Nutzer und dem zweiten Mikrocontroller, einem ST31. Dieser stellt den geschützten Teil des Hardware Wallets dar: Hier liegen die Schlüssel und hier werden Überweisungen signiert. Jedoch muss nur der STM32 kompromittiert werden, um automatisiert Überweisungen auszuführen. So kann eine Übertragung an eine beliebige Adresse erzeugt und dem ST31 übergeben werden. Da der STM32 auch die Nutzerinteraktion mit dem Gerät verwaltet, kann er anschließend vorgaukeln, dass der Nutzer den Bestätigen-Knopf gedrückt hat – und weg ist das Geld.
Software für den STM32 muss eigentlich durch den ST31 bestätigt werden. Das Ergebnis dieser Überprüfung wird an einer bestimmten Speicheradresse hinterlegt. Schlägt die Verifizierung fehl, wird das Update abgebrochen. Praktischerweise sind jedoch die Programmieranschlüsse des STM32 auf der Leiterplatte verfügbar, die es ermöglichen, an beliebigen Orten im Speicher zu schreiben. Somit ist es möglich, selber grünes Licht zu geben, und beliebige Software auf dem STM32 zu installieren.
Beim Ledger Blue kann eine andere Sicherheitslücke ausgenutzt werden: Beim Eingeben der PIN auf dem Touchscreen lassen sich per Antenne auch in einigen Metern Entfernung noch auffällige Signale empfangen. Diese können eindeutig zu eingegebenen Ziffern zugeordnet werden. Somit ist es möglich, die PIN drahtlos mitzulesen.
Der Trezor One ist vergleichsweise sicher. Während hier nur ein STM32 verwendet wird, ist dieser ausreichend abgeschottet und externes Auslesen des Speichers deaktiviert. Nur durch Destabilisierung mithilfe von unstabilen Spannungen während des Bootvorgangs war es möglich, die Lesesperre zu deaktivieren, und dies auch nur nach vielen Versuchen. Somit ist zum Ausnutzen dieser Schwachstelle physischer Zugriff auf das Gerät, entsprechendes Equipment, sowie viel Zeit vorrausgesetzt.
Zusammengefasst: Auch Hardware Wallets garantieren keine Sicherheit. Auch „große“ Marken wie Ledger und Trezor sind angreifbar. Weitere Details und den Vortrag zu wallet.fail findet ihr hier.