Luka w Bitcoin Core umożliwiała zdalne wykonanie kodu na węzłach
Deweloperzy Bitcoin Core ogłosili odkrycie poważnej luki bezpieczeństwa, oznaczonej jako CVE-2024-52911, która umożliwiała górnikom zdalne zawieszenie lub wykonanie dowolnego kodu na węzłach innych użytkowników sieci. Błąd dotyczył oprogramowania Bitcoin Core w wersjach od 0.14.1 do 28.4 i został naprawiony w wersji 29.
Jak działał atak?
Atak polegał na wykorzystaniu mechanizmu walidacji bloków. Podczas przetwarzania specjalnie spreparowanego bloku z wystarczającym dowodem pracy (proof-of-work), atakujący mógł spowodować zawieszenie węzła lub przejąć kontrolę nad jego pamięcią, co umożliwiało zdalne wykonanie kodu. Luka była typu use-after-free – dochodziło do odczytu z pamięci, która została już zwolniona przez inny proces.
Według oficjalnego komunikatu Bitcoin Core, zdalne wykonanie kodu było teoretycznie możliwe, jednak nie ma dowodów, że doszło do takich incydentów. Atak wymagałby ogromnych nakładów energetycznych, ponieważ górnicy musieliby skierować moc obliczeniową na generowanie nieprawidłowych bloków, które nie mogłyby zostać nagrodzone w systemie coinbase.
Kto zgłosił lukę i jak ją naprawiono?
Błąd został wykryty i zgłoszony przez dewelopera Cory’ego Fieldsa już w listopadzie 2024 roku. Cztery dni później, Pieter Wuille zaproponował poprawkę w ramach Pull Request 31112, zatytułowanego „Poprawa debugowania błędów równoległej walidacji skryptów”. Poprawka została przedstawiona jako rutynowa aktualizacja konserwacyjna, aby ukryć jej prawdziwe znaczenie.
Stare węzły nadal narażone na atak
Pomimo dostępności poprawki, 43% węzłów Bitcoin nadal działa na podatnym oprogramowaniu. Aktualizacja do wersji 29 lub nowszej jest dobrowolna, a proces nie odbywa się automatycznie. Oznacza to, że część sieci pozostaje narażona na potencjalne wykorzystanie luki, mimo że jej praktyczne zastosowanie jest mało prawdopodobne ze względu na wysokie koszty ataku.
Dlaczego atak był mało prawdopodobny?
- Koszt energetyczny: Generowanie nieprawidłowych bloków wymagało ogromnych nakładów energii, które nie mogły zostać zrekompensowane nagrodą.
- Ograniczenia techniczne: Struktura bloków Bitcoin uniemożliwiała łatwe przeprowadzenie ataku w praktyce.
- Brak dowodów na wykorzystanie: Pomimo teoretycznej możliwości, nie ma potwierdzonych przypadków przeprowadzenia takiego ataku.
„To pierwszy raz, kiedy ujawniliśmy błąd związany z bezpieczeństwem pamięci w Bitcoin Core od dwóch lat. Luka typu use-after-free w silniku walidacji była poważnym zagrożeniem, ale jej praktyczne wykorzystanie było niezwykle kosztowne.”
— Niklas Gögge, deweloper Bitcoin Core
Jak zabezpieczyć swój węzeł?
Aby uniknąć ryzyka, użytkownicy powinni jak najszybciej zaktualizować swoje węzły do wersji 29 lub nowszej. Aktualizacja jest dostępna na oficjalnej stronie Bitcoin Core i nie wymaga skomplikowanych działań. Warto również monitorować komunikaty deweloperów dotyczące kolejnych poprawek bezpieczeństwa.