Ostatni błąd w kodzie Bitcoina był tak katastrofalny, że deweloperzy trzymali go w sekrecie

1971

W tym tygodniu dowiedzieliśmy się, że jeden z poważnych błędów w kodzie Bitcoina był jeszcze gorszy, niż wszyscy wcześniej sądziliśmy.

Bug, o którym mówimy, już wcześniej zatrząsł światem kryptowalut, kiedy okazało się, że może spowodować wyłączenie sporej części jego sieci.

Mimo że samo to brzmiało już groźnie dla wielu osób, okazuje się, że deweloperzy BTC trzymali drugą, dużo poważniejszą część błędu w sekrecie. Jak ujawniono w oficjalnym raporcie dotyczącym powszechnych luk i zagrożeń (z angielskiego Common Vulnerabilities and Exposures, CVE), atakujący byłby w stanie użyć tego błędu, by wprowadzić nowe bitcoiny do obiegu – ponad ich limit wynoszący 21 milionów – jednocześnie pompując podaż i obniżając wartość istniejących BTC.

Takie wypaczenie ogólnie przyjętych zasad mogłoby w najgorszym przypadku zniechęcić świat do całej idei kryptowalut.

Wykorzystanie tego błędu mogło nieść za sobą fatalne skutki, dlatego deweloperzy postanowili trzymać go w sekrecie, kupując sobie trochę czasu na załatanie go i poinformowanie minerów oraz użytkowników o aktualizacji oprogramowania.

Wspomniany wyżej raport CVE został napisany po fakcie przez programistów BTC i wyjaśnia, że:

Aby zachęcić do szybkiej aktualizacji oprogramowania, podjęto decyzje o natychmiastowym poprawieniu błędu i powiadomieniu społeczność o mniej poważnej luce w zabezpieczeniach. Jednocześnie zwróciliśmy się do minerów, firm i powiązanych systemów o jak najszybsze przejście na nową wersję klienta, opóźniając ujawnienie pełnej informacji o istocie tego błędu.

I wygląda na to, że plan zadziałał.

Klienci z ponad połową mocy wykopującej bitcoina działają już na nowej wersji oprogramowania, co oznacza, że atak nie może być przeprowadzony. Sam raport stwierdza, że deweloperzy są „nieświadomi jakichkolwiek prób wykorzystania tej luki”.

Kto znalazł błąd?

Zetknięcie się z tak poważnym błędem było na pewno stresujące dla programistów.

Według raportu nieznany użytkownik przekazał informację o zagrożeniu typu Denial of Service (czyli blokadzie usługi) deweloperom Bitcoina i Bitcoina ABC, pracującym nad oprogramowaniem dla bitcoina cash. Dwie godziny później inżynier Chaincode’a i programista bitcoina Matt Corallo zdał sobie sprawę, że luka może zostać użyta, by wydrukować nielimitowaną liczbę bitcoinów.

Rozumiejąc powagę sytuacji, programiści zdecydowali się milczeć na temat szczegółów tego błędu.

Jednocześnie, zaczynając od grupy Slush Pool, zaczęli namawiać minerów do wykonania aktualizacji oprogramowania. Dla użytkowników bitcoina, którzy zarządzają pełnymi węzłami, wystosowano podobną prośbę.

„Nie powinniście działać na innej wersji bitcoina niż 0.16.3. Starsze wersje oprogramowania nie powinny mieć miejsca w sieci. Jeśli znacie kogokolwiek pracującego na nieaktualnym kliencie, powiedzcie im, że muszą wykonać JAK NAJSZYBCIEJ aktualizację”, czytamy w przypiętym poście na subreddicie bitcoina.

Jednakże na horyzoncie pojawił się nowy problem – możliwość rozszczepienia łańcucha bloków.

Ponieważ klienci posiadają różne wersje oprogramowania bitcoina, jest ryzyko, że sieć tymczasowo się rozdwoi, by później wrócić do pojedynczego łańcucha. W takim wypadku transakcje ze starego oprogramowania mogą zostać utracone.

Mimo że sytuacja jest poważna i cała sieć jest nieustannie monitorowana, moderator na subreddicie bitcoina o przydomku Theymos twierdzi, że szansa na zaistnienie takiej sytuacji jest mała. Jednocześnie zalecał, by ludzie byli ostrożni w tym czasie i czekali trochę dłużej na weryfikację transakcji w łańcuchu bloków.

Dodał również, że:

Przez następny tydzień, lub trochę dłużej, jest mała szansa na to, że jakakolwiek transakcja z mniej niż dwustoma potwierdzeniami zostanie wycofana.

Fałszywy bitcoin?

Jednak w umysłach użytkowników ciągle powraca pytanie, czy ktokolwiek mógł wykorzystać katastrofalny błąd w kodzie.

„Jak możemy mieć pewność, że ta luka nie została już wykorzystana i ktoś tam posiada stos fałszywych bitcoinów?”, zapytał jeden z użytkowników bitcoina.

Na szczęście deweloper bitcoina Pieter Wuille wyjaśnił, że zasady rządzące siecią wskazałaby jakąkolwiek podejrzaną aktywność.

Kiedy uruchamia się oprogramowanie pełnego węzła po raz pierwszy, sprawdza ono wszystkie transakcje wykonane w historii bitcoina. Węzeł uruchomiony w wersji 0.16.3 natychmiastowo by wykrył jakikolwiek problem.

Mimo to niektórzy podnoszą też pytanie, co by się stało, gdyby błąd nie został w porę wykryty.

Według Theymosa: „nawet jeśli luka byłaby wykorzystana z całkowitą premedytacją, teoretyczne szkody dla istniejących bitcoinów zostałyby odwrócone.”

Byłaby to podobna sytuacja do incydentu „przekroczenia wartości” z 2010 roku, kiedy to 187 miliardów bitcoinów pojawiło się znikąd w sieci, jednakże zostały one wkrótce później zniszczone.

Należy tez zwrócić uwagę, że mimo iż dzisiejszy BTC, LTC i kilka innych monet bazujących na oryginalnym kodzie bitcoina już wprowadziły poprawki do sieci, to część z nich jeszcze tego nie zrobiła – i nadal są one zagrożone atakiem.