Jeden z wiodących dostawców portfeli sprzętowych - firma Trezor, poinformowała o aktualizacji modeli One (do wersji 1.9.1) oraz Trezor Model T (do wersji 2.3.1). Powodem wprowadzenia zmian jest usunięcie luki w zabezpieczeniach.
Do aktualizacji doszło w środę 3 czerwca. Zmiany w firmware powodują konieczność aktualizacji wszystkich portfeli, które współpracują z Trezor. Lukę wykrył zaś użytkownik Saleem Rashid, który bierze aktywny udział w programie bug bounty firmy. Opisane przez niego zagrożenie dotyczyło transakcji SegWit, które okazały się podatne na ataki malware.
Wprowadzenie SegWit'a miało na celu ograniczenie ilości informacji potrzebnych do zatwierdzenie transakcji. Wyjściowa wartość zostawała zapisana w inpucie, który otrzymywał podpis. Gdyby ktoś za pomocą malware podał właścicielowi portfela złą wartość - transakcja byłaby nieprawidłowa. Składając jednak dwie transakcje z różnymi inputami, atakujący mógł połączyć je ze sobą generując bardzo wysoką opłatę transakcyjną.
Wprowadzone zmiany przywracają weryfikację kwoty UTXO z poprzednich transakcji. Trezor zacznie więc traktować transakcję SegWit tak jak standardowe operacje.
Jak to wyglądało w praktyce
Praktyczny przykład wykorzystania takiej luki opisano na blogu Trezora, w następujący sposób:
- Ofiara ma dwa SegWit / BIP-143 UTXO po 15 BTC i 20 BTC.
- Złośliwe oprogramowanie prosi użytkownika o potwierdzenie transakcji z wejściem 1 jako 15 BTC i wejściem 2 jako 5.00000001 BTC, z wybranymi przez użytkownika danymi wyjściowymi i, w razie potrzeby, prawidłową zmianą wyniku.
- Użytkownik potwierdza transakcję, wydając 20 BTC plus 0,00000001 opłaty BTC.
- Malware zgłasza błąd i mówi użytkownikowi, aby ponownie potwierdził transakcję (np. „Ech, coś poszło nie tak. Spróbuj ponownie.”).
- Złośliwe oprogramowanie prosi użytkownika o potwierdzenie transakcji z wejściem 1 jako 0,00000001 BTC i wejściem 2 jako 20 BTC, z dokładnie takimi samymi wynikami jak poprzednio.
- Użytkownik widzi pozornie identyczną transakcję i ponownie potwierdza wydanie 20 BTC plus 0,00000001 opłaty BTC.
- Złośliwe oprogramowanie wykorzystuje sygnaturę wejścia 1 z pierwszej transakcji i sygnaturę wejścia 2 z drugiej transakcji, tworząc transakcję, która w rzeczywistości wydaje 15 BTC z wejścia 1 i 20 BTC z wejścia 2.
- Użytkownik ostatecznie płaci opłatę transakcyjną w wysokości nieco ponad 15 BTC.
Kompatybilność
Trezor będzie znów traktować transakcje SegWit tak jak pozostałe, czyli zacznie sprawdzać kwotę UTXO z wcześniejszych operacji.
Niektóre narzędzia innych firm nie pozwalają jednak portfelom sprzętowym na uzyskanie informacji o poprzedniej transakcji w przypadku danych wejściowych SegWit. W związku z tym do czasu wprowadzania u nich łatki, nie będą one obsługiwane przez portfele Trezor. Bez komplikacji działać będą nadal aplikacje korzystające z Trezor Connect w wersji 8. Do momentu wprowadzania modyfikacji obsługiwane nie będę HWI, serwer BTCPay i portfel Wasabi
Szczegółowe informacje o zmianach na blogu Trezora
Komentarze