W tym poście przeanalizowano atak na firmę Ledger jako przykład tego, jak atak typu spear phishing doprowadził do ataku na łańcuch dostaw oprogramowania (SSC) na narzędzie Connect-Kit wykorzystywane w portfelach sprzętowych firmy, umożliwiając atakującemu kradzież środków o wartości co najmniej 600 000 USD.
Atak ten nastąpił pod koniec roku, w którym odnotowano liczne incydenty w łańcuchu dostaw. W tym artykule analizujemy atak, jego wpływ, sposób radzenia sobie z nim i wnioski, jakie można z niego wyciągnąć.
Ledger i użytkownicy jego portfela sprzętowego to oczywiste cele cyberprzestępców. Osoby wysysające pieniądze z portfela atakowały użytkowników Ledgera za pomocą prób phishingu w interfejsach aplikacji kryptowalutowych, a przestępcy muszą znać współrzędne użytkowników, aby prowadzić kampanie phishingowe. Ledger miał naruszenie danych do lipca 2023 r. jak również będąc częścią Kradzież danych we wrześniu 2020 r. w ich sklepie internetowym Shopify, incydent o dużym wpływie. Post „Aktualizacja: Działania mające na celu ochronę Twoich danych i ściganie spamerów„pokazuje, jak głębokie były te wyłomy.
Firma Ledger musi poważnie podchodzić do kwestii bezpieczeństwa (jest to kluczowy element jej działalności) i utworzyć wewnętrzne laboratorium badawcze (zachować) obsługiwanie certyfikacja bezpieczeństwa urządzenia, A nagroda za błąd program, biuletyny bezpieczeństwa, modelowanie zagrożeń. Jak dotąd wszystko jest w porządku…
Jak przeprowadzono atak
Ledger wykrył lukę w zabezpieczeniach wykorzystującą oprogramowanie Ledgera Zestaw DApp Connect w czwartek, 14 grudnia 2023 r. Ten exploit wstrzyknął złośliwy kod do zdecentralizowanych aplikacji opartych na Ethereum (DApps) korzystających z Ledger Connect Kit, nakłaniając użytkowników do podpisywania transakcji, które opróżniały ich portfele.
Błąd został szybko wykryty i wkrótce potem wdrożono rozwiązanie. W międzyczasie niewielka liczba użytkowników padła ofiarą ataku i podpisała transakcje, wyczerpując środki z ich portfeli.
Atak rozpoczął się, gdy były pracownik Ledger padł ofiarą ataku phishingowego, który uzyskał dostęp do jego konta NPM za pośrednictwem tokena sesji. Atakujący opublikowali złośliwe wersje @ledgerhq/connect-kit (1.1.5, 1.1.6 i 1.1.7, obecnie wycofane). Atakujący mogliby uruchomić dowolny kod z tym samym poziomem uprawnień, co aplikacja portfela: mogliby natychmiastowo wypłacić środki użytkowników bez interakcji, rozsyłać liczne linki phishingowe, aby oszukać użytkowników, lub wykorzystać panikę użytkowników, nakłaniając ich do przesłania środków na nowy adres, co skutkowałoby utratą środków z powodu pobrania fałszywego portfela.
Aplikacje front-end portfeli (dApps) zazwyczaj używają ładowarka zestawu połączeniowego Pakiet od Ledgera do ładowania Connect Kit w czasie wykonywania z CDN JavaScript (jsDelivr). Niestety, adres URL https://cdn.jsdelivr.net/npm/@ledgerhq/connect-kit@1 nie przypinał dokładnej wersji (w tamtym czasie 1.1.4), więc gdy złośliwe wersje zostały przesłane, były one obsługiwane (i buforowane) przez CDN. Nie użyto żadnej sumy kontrolnej, aby upewnić się, że pobrany zasób z CDN był rzeczywiście oczekiwanym (co powinno być stosowane podczas dystrybucji kodu z CDN). Ten schemat oparty na sumie kontrolnej nazywa się Integralność podrzędnych zasobów (SRI).
Wstrzyknięty kod prawdopodobnie manipulował danymi transakcji, nakłaniając użytkowników do potwierdzania zmanipulowanych płatności. Na przykład, użytkownik zatwierdzający płatność tokenem w celu włączenia funkcjonalności aplikacji mógł zamiast tego zobaczyć akceptację płatności na adres hakera. Niezależnie od tego, jak bezpieczny jest portfel sprzętowy, pieniądze zostały wykradzione.
Odkrycia i śledztwa
Różni użytkownicy zaczęli publikować w X (znanym również jako Twitter) wiadomości, że front-end Zappera „został przejęty”. Zasługa należy się Mathewowi Lilleyowi, dyrektorowi technicznemu kryptotradera Sushi, który jako pierwszy ostrzegł w Twitter postu że „powszechnie używany łącznik web3” został naruszony. Później wskazał na LedgerHQ/zestaw połączeniowy jako zagrożoną bibliotekę i przedstawił pierwszą ocenę, nieco brutalną:
Co się stało?
— Jestem oprogramowaniem 🦇🔊 (@MatthewLilley) December 14, 2023
W skrócie, @Księga główna popełnił szereg okropnych błędów.
1. Ładują JS z CDN.
2. Nie zawierają one kodu JS z blokadą wersji.
3. Ich sieć CDN została naruszona.
Unikałbym korzystania z jakichkolwiek zdecentralizowanych aplikacji (dApps), dopóki ich zespoły nie potwierdzą, że udało im się zaradzić atakowi. https://t.co/a3brXNQSx9
Użytkownik 0xViva otworzył zgłoszenie w repozytorium projektu GitHub: [PILNE] To repozytorium wykorzystuje złośliwą wersję pakietu npm @ledgerhq/connect-kit, 1.1.7.
15 grudnia 2023 r. firma zajmująca się bezpieczeństwem blockchain SlowMost opublikowała post analityczny podając pełne szczegóły dotyczące złośliwych wersji.
Portfel sprzętowy Ledger nie został naruszony, jedynie Ledger Connect Kit. Ponieważ jednak wiele aplikacji korzysta z tej biblioteki, takich jak SushiSwap, Zapper, MetalSwap, Harvest Finance, Revoke.cash itp., skala ataku była znacząca. Według bittrace.ioNiektóre ofiary w panice próbowały przelać środki na nowy adres, pobierając przy tym fałszywą aplikację portfela!
Tego samego dnia Jameson Lopp dokładnie podsumowałem o wadach, które pozwoliły na powodzenie ataku:
Wygląda na to, że dzisiejszy incydent bezpieczeństwa był kulminacją trzech oddzielnych awarii w firmie Ledger:
- Jameson Lopp (@lopp) December 14, 2023
1. Bezmyślne ładowanie kodu bez określenia konkretnej wersji i sumy kontrolnej.
2. Brak egzekwowania „zasady dwóch osób” podczas przeglądu kodu i wdrażania.
3. Nieodwoływanie dostępu byłemu pracownikowi.
Jak potraktowano incydent
Dyrektor generalny Ledger, Pascal Gauthier, opublikował tego samego dnia atak pismo ujawniające podając więcej szczegółów na temat incydentu, co jest zdecydowanie dobre: Chowanie głowy w piasek jak struś to najgorszy sposób radzenia sobie z jakimkolwiek incydentem cyberbezpieczeństwa.
Ciekawa jest struktura listu: od razu przyznano w nim, że istnieją złośliwe wersje biblioteki, które wysysają pieniądze, co jest dobre (zaprzeczanie rzeczywistości jest nonsensem):
„Dziś stanęliśmy ofiarą ataku na Ledger Connect Kit, bibliotekę JavaScript implementującą przycisk umożliwiający użytkownikom łączenie urządzenia Ledger z zewnętrznymi DApps (stronami internetowymi połączonymi z portfelem)”.
Exploit ten powstał w wyniku tego, że były pracownik padł ofiarą ataku phishingowego, który umożliwił złej osobie przesłanie szkodliwego pliku do NPMJS firmy Ledger (menedżer pakietów dla kodu JavaScript współdzielonego między aplikacjami).
Szybko podjęliśmy działania, wspólnie z naszym partnerem WalletConnect, aby rozwiązać problem z luką w zabezpieczeniach, aktualizując NPMJS w celu usunięcia i dezaktywacji złośliwego kodu w ciągu 40 minut od jego wykrycia. To dobry przykład szybkiej współpracy branży w celu rozwiązania problemów z bezpieczeństwem.
Co? Były pracownik z prawami do publikacji nie miał cofniętych uprawnień w NPM?
Następnie dyrektor generalny wymienił zastosowane środki bezpieczeństwa, dając jednocześnie do zrozumienia, że dostęp do NPM jest słaby:
„Chciałbym teraz wyjaśnić, dlaczego tak się stało, w jaki sposób możemy udoskonalić nasze praktyki bezpieczeństwa, aby ograniczyć to konkretne ryzyko w przyszłości, a także podzielić się naszą rekomendacją z przedstawicielami branży, dzięki której możemy być silniejsi razem.
standard W Ledger obowiązuje zasada, że żadna osoba nie może wdrożyć kodu bez weryfikacji przez wiele stron. W większości procesów rozwoju stosujemy rygorystyczne kontrole dostępu, wewnętrzne przeglądy i wielokrotne podpisy kodu. Dotyczy to 99% naszych systemów wewnętrznych. Każdemu pracownikowi, który odchodzi z firmy, zostaje cofnięty dostęp do wszystkich systemów Ledger.
To był niefortunny, odosobniony incydent. Przypomina nam on, że bezpieczeństwo nie jest statyczne i że Ledger musi stale ulepszać nasze systemy i procesy bezpieczeństwa. W tym obszarze Ledger wdroży silniejsze mechanizmy kontroli bezpieczeństwa, łącząc nasze kompilacje. pipeline który wdraża ścisłe software supply chain security do kanału dystrybucji NPM."
Wygląda na to, że konto NPM z uprawnieniami do publikowania nowych wersji biblioteki miało mniej rygorystyczne kontrole bezpieczeństwa niż inne części infrastruktury oprogramowania. Odosobniony incydent spowodowany pechem?
Zakończenie listu jest bardziej standard część dotycząca współpracy z władzami, „oświadczenie o kontroli” i przeprosiny:
„Ledger nawiązał kontakt z władzami i dokłada wszelkich starań, aby pomóc w toku śledztwa. Ledger będzie wspierać użytkowników, których dotknęło naruszenie, w znalezieniu sprawcy, postawieniu go przed wymiarem sprawiedliwości, śledzeniu funduszy i współpracy z organami ścigania w celu odzyskania skradzionych aktywów od hakera. Głęboko ubolewamy nad wydarzeniami, które miały miejsce dzisiaj i które dotknęły osoby dotknięte przestępstwem.
Sytuacja jest już pod kontrolą, a zagrożenie minęło. Rozumiemy panikę, jaką to wywołało wśród społeczności i całego ekosystemu.
Do listu dołączono oś czasu, która jest bardzo przydatna dla użytkowników, którzy chcą zrozumieć, jak incydent został wykryty, jakie konkretne działania zapobiegawcze i naprawcze zostały podjęte oraz w jaki sposób szkody poniesione przez użytkowników zostaną naprawione/zrekompensowane. To jest najbardziej specyficzna dla danej kryptowaluty część:
Dziś rano czasu środkowoeuropejskiego (CET) były pracownik Ledger padł ofiarą ataku phishingowego, który uzyskał dostęp do jego konta NPMJS. Atakujący opublikował złośliwą wersję pakietu Ledger Connect Kit (dotyczy wersji 1.1.5, 1.1.6 i 1.1.7). Złośliwy kod wykorzystywał nieuczciwy projekt WalletConnect do przekierowywania środków do portfela hakera. Zespoły ds. technologii i bezpieczeństwa Ledgera zostały powiadomione i poprawka została wdrożona w ciągu 40 minut od momentu wykrycia zagrożenia przez Ledgera. Złośliwy plik był aktywny przez około 5 godzin, jednak naszym zdaniem okres, w którym środki zostały wykradzione, był ograniczony do okresu krótszego niż dwie godziny.Ledger nawiązał współpracę z WalletConnect, który szybko unieszkodliwił ten nieuczciwy projekt. Oryginalna i zweryfikowana wersja Ledger Connect Kit 1.1.8 jest już dostępna i bezpieczna w użyciu.
Dla programistów rozwijających i korzystających z kodu Ledger Connect Kit: zespół programistów Connect Kit w projekcie NPM ma teraz dostęp tylko do odczytu i nie może bezpośrednio przesyłać pakietu NPM ze względów bezpieczeństwa. Wewnętrznie zmieniliśmy kody dostępu, aby opublikować je w serwisie GitHub Ledger. Deweloperzy, prosimy o ponowne sprawdzenie, czy korzystają z najnowszej wersji, 1.1.8.
Ledger wraz z PortfelPołącz i nasi partnerzy zgłosili adres portfela oszusta. Adres jest teraz widoczny na Chainalysis. Tether zamroził USDT złoczyńcy.”
Według tego, powstrzymanie ataku przebiegło błyskawicznie, ponieważ nieuczciwy projekt WalletConnect służący do przekierowywania środków został natychmiast wyłączony. Jednak mimo to niektóre portfele zostały opróżnione.
Następstwa: Jak zareagowała branża
Niektórzy użytkownicy wyrazili oburzenie, że Ledger nie zdołał zapobiec naruszeniu bezpieczeństwa, podczas gdy inni przestrzegali przed niebezpieczeństwami związanymi z poleganiem na bibliotekach innych firm.
Branża cyberbezpieczeństwa ma swoją niszę w cybermonetach. Kampanie drenażowe portfeli są powszechnie znane, a ich głównym zastosowaniem są strony phishingowe, które oszukują użytkowników końcowych. Typowy biznes SaaS (oszustwo jako usługa) ma wyspecjalizowanych aktorów, którzy drenują portfele, takich jak dostawcy oszustw. Wysysacz piekła który ogłoszono wstrzymanie działalności w listopadzie 2023 r. Wydaje się, że jest to w każdym razie fałszywa flaga, biorąc pod uwagę ostatnią aktywność zaobserwowaną w Dune @scamsnifferSchemat, który stosują, został wyjaśniony w tym poście Grupy IB:
Niektórzy analitycy podali wskazówki, co uniemożliwiło przeprowadzenie ataku. komentarz użytkownika brianddk w zgłoszeniu w repozytorium projektu można znaleźć informacje na temat przyczyny źródłowej:

A komentarz innego użytkownika, HenryQW, wskazał na drugą rzecz, która umożliwiała złośliwym wersjom rozprzestrzenianie się za pośrednictwem CDN:

Jest za wcześnie, aby zobaczyć długoterminowe inicjatywy mające na celu zwiększenie odporności front-endów portfeli kryptowalut na ataki phishingowe. Wygląda na to, że konieczne będzie przestrzeganie standard podobny do tego PA-DSS zmiany w oprogramowaniu dla dostawców aplikacji płatniczych mogą zostać przyjęte z zadowoleniem w branży kryptowalut.
A teraz wyciągnęliśmy wnioski!
Niesamowite, jak portfel sprzętowy, będący kwintesencją bezpieczeństwa kryptowalut, zostało naruszone przez samo złamanie dostępu do danych uwierzytelniających NPM „byłego pracownika” Ledgera (prawdopodobnie nazwa użytkownika/hasło bez zabezpieczenia 2FA lub tokena dostępu). Ten incydent stanowi dobitne przypomnienie, że w obliczu ataku infrastruktura oprogramowania musi być chroniona z taką samą starannością, jak oprogramowanie lub sprzęt.
Większość ataków na łańcuch dostaw oprogramowania rozpoczyna się od włamania na konto wewnętrzne (często należące do programisty lub inżyniera DevOps). Następnie atakujący albo przechodzą do ataku bocznego, aby włamać się do wewnętrznych systemów infrastruktury oprogramowania, takich jak CI/CD systemu lub narzędzi wdrożeniowych, albo potrafią dodać złośliwą logikę do repozytoriów kodu źródłowego, co mogłoby zostać wykryte, gdyby wdrożono odpowiednią obsługę zmian z wykorzystaniem ochrony gałęzi i przeglądów kodu. Atakujący nie muszą jednak sięgać tak głęboko, gdy celem jest popularna biblioteka opublikowana w rejestrze publicznym, zwłaszcza jeśli mogą uzyskać dostęp do danych uwierzytelniających do publikacji (zapisu). I właśnie tak było w tym ataku.
Uwierzytelnianie 2FA, a w szczególności poprzez stosowanie solidnych elementów, takich jak klucze bezpieczeństwa, ogranicza ryzyko związane z operacjami interaktywnymi. CI/CD pipelines, tokeny dostępu o ograniczonym dostępie przechowywane jako CI/CD Secret to standardowa metoda (a token dostępu nie powinien zostać ujawniony). Niestety, wygląda na to, że pracownik nie miał solidnego uwierzytelniania dwuskładnikowego. NPM pozwala organizacje do egzekwowania 2FA (ale to jest opcjonalne, a nie domyślne), co prawdopodobnie powinno być w Ledgerze. I nie zapomnij dodać odpowiednich cofnięcie poświadczeń procedury dla byłych pracowników, zwłaszcza mających dostęp do tak ważnych zasobów, jak zakres NPM należący do organizacji.
Przypinanie wersji W przypadku zależności z podwyżkami wersji weryfikowanych jest to praktyka ograniczająca rozprzestrzenianie się złośliwych zależności. W kontekście incydentu z Ledgerem, wersje biblioteki, które ładowarka zestawu połączeniowego pobrane z CDN powinno zostać przypięte i „nie ufaj temu, co rzuca CDN”. Mając weryfikacja sumy kontrolnej np. za pomocą SRI (lub nawet schematu podpisu cyfrowego, który również uwierzytelnia źródło) należy używać przy pobieraniu kodu z CDN w celu dynamicznego ładowania kodu.
Reszta to już historia.
W przypadku bardziej konwencjonalnych kampanii phishingowych skierowanych do użytkowników portfeli, pytanie brzmi: co sprawia, że użytkownicy wpadają w pułapki zastawiane przez przestępców i potwierdzają transakcje, których nigdy nie zamierzali wykonać? Strony phishingowe w tej domenie są dobrze zaprojektowane i przekonujące, imitując popularne marki kryptowalut; a także oferują darmowe tokeny. bicie NFT i inne nagrody. Unikanie wpadania użytkowników w takie pułapki to problem, na który trzeba znaleźć rozwiązanie.
I nie zapomnieć powiązane kryptohakowanie Ataki, bardziej ogólne zagrożenie, w którym przeciwnicy przejmują infrastrukturę chmurową, aby uruchomić koparki kryptowalut, często dla monet zapewniających prywatność, takich jak Monero, XMR i Zcash, z ukrytą historią transakcji. Kryptojacking jest istotny, ponieważ może dotknąć KAŻDĄ organizację i chociaż zysk dla atakującego może być niewielki, koszt dla ofiary może być wysoki (Sysdig wspomina w Niniejszy raport że za każdego 1 dolara wydobytego przez atakującego organizacja ponosząca ofiarę ponosi koszt w wysokości 53 USD).
Referencje
- Bilet „[PILNE] To repozytorium wykorzystuje złośliwą wersję pakietu npm @ledgerhq/connect-kit, 1.1.7” w repozytorium Github.
- List od dyrektora generalnego Ledger w sprawie incydentu, 14 grudnia 2023 r.
- Raport o incydencie bezpieczeństwa, przez Ledger, 20 grudnia 2023 r.
- Exploit Ledger zagraża DeFi; Sushi mówi: „Nie wchodź w interakcję z ŻADNYMI aplikacjami dApp”, opublikuj w CoinDesk przez Olivera Knighta, 14 grudzień 2023.
- Atak na łańcuch dostaw na Ledger Connect Kit: analiza wpływu i środków zapobiegawczych. Post użytkownika SlowMist na temat ataku, grudzień 2023.
- Koncepcje bezpieczeństwa Web3: Czynniki opróżniające portfel, autor: Jammel Weaver, w: Rektify AI, lipiec 2023 r.
Obejrzyj naszą demonstrację wideo







