Luka w portfelu Electrum umożliwiała złośliwym operatorom serwerów podmianę oczekujących transakcji bitcoinowych. Użytkownik mógł stracić środki, gdy próbował przyspieszyć przelew, podnosząc opłatę. Twórcy portfela potwierdzili, że co najmniej jedna osoba padła ofiarą ataku.
Jak działał atak
Electrum, jeden z najstarszych portfeli programowych dla Bitcoina, korzysta z zewnętrznych serwerów, by pobierać informacje o transakcjach i przekazywać je do sieci. W podatnych wersjach aplikacja nie weryfikowała podpisów przy niektórych niepotwierdzonych transakcjach otrzymanych od serwera.
Napastnik kontrolujący taki serwer mógł podstawić w historii portfela fałszywy przelew. Transakcja kierowała bitcoiny na adres przestępcy, ale początkowo była nieważna z powodu nieprawidłowych podpisów. Electrum nie wykrywał problemu i wyświetlał ją jako oczekującą.
Pułapka uruchamiała się, gdy użytkownik korzystał z funkcji Replace-by-Fee (RBF), pozwalającej zastąpić niepotwierdzoną transakcję nową, z wyższą opłatą. Portfel mógł wtedy podpisać poprawioną wersję podstawionej transakcji, tym razem skutecznie wysyłając środki na adres atakującego.
W jednym z opisanych przypadków fałszywy przelew nie zawierał żadnej opłaty, przez co wyglądał na zablokowany. Dodatkowo końcowe cztery znaki adresu odbiorcy zgadzały się z tymi w prawidłowym adresie, co mogło utrudnić zauważenie podmiany przy pobieżnym sprawdzaniu.
Ten przypadek pokazuje, jak istotne jest weryfikowanie szczegółów transakcji przed jej podpisaniem. Nawet znajomy adres może zostać podmieniony w sposób trudny do zauważenia. Aktualizacja portfela i ostrożność przy korzystaniu z RBF mogą pomóc ograniczyć ryzyko.
Zgłoszenia i poprawka
Deweloperzy otrzymali dwa zgłoszenia w październiku. Pierwsze, z 11 października, dotyczyło portfela z podpisem wielokrotnym 2 z 3, używającego dwóch urządzeń Trezor. Użytkownik zweryfikował właściwy przelew na obu urządzeniach, ale później zauważył w historii inną transakcję; nie zgłosił jednak utraty środków.
Drugie zgłoszenie wpłynęło 18 października. W tym przypadku użytkownik podwyższył opłatę za podmienioną transakcję i stracił bitcoiny. Twórcy Electrum nie ujawnili wartości skradzionych środków ani tożsamości złośliwych serwerów.
Wersja 4.8.3, opublikowana 24 października, dodaje kontrolę podpisów dla niepotwierdzonych transakcji wydających środki z portfela użytkownika. Starsze wydania mogą nadal być podatne, jeśli łączą się z serwerem kontrolowanym przez napastnika.
Przeczytaj także: Prywatne klucze, a nie smart kontrakty, odpowiadają za 40% strat w krypto – co się zmienia. Bezpieczeństwo środków zależy również od tego, jak chronione są klucze i proces autoryzacji transakcji.
Co powinni zrobić użytkownicy
Twórcy Electrum zalecają aktualizację portfela oraz dokładne sprawdzanie adresu odbiorcy i kwoty przed podpisaniem transakcji. Szczególną ostrożność warto zachować przy korzystaniu z RBF, zwłaszcza gdy przelew długo pozostaje niepotwierdzony.
Według deweloperów osoby korzystające wyłącznie z zaufanych serwerów, w tym z własnych, nie były narażone na opisany atak. Najważniejszym krokiem dla pozostałych użytkowników jest zainstalowanie poprawionej wersji i niezatwierdzanie transakcji bez ponownej weryfikacji jej szczegółów.


To jest dokładnie ten typ buga, ktory wychodzi dopiero w praktyce, a nie w „bezpiecznym” testlabie. Jeśli portfel ufa serwerowi przy niepotwierdzonych TX-ach, to cały model lekkiego klienta robi się kruchy. Dobrze, że poprawili weryfikację podpisów, ale szkoda, że ktoś już na tym stracil środki.
Kolejna lekcja, że RBF to nie jest magiczny przycisk „przyspiesz mi co popadnie”. Jak ktoś trzyma większe kwoty w Electrum i jeszcze odpala losowe serwery, to sam sobie zwiększa powierzchnię ataku. Własny serwer albo przynajmniej zaufany endpoint to minimum.
W opisie brzmi to bardziej jak problem z założeniem zaufania niż samą funkcją RBF. Electrum historycznie mocno polegało na serwerach SPV i teraz widać, gdzie jest słaby punkt. Zaskakujące, że podmiana przeszła bez natychmiastowej kontroli podpisu dla niepotwierdzonych wydatków.
Mam Electrum od lat, ale po takich akcjach i tak człowiek zaczyna patrzeć na historię dwa razy zanim kliknie „wyższa oplata”. Najgorsze, że taka podmiana może wyglądać niewinnie, szczególnie jak końcówka adresu się zgadza. Trochę strach używać portfela „na szybko”.
Tu ważny detal jest taki, że luka dotyczyła niepotwierdzonych transakcji wydających środki z portfela, czyli atakujący nie musiał łamać kluczy, tylko wstrzykiwał fałszywy stan. To jest klasyczny problem trust boundary w SPV. Dobrze, że 4.8.3 wymusza walidację podpisu, bo bez tego historia transakcji mogła być środowiskiem do podmiany.
Po tym, co zrobili z zaufaniem do zewnętrznych serwerów, już bym nie trzymał na takim portfelu większych kwot. „Nie były narażone osoby korzystające z własnych serwerów” – czyli jednak da się to ograniczyć, tylko trzeba było o tym pomyśleć wcześniej. Szkoda ludzi, którzy kliknęli RBF i nawet nie zauważyli podmiany.