Badacze bezpieczeństwa ujawnili szczegóły złośliwego pakietu opublikowanego w rejestrze npm, który z zewnątrz funkcjonuje jako pełnoprawne API do WhatsAppa, lecz zawiera też mechanizmy umożliwiające przechwytywanie wszystkich wiadomości i powiązanie konta ofiary z urządzeniem atakującego.
Pakiet o nazwie „lotusbail” został przesłany do rejestru przez użytkownika o nicku „seiren_primrose” w maju 2025 r. i od tego czasu pobrano go ponad 56 000 razy, z czego 711 pobrań miało miejsce w ciągu ostatniego tygodnia. Biblioteka była nadal dostępna do pobrania w momencie publikacji raportu.
Jak opisali badacze z Koi Security, za działającą na pierwszy rzut oka funkcjonalnością kryje się szkodliwe oprogramowanie, które „kradnie dane uwierzytelniające do WhatsAppa, przechwytuje każdą wiadomość, zbiera kontakty, instaluje trwały tylny kanał i szyfruje wszystko przed wysłaniem na serwer kontrolowany przez atakującego”. Pakiet potrafi przechwytywać tokeny uwierzytelniające i klucze sesji, historię wiadomości, listę kontaktów wraz z numerami telefonów oraz pliki multimedialne i dokumenty.
Technicznie złośliwość została zaimplementowana jako wrapper WebSocket, przez który przepływa komunikacja z WhatsApp Web API — biblioteka czerpie inspirację z legalnego projektu @whiskeysockets/baileys (WebSockets-owej biblioteki TypeScript do obsługi WhatsApp Web). Dzięki owemu wrapperowi wszystkie dane uwierzytelniające i wiadomości są rutowane przez złośliwy komponent, który następnie wysyła skradzione informacje do kontrolowanego przez atakującego adresu URL, uprzednio je szyfrując.
Dodatkowo pakiet zawiera ukrytą funkcję wykorzystującą twardo zakodowany kod parowania, która przejmuje proces „linkowania” urządzenia i w ten sposób przyznaje atakującemu trwały dostęp do konta WhatsApp ofiary. Jak wyjaśnili badacze, gdy ktoś uwierzytelnia się za pomocą tej biblioteki, nie tylko łączy swoją aplikację — automatycznie zostaje także połączone urządzenie napastnika. W efekcie atakujący zyskuje pełny, utrzymywany dostęp do konta ofiary, często bez jej wiedzy, a po usunięciu pakietu dostęp nadal pozostaje aktywny dopóki użytkownik ręcznie nie odłączy sparowanego urządzenia w ustawieniach aplikacji.
Idan Dardikman z Koi Security wskazał, że złośliwa aktywność uruchamia się w momencie, gdy programista wykorzysta bibliotekę do połączenia z WhatsAppem: malware owija klienta WebSocket, więc po uwierzytelnieniu i rozpoczęciu wysyłania/odbierania wiadomości przechwytywanie zaczyna działać bez potrzeby wywoływania dodatkowych funkcji. Kod parujący tylny kanał aktywuje się w trakcie procesu uwierzytelniania, w wyniku czego urządzenie atakującego zostaje połączone z chwilą podłączenia aplikacji.
„lotusbail” posiada też mechanizmy utrudniające analizę — w przypadku wykrycia narzędzi debugujących wchodzi w nieskończoną pętlę, zamrażając wykonanie i utrudniając śledzenie jego działania. Koi Security podkreśla przy tym, że ataki na łańcuch dostaw oprogramowania nie słabną, lecz stają się coraz bardziej wyrafinowane: tradycyjne mechanizmy bezpieczeństwa często nie wychwytują takiego złośliwego kodu, bo statyczna analiza widzi działający kod WhatsAppa i zatwierdza go, a systemy reputacyjne ufają bibliotece po rosnącej liczbie pobrań.
Malicious NuGet — atak na ekosystem kryptowalut
Równolegle firma ReversingLabs opisała 14 złośliwych pakietów dostępnych w rejestrze NuGet, które podszywały się pod Nethereum (bibliotekę .NET do integracji z Ethereum) i inne narzędzia związane z kryptowalutami. Złośliwe pakiety miały przekierowywać środki na portfele kontrolowane przez atakujących, gdy kwota transferu przekraczała 100 USD (ok. 430 zł), a także wykradać klucze prywatne i frazy seed.
Pakiety opublikowano z ośmiu różnych kont i kampania sięga lipca 2025 r. Nazwy opublikowanych paczek to:
- binance.csharp
- bitcoincore
- bybitapi.net
- coinbase.net.api
- googleads.api
- nbitcoin.unified
- nethereumnet
- nethereumunified
- netherеum.all
- solananet
- solnetall
- solnetall.net
- solnetplus
- solnetunified
Atakujący stosowali różne sztuczki mające zyskać zaufanie deweloperów: zawyżanie liczby pobrań, szybkie publikowanie wielu wersji pakietu, aby sprawiał wrażenie aktywnie utrzymywanego, oraz wstrzyknięcie złośliwej funkcjonalności w taki sposób, by uruchamiała się dopiero wtedy, gdy pakiety zostały zainstalowane przez programistę i wbudowane w inne aplikacje. W jednym z przypadków, pakiet GoogleAds.API skupiał się na kradzieży danych OAuth do Google Ads zamiast na eksfiltracji sekretów portfeli.
ReversingLabs zaznacza, że pozycje OAuth do Google Ads są szczególnie wrażliwe, ponieważ pozwalają na pełny programowy dostęp do konta reklamowego: w przypadku wycieku atakujący mogą podszyć się pod klienta reklamowego, odczytywać wszystkie dane kampanii i wyników, tworzyć lub modyfikować reklamy, a także wydawać środki na złośliwe lub oszukańcze kampanie.