Ataki na łańcuch dostaw: złośliwe pakiety i przejęte biblioteki portfeli
Atak na łańcuch dostaw w krypto ukrywa złośliwy kod w oprogramowaniu, któremu ufasz. Dowiedz się, jak działają przejęte pakiety i biblioteki portfeli oraz jak się chronić.
Atak na łańcuch dostaw w krypto polega na tym, że przestępcy przejmują oprogramowanie, od którego zależą portfele, aplikacje lub strony internetowe, na przykład pakiet open source, rozszerzenie przeglądarki lub serwer aktualizacji, tak aby złośliwy kod dotarł do użytkowników zaufanym kanałem. Kod zazwyczaj podmienia adresy docelowe, wstrzykuje wallet drainer do strony internetowej lub kradnie frazy seed, a ofiary często nie robią nic złego poza korzystaniem z produktu, któremu już ufają.
Te ataki dotyczą wszystkich w świecie krypto, nie tylko programistów. Nowoczesne portfele i zdecentralizowane aplikacje składają się z setek komponentów zewnętrznych, a jeden przejęty komponent może jednocześnie dotknąć wielu produktów. Ten poradnik wyjaśnia, jak działają te ataki, na co zwracać uwagę i jak ograniczyć ryzyko jako użytkownik lub twórca.
Jak działa atak na łańcuch dostaw
„Łańcuch dostaw” aplikacji krypto to wszystko, co się na nią składa: biblioteki kodu, narzędzia do budowania, dostawcy hostingu, sieci dostarczania treści i serwery aktualizacji. Atak zwykle przebiega według tych kroków:
- 1Zdobycie dostępu. Atakujący wyłudza dane od opiekuna popularnej biblioteki, kupuje porzucony pakiet, zgaduje słabe hasło lub wykorzystuje lukę w serwerze budowania.
- 2Wstawienie złośliwego kodu. Publikuje nową wersję z ukrytym kodem, często zaciemnionym i zaprojektowanym tak, by uruchamiał się tylko w określonych warunkach, na przykład gdy obecny jest portfel kryptowalutowy.
- 3Rozprzestrzenianie przez aktualizacje. Aplikacje, które automatycznie pobierają najnowszą wersję biblioteki, włączają złośliwy kod do kolejnego buildu, a w przypadku stron internetowych – gdy tylko skrypt się załaduje.
- 4Kradzież. Kod może podmieniać adresy skopiowane do schowka, wyświetlać fałszywe żądanie transakcji, prosić o frazę seed lub wstrzykiwać drainer do front-endu zdecentralizowanej aplikacji.
- 5Zacieranie śladów. Atakujący często szybko usuwają kod po użyciu, co utrudnia dochodzenie.
Istnieją udokumentowane, prawdziwe incydenty według tego schematu. W 2018 roku do popularnego pakietu JavaScript dodano złośliwą zależność, której celem była kradzież od użytkowników konkretnej aplikacji portfela bitcoin. W grudniu 2023 roku przejęta wersja biblioteki Connect Kit firmy Ledger sprawiła, że kilka zdecentralizowanych aplikacji przez krótki czas wyświetlało swoim użytkownikom wallet drainer. Oba przypadki pokazują, że słabym punktem był współdzielony kod, a nie użytkownicy. Więcej na ten temat w artykule Ryzyko adresów vanity i adresów łudząco podobnych.
Typowe punkty wejścia
| Punkt wejścia | Jak jest wykorzystywany | Kogo dotyczy |
|---|---|---|
| Pakiety open source (npm, PyPI i podobne) | Opublikowanie złośliwej wersji lub wgranie pakietu o łudząco podobnej nazwie | Aplikacje i programiści korzystający z pakietu |
| Skrypty front-endowe ładowane od stron trzecich | Zmiana skryptu w celu wstrzyknięcia drainera | Każdy odwiedzający stronę |
| Rozszerzenia przeglądarki | Rozszerzenie zostaje sprzedane lub przejęte, a następnie zaktualizowane złośliwym kodem | Użytkownicy z zainstalowanym rozszerzeniem |
| Aktualizacje aplikacji | Przejęcie serwera aktualizacji lub kluczy podpisujących | Użytkownicy instalujący aktualizację |
| Narzędzia programistyczne i pakiety sugerowane przez AI | Fałszywe nazwy pakietów, które wyglądają wiarygodnie | Programiści instalujący bez sprawdzenia |
Typosquatting, czyli wgrywanie pakietu o nazwie bardzo zbliżonej do popularnego, jest szczególnie częsty. Programista, który pomyli się przy wpisywaniu nazwy pakietu, może zainstalować złośliwe oprogramowanie, nawet tego nie zauważając.
Hipotetyczny przykład
To ilustracyjny, złożony przykład, a nie prawdziwy przypadek. Wyobraź sobie małą zdecentralizowaną giełdę, która ładuje popularną bibliotekę do łączenia portfeli z publicznego rejestru pakietów. Pewnego ranka opiekun biblioteki pada ofiarą phishingu, a atakujący publikuje nową wersję. Strona giełdy automatycznie ładuje najnowszą wersję.
Przez kilka godzin każdy użytkownik, który łączy portfel, widzi coś, co wygląda jak zwykłe żądanie swapu. W rzeczywistości jest to prośba o zgodę na tokeny dla kontraktu atakującego. Użytkownicy, którzy uważnie czytają ekran zatwierdzania w portfelu, zauważają nieznany kontrakt i przerywają. Ci, którzy klikają bez czytania, tracą tokeny. Zespół giełdy odkrywa problem, gdy użytkownicy zgłaszają straty, i publikuje ostrzeżenie, ale wtedy kod jest już usunięty.
Sygnały ostrzegawcze dla użytkowników
- Znana aplikacja nagle prosi o frazę seed lub o krok „walidacji portfela”, o który nigdy wcześniej nie prosiła.
- Rutynowa czynność wywołuje nietypowe żądanie w portfelu, na przykład nieograniczoną zgodę lub podpis dla nieznanego kontraktu.
- Adres wyświetlany na ekranie twojego portfela sprzętowego nie zgadza się z zamierzonym.
- Rozszerzenie przeglądarki się aktualizuje i prosi o nowe uprawnienia, zwłaszcza do odczytu i zmiany danych na wszystkich stronach.
- Projekt lub badacze bezpieczeństwa publikują pilne ostrzeżenia, by nie korzystać z danej strony lub aplikacji.
Wiele z nich pokrywa się z sygnałami złośliwego oprogramowania schowka i fałszywych aplikacji portfeli, które stosują podobne techniki. Zobacz też: Fałszywe aktualizacje przeglądarki i złośliwe oprogramowanie captcha wymierzone w użytkowników krypto.
Jak się chronić
Jako użytkownik
- 1Używaj portfela sprzętowego i przed potwierdzeniem czytaj na jego ekranie adres, kwotę i kontrakt.
- 2Ogranicz rozszerzenia do minimum. Usuń te, których nie używasz, i zachowaj ostrożność, gdy rozszerzenie zmienia właściciela lub prosi o nowe uprawnienia.
- 3Rozdzielaj środki. Długoterminowe zasoby trzymaj w portfelu, który rzadko łączy się ze stronami, a do codziennego DeFi używaj innego portfela.
- 4Zatrzymaj się po alertach bezpieczeństwa. Nie korzystaj z aplikacji, dopóki nie potwierdzi, że problem został naprawiony.
- 5Regularnie cofaj niepotrzebne zgody.
Jako programista lub projekt
- Przypinaj wersje zależności i używaj plików blokady (lockfile); przeglądaj zmiany przed aktualizacją.
- Starannie sprawdzaj nazwy pakietów i wybieraj dobrze utrzymywane biblioteki.
- Wymagaj uwierzytelniania wieloskładnikowego dla kont w rejestrach pakietów i serwisach hostingu kodu.
- Używaj podpisanych wydań i, tam gdzie to możliwe, powtarzalnych buildów, aby użytkownicy mogli weryfikować pliki binarne.
- Stosuj content security policy i subresource integrity dla skryptów stron trzecich.
Co zrobić, jeśli cię to dotknęło
- 1Przestań korzystać z zaatakowanej aplikacji lub rozszerzenia i odłącz wszystkie portfele.
- 2Sprawdź historię transakcji pod kątem zgód lub przelewów w okresie ataku.
- 3Cofnij podejrzane zgody i przenieś pozostałe środki do nowego portfela z nową frazą seed, jeśli twoja fraza seed mogła zostać ujawniona.
- 4Zbierz hashe transakcji i adresy, a następnie zgłoś incydent przez oficjalne kanały projektu oraz nasz formularz zgłaszania oszustw.
Skorzystaj z pełnej listy kontrolnej w artykule co zrobić natychmiast, jeśli twój portfel został przejęty.
Podsumowanie
Ataki na łańcuch dostaw zamieniają zaufane oprogramowanie w kanał kradzieży, więc nie możesz polegać wyłącznie na unikaniu podejrzanych linków. Traktuj ekran portfela sprzętowego i żądania w portfelu jako ostatnią kontrolę, ograniczaj ilość używanego oprogramowania i szybko reaguj na oficjalne alerty bezpieczeństwa. Największą odpowiedzialność ponoszą twórcy: przypinajcie, przeglądajcie i podpisujcie wszystko, co wydajecie.
Najczęściej zadawane pytania
Czym jest atak na łańcuch dostaw w krypto?
To atak, w którym przestępcy przejmują oprogramowanie, od którego zależą inne produkty, na przykład bibliotekę kodu, rozszerzenie przeglądarki lub aktualizację aplikacji, zamiast atakować użytkowników bezpośrednio. Gdy zaufane oprogramowanie zostaje zaktualizowane, złośliwy kod trafia do każdej aplikacji i każdego użytkownika, który z niego korzysta, często po to, by ukraść kryptowaluty lub podmienić adresy.
Czy atak na łańcuch dostaw może dotknąć portfela sprzętowego?
Ekran portfela sprzętowego ma chronić cię nawet wtedy, gdy twój komputer lub strona internetowa zostały przejęte, ponieważ prawdziwy adres i kwotę potwierdzasz na urządzeniu. Atak wciąż może jednak skłonić cię do zatwierdzenia złośliwej transakcji, jeśli nie czytasz ekranu, dlatego zawsze sprawdzaj szczegóły na samym urządzeniu.
Skąd mam wiedzieć, czy strona, z której korzystałem, została zaatakowana?
Zwykle dowiadujesz się o tym z oficjalnych komunikatów projektu, którego to dotyczy, lub od badaczy bezpieczeństwa. Jeśli projekt, z którego korzystałeś, zgłasza przejętą bibliotekę lub front-end, sprawdź, czy podpisałeś coś w okresie ataku, cofnij zgody i w razie potrzeby przenieś środki do nowego portfela.
Czy portfele open source są bezpieczne przed atakami na łańcuch dostaw?
Otwarty kod pomaga, bo więcej osób może go sprawdzić, ale nie czyni oprogramowania odpornym. Złośliwy kod może przedostać się przez zależności, przejęte konta opiekunów lub systemy budowania. Powtarzalne buildy, podpisane wydania i staranne zarządzanie zależnościami zmniejszają ryzyko.
