Electrum 4.8.3 łata atak złośliwych serwerów wykorzystujący podbijanie opłat Bitcoin
Najważniejsze informacje
- •Electrum w wersji 4.8.3, otagowanej 23 października i opatrzonej publicznym biuletynem 24 października, naprawia lukę pozwalającą złośliwym serwerom wyświetlać w historii portfela fałszywe transakcje wychodzące z nieprawidłowymi podpisami.
- •Atak wykorzystywał replace-by-fee: gdy użytkownik podbijał opłatę wstawionej transakcji z zerową opłatą, nowy podpis autoryzował zmodyfikowaną płatność na adres kontrolowany przez atakującego.
- •Dwie osoby zgłosiły incydenty, a jedna, która 18 października podbiła opłatę fałszywej transakcji, utraciła nieujawnioną kwotę środków.
- •Poprawka weryfikuje podpisy niepotwierdzonych transakcji wydających monety z adresów własnych portfela, podczas gdy przychodzące transakcje niepotwierdzone pozostają niewalidowane, ponieważ Electrum nie ma pełnego silnika konsensusu.
- •Użytkownicy wersji starszych niż 4.8.3 powinni zaktualizować oprogramowanie lub ręcznie potwierdzić adresy wyjściowe i kwoty na ekranie podpisywania przed zatwierdzeniem jakiejkolwiek transakcji, w tym podbicia opłaty.

Luka o wysokim poziomie zagrożenia w portfelu Bitcoin Electrum została naprawiona w wersji 4.8.3, po tym jak atakujący znaleźli sposób na wykorzystanie mechanizmu replace-by-fee do kradzieży podpisanych transakcji. Deweloper Electrum SomberNight ujawnił problem w biuletynie bezpieczeństwa z 24 października, stwierdzając, że niektóre serwery przeprowadzały atak w praktyce. Dwie osoby zgłosiły incydenty; jedna utraciła środki.
Atak wymaga podpisu właściciela
Złośliwy serwer nie może samodzielnie wydać czyichś Bitcoinów. Wstawiana przez niego fałszywa transakcja zawiera nieprawidłowe podpisy, więc sieć by ją odrzuciła. Atakującemu potrzebny jest ważny podpis właściciela portfela, a pułapka została zaprojektowana tak, aby zdobyć go poprzez podwyższenie opłaty.
Replace-by-fee (RBF) przyspiesza oczekującą płatność Bitcoin, zastępując ją nową wersją z wyższą opłatą. Dla użytkownika wygląda to jak zmiana ustawienia. Dla sieci jest to zupełnie nowa transakcja, a jej podpisanie autoryzuje każdy adres docelowy i kwotę w niej zawartą. Jeśli „podbijana" transakcja została już zmodyfikowana, nowy podpis zatwierdza zmodyfikowaną wersję.
Przynętą jest płatność, która wygląda na utkniętą. W przypadku, gdy użytkownik stracił środki, serwer zbudował swoją fałszywkę z zerową opłatą, co — według deweloperów — miało skłonić do podbicia opłaty. Transakcja bez opłaty pozostaje niepotwierdzona, a podbicie opłaty jest standardową reakcją.
Jak złośliwy serwer zastawił pułapkę
Electrum to lekki portfel: sam nie pobiera i nie weryfikuje całego blockchaina. Zgodnie z dokumentacją portfel zwykle łączy się z około dziesięcioma serwerami, ale opiera się na jednym głównym serwerze w zakresie historii transakcji i ich rozgłaszania. Pozostałe dostarczają głównie nagłówki bloków i szacunki opłat. Biuletyn zaznac, że ufanie głównemu serwerowi w kwestii niepotwierdzonych transakcji jest częścią udokumentowanej konstrukcji Electrum. Nowością jest praktyczny sposób przekucia tego zaufania w kradzież. Ten kompromis stanowi kontekst ataku: to przeniesienie weryfikacji sprawia, że lekki portfel jest lekki, ale oznacza też, że historia widziana przez użytkownika jest tak wiarygodna, jak główny serwer, który ją dostarcza — a przed wersją 4.8.3 wpis wychodzący z nieprawidłowymi podpisami mógł pojawić się w tej historii, jakby był prawdziwy.
Do momentu podpisania nic nie zostało utracone. Ważny podpis cyfrowy może autoryzować niewłaściwą płatność, jeśli transakcja przedstawiona do podpisania została zmieniona — i dokładnie to dostarcza podbicie opłaty.
Co widziały dwie ofiary
Pierwsze zgłoszenie przyszedł od użytkownika dannydeezy 11 października. Płatność została wysłana z portfela multisignature 2-of-3 zabezpieczonego dwoma urządzeniami sprzętowymi Trezor, łącząc 31 wejść w jedno wyjście. Użytkownik sprawdził adres docelowy na obu Trezorach, a następnie rozgłosił transakcję. Historia Electrum pokazała następnie pełną kwotę zmierzającą, niepotwierdzoną, do nieznanego adresu, po czym wpis zmienił się na „Local." Nic nigdy nie trafiło do mempoola.
Fałszywka została starannie zbudowana. Wykorzystała te same wejścia i skopiowała dane podpisu prawdziwej transakcji bajt po bajcie, dzięki czemu wszystkie 62 podpisy pasowały do autentycznej płatności, a żaden nie pasował do fałszywej. Prawie wszystko trafiło na adres kończący się „GyQ3" — tymi samymi czterema znakami co prawdziwy adres docelowy — a niewielka kwota wróciła na jeden z adresów portfela, imitując normalną resztę. Opłata była bliska zeru. Ponieważ użytkownik nie podpisał ponownie, prawdziwa transakcja pozostała ważna i nierozgłoszona, a środki nie zostały utracone.
Deweloperzy nie zidentyfikowali wektora podbijania opłat, dopóki drugi użytkownik, Raju-K12, nie zgłosił 18 października, że stracił środki po podbiciu opłaty fałszywej transakcji. Kwota nie została ujawniona.
- 11 paź: Pierwsze prywatne zgłoszenie, bez wątku podbijania opłat
- 18 paź: Drugie zgłoszenie, po stracie z powodu podbicia opłaty
- 19 paź: Wersja 4.8.3 otagowana z poprawką
- 24 paź: Wydanie binariów i publikacja biuletynu
Co naprawia 4.8.3, a czego nie
Poprawka sprawia, że Electrum weryfikuje podpisy każdej niepotwierdzonej transakcji wydającej monety z adresów własnych portfela, zanim doda ją do historii. Fałszywa płatność wychodząca z nieprawidłowymi podpisami jest teraz odrzucana zamiast wyświetlana, co zamyka tę drogę ataku.
Kontrola jest celowo wąska. Przychodzące niepotwierdzone transakcje nadal nie są walidowane, a biuletyn wyjaśnia dlaczego: Electrum nie ma peł silnika konsensusu, a sprawdzanie cudzych wejść oznaczałoby śledzenie ich niepotwierdzonych transakcji nadrzędnych wstecz, aż do tych już wykopanych. Transakcje potwierdzone były już weryfikowane poprzez uproszczoną weryfikację płatności (SPV), która porównuje je z nagłówkami bloków.
Użytkownicy łączący się wyłącznie z zaufanymi serwerami, np. własnymi, nie byli narażeni. To wyłączenie nie obejmuje dowolnego serwera publicznego, który portfel wybierze jako główne połączenie.
Zanim ponownie coś podpiszesz
- Zaktualizuj do 4.8.3. Pobierz ją z oficjalnej strony Electrum i zweryfikuj podpis pliku zgodnie z tamtejszymi instrukcjami.
- Sprawdź pełny adres. Porównaj go z pierwotną fakturą lub żądaniem płatności, a nie z historią portfela, którą kontroluje atakujący.
- Potwierdź na ekranie urządzenia. Sprawdź kwoty i opłaty przy każdym nowym podpisie. Poradnik RBF oraz poradnik wysyłania firmy Trezor kierują użytkowników do weryfikacji zaktualizowanych szczegółów na urządzeniu.
- Utknęła lub zmieniona? Stop. Sprawdź pierwotny identyfikator transakcji w niezależnym eksploratorze bloków, zanim cokolwiek podbijiesz. W pierwszym zgłoszeniu prawdziwa płatność nigdy nie dotarła do sieci.
Każdy, kto jeszcze nie może zaktualizować oprogramowania, znajdzie obejście w biuletynie: przy podpisywaniu jakiejkolwiek transakcji, z podbiciem opłaty lub bez, należy sprawdzić, czy adresy wyjściowe i kwoty są dokładnie zgodne z oczekiwaniami. Wersje starsze niż 4.8.3 nie wykonują nowej kontroli podpisów, więc dla osób pozostających na starszym wydaniu ręczna weryfikacja jest jedyną ochroną przed tą drogą ataku. Łatka zamyka tę konkretną ścieżkę, ale Electrum nadal polega na głównym serwerze dla danych niepotwierdzonych, więc ekran zatwierdzania płatności pozostaje ostateczną kontrolą.
Ten artykuł ma charakter wyłącznie informacyjny i nie stanowi porady finansowej ani inwestycyjnej.
Źródło: Coindoo