Update je hardware wallet: bug in Bitcoin SegWit kan je veel geld kosten

Gebruik je een hardware wallet, bijvoorbeeld van Trezor of Ledger? Een bug in het SegWit-protocol van Bitcoin kan uitgebuit worden en je veel geld kosten. Lees eerst onze bijsluiter en zorg daarna dat je het apparaat en de apps naar de nieuwste versie bijwerkt.

VeiligheidBitcoin

Update je hardware wallet: bug in Bitcoin SegWit kan je veel geld kosten
0%
Peter Slagter
Door Peter Slagter

Vorige week kwam Trezor met een firmwareupdate naar buiten voor een spraakmakend probleem. Een bug in SegWit, onderdeel van het transactieprotocol van Bitcoin, maakt het mogelijk dat gebruikers van hardware wallets zonder dat ze het door hebben veel geld kwijtraken.

Maar, hoewel Trezor hun wallet heeft opgelapt, veroorzaakt het nog steeds problemen voor Trezor-gebruikers. De update kan namelijk compatibiliteitsproblemen veroorzaakt hebben met Bitcoinsoftware waarmee de Trezor samenwerkt, zoals Wasabi of BTCPay. En ook dat kan vervelende gevolgen hebben, waaronder dat je jezelf buitensluit van je eigen geld.

Enfin, wil je je hardware wallet veilig gebruiken? Dan zal je even door moeten lezen.

Geld kwijt via transactiekosten

Het bitcoinbedrag in je wallet bestaat uit nog niet bestede stukjes bitcoin, die we vanaf hier UTXO's noemen. Die afkorting staat voor unspent transaction output, en moet je even onthouden. De waarde van alle UTXO's bij elkaar is het totaal beschikbare saldo in je wallet.

Als een hardware wallet als Trezor of Ledger een UTXO wil gebruiken om weer uit te geven, heeft hij van oorsprong altijd de transactie nodig die eraan ten grondslag ligt. Waarom? Omdat een kwaadwillende kan doen alsof de waarde van de UTXO lager is dan in werkelijkheid het geval is. En dat zet de deur open voor vervelende en onbedoelde bijwerkingen. Hou dat vast, want we stappen eerst over naar SegWit.

Met de introductie van Segregated Witness, of SegWit, is deze situatie veranderd. SegWit is bedoeld als verbetering in de indeling van transacties binnen een bitcoin-block. Binnen die context is ook een poging gedaan om de controle op de waarde van een UTXO te versimpelen (BIP143). Sindsdien is de waarde van een UTXO opgenomen in de versleutelde data die bij een transactie wordt opgeslagen. Als een kwaadwillende nu probeert te liegen over de waarde ervan, wordt zijn poging onderschept door het Bitcoinnetwerk en zijn transactie wordt als invalide beschouwd. Handig!

Met de introductie van SegWit is hierom in Bitcoinsoftware een tweedeling ontstaan. Voor UTXO’s zonder SegWit geldt dat nog altijd de transactie ervoor nodig is om te controleren of er wel écht een valide transactie wordt opgesteld. Voor transacties mét SegWit niet: men gaat er vanuit dat het netwerk eventuele fouten afvangt. Van die aanname heeft white hat hacker Saleem Rashid gebruik gemaakt.

Zoals je wellicht weet, wordt het verschil tussen de input (de UTXO’s) van een transactie en de output van een transactie beschouwd als transactiekosten die worden uitgekeerd aan de miner die de transactie verwerkt. Met de term output bedoelen we de bestemming van je geld, bijvoorbeeld een adres van een kennis en een adres waarop je het wisselgeld op wil ontvangen.

Rashid heeft een manier bedacht om dat verschil te vergroten zonder dat jij het doorhebt én zonder dat het Bitcoinnetwerk het doorheeft. Het uitbuiten van deze kwetsbaarheid vereist dat je malware gebruikt, denk aan een malafide versie van Trezor’s of Ledger’s walletsoftware. De malware loodst je vervolgens door een proces waarin je twee keer een gelijk ogende transactie ondertekent. Zonder dat je dat doorhebt natuurlijk, bijvoorbeeld door een generieke foutmelding te tonen na de eerste ondertekening. Op de achtergrond heeft de malware echter een transactie gefabriceerd die bouwstenen bevat van allebei de transacties, met als doel om het verschil tussen de input en de output van de transactie zo groot mogelijk te maken: je raakt geld kwijt via transactiekosten.

Wat een hacker hier aan heeft? Goede vraag, want in principe heeft hij geen controle over waar die extra transactiekosten terechtkomen. Hij zal dus moeten samenspannen met een of meer miners om überhaupt wat te hebben aan de tijd en energie die hij in de hack heeft gestoken. Tenzij hij er gewoon op uit is om mensen dwars te zitten, natuurlijk.

Probleem opgelost-ish

Belangrijke nuance is dat het niet de schuld is van leveranciers van hardware wallets dat dit type malware kan bestaan. Dat het Bitcoinnetwerk dergelijk misbruik van transacties toestaat is een bug in SegWit. “Bitcoin zelf is niet kwetsbaar, maar gebruikers van SegWit-wallets moeten upgraden voordat ze een nieuwe transactie versturen”, schrijft Bitcoinontwikkelaar Luke Dashjr. “De ernst van deze kwetsbaarheid wordt wellicht overdreven. Het kan alleen worden uitgebuit door de gebruiker zover te krijgen twee keer te signeren.”

Voor hardware wallets is de oplossing eenvoudig. Men moet simpelweg op dezelfde manier omgaan met SegWit-transacties als gedaan wordt voor transacties zónder SegWit, zodat voor alle transacties geldt dat de transactie ervoor ook wordt gecontroleerd en gevalideerd. Ledger heeft het in een nieuwe versie van hun software opgelost en ook Trezor heeft voor hun modellen One en T nieuwe versies uitgebracht.

Maar let op: sommige tools van derde partijen sluiten nog niet goed aan op de nieuwe firmware, omdat ze het niet toestaan dat de hardware wallet de voorgaande transactie opvraagt. Een voorbeeld van zo’n externe tool is de op privacy gerichte wallet Wasabi. Als je dergelijke constructies gebruikt, zal je de komende tijd dus goed moeten opletten of alle software waarvan je gebruikmaakt goed met elkaar kan samenwerken.

Enfin, de kans dat je hier het slachtoffer van wordt, is redelijk klein. Er is namelijk heel wat voor nodig. Dat je malware downloadt, een transactie opstelt waar meerdere UTXO’s voor nodig zijn, in het gebruik van de malware trapt, dat partijen met elkaar samenzweren, enzovoorts. Daarom wordt de ernst van de kwetsbaarheid als ‘laag’ gekwalificeerd.

Maar toch: better safe than sorry!

Iedereen heeft een mening

Onder de noemer Opinie schrijven we regelmatig over een spraakmakende podcast, video of tweetstorm. We zijn het niet noodzakelijkerwijs eens met de spreker of schrijver, maar vinden het interessant genoeg om te delen, duiden en ondertitelen.

Over de auteur

Peter Slagter

Peter Slagter

Hoofdredacteur en medeoprichter van LekkerCryptisch. Voorliefde voor techniek en economie, met in het bijzonder de overlap tussen die twee. Vind het leuk om complexe onderwerpen toegankelijk te maken voor een breed publiek.