Lotusbail: złośliwy pakiet npm udający WhatsApp Web API — 56 tys. pobrań, kradzież wiadomości i trwałe przejęcie konta

securitybeztabu.pl 9 godzin temu

Wprowadzenie do problemu / definicja luki

Incydent z pakietem lotusbail pokazuje najbardziej podstępny wariant ataku na łańcuch dostaw systemu (software supply chain): biblioteka działa dokładnie tak, jak obiecuje, a jednocześnie w tle kradnie dane i buduje trwały backdoor.

W tym przypadku cel był szczególnie wrażliwy — integracje z WhatsApp Web API wykorzystywane w botach, automatyzacji obsługi klienta, narzędziach CRM czy systemach powiadomień. Złośliwy pakiet został opublikowany w ekosystemie npm jako fork popularnej biblioteki Baileys i osiągnął ponad 56 000 pobrań.

W skrócie

  • Co to jest? lotusbail to złośliwy pakiet npm podszywający się pod bibliotekę WhatsApp Web API (fork @whiskeysockets/baileys).
  • Co kradnie? Tokeny i klucze sesyjne, pełną historię wiadomości (we/wy), kontakty (z numerami), pliki multimedialne i dokumenty.
  • Jak działa? Opakowuje legalnego klienta WebSocket i przechwytuje ruch, zanim trafi do adekwatnej logiki aplikacji.
  • Dlaczego jest groźny po usunięciu? Może po cichu podłączyć urządzenie atakującego do konta WhatsApp, więc samo odinstalowanie zależności nie wystarcza — trzeba manualnie odłączyć urządzenia w WhatsApp.
  • Timeline (jawny w źródłach): pakiet miał być w rejestrze ok. 6 miesięcy, a według doniesień został wrzucony w maju 2025 przez użytkownika wskazanego w publikacjach branżowych.
  • Status w rejestrach: baza Snyk wskazuje, iż zawartość pakietu została usunięta z „oficjalnego menedżera pakietów” (typowy „placeholder” po takedownie). To nie cofa skutków u osób, które już zainstalowały zależność.

Kontekst / historia / powiązania

Atak wykorzystał zaufanie do:

  1. popularności (dziesiątki tysięcy pobrań),
  2. podobieństwa do legalnego projektu (fork Baileys),
  3. naturalnego workflow deweloperów: “jeśli działa, wdrażamy”.

To kluczowa różnica względem typowych typosquatów i „śmieciowych” paczek — tutaj złośliwy kod jest schowany w cieniu poprawnie działającej biblioteki, więc przechodzi choćby przez ręczny review „na oko”.

Analiza techniczna / szczegóły „luki”

1) Warstwa przykrywki: realnie działające WhatsApp API

lotusbail bazuje na podejściu znanym z Baileys: komunikacja z WhatsApp Web odbywa się przez WebSocket. Złośliwy pakiet „owija” (wrapuje) legalnego klienta WebSocket, dzięki czemu każda wiadomość i zdarzenie przechodzą przez jego kod.

2) Kradzież danych: tokeny, sesje, wiadomości, kontakty, media

Według analizy badaczy, przechwytywane są m.in.:

  • authentication tokens i session keys,
  • pełna treść wiadomości przychodzących i wychodzących (łącznie z historią),
  • lista kontaktów (w tym numery),
  • media i dokumenty.

3) Eksfiltracja: własna kryptografia + wielowarstwowe ukrywanie

Sygnał ostrzegawczy nr 1: biblioteka „od WhatsApp” nie powinna potrzebować własnej implementacji kryptografii do ochrony danych — WhatsApp i tak szyfruje treść E2E. W lotusbail zastosowano niestandardowe RSA do szyfrowania skradzionych danych przed wysłaniem na serwer atakującego.

Sygnał ostrzegawczy nr 2: konfiguracja serwera eksfiltracji i elementy ładunku są zaciemnione (obfuscation). Opisy wskazują m.in. warstwy typu manipulacje Unicode, kompresję (np. LZString), dodatkowe kodowania oraz AES.

4) Persistence/backdoor: ciche podpięcie urządzenia atakującego (device pairing)

Najbardziej toksyczny element to przejęcie procesu parowania urządzeń WhatsApp. Zamiast używać losowego kodu parowania generowanego w normalnym procesie, malware ma wykorzystywać „twardo zaszyty” pairing code, ukryty i zaszyfrowany (m.in. AES). Efekt: przy autoryzacji aplikacji ofiary atakujący może automatycznie dołączyć swoje urządzenie jako „linked device”.

Konsekwencja operacyjna: choćby po usunięciu pakietu atakujący może zachować dostęp, dopóki ofiara ręcznie nie odłączy wszystkich urządzeń w ustawieniach WhatsApp.

5) Anti-analysis: pułapki na debug i sandbox

W opisie incydentu pojawia się informacja o ~27 pułapkach antydebugowych (m.in. pętle blokujące wykonanie po wykryciu narzędzi analitycznych). To typowe dla kampanii, które zakładają, iż kod trafi do reverse engineeringu.

Praktyczne konsekwencje / ryzyko

Jeżeli lotusbail trafił do Twojego środowiska (dev/stage/prod), traktuj to jak incydent przejęcia kanału komunikacji:

  • Ujawnienie poufnych danych: treści rozmów, dane klientów, załączniki, metadane kontaktów.
  • Przejęcie tożsamości w WhatsApp: wysyłka wiadomości jako ofiara, phishing do kontaktów, oszustwa BEC-like na „zaufanym kanale”.
  • Trwała kompromitacja: jeżeli urządzenie atakującego zostało podpięte, dostęp może trwać mimo usunięcia paczki.
  • Ryzyko prawne i compliance: potencjalny wyciek danych osobowych i tajemnicy korespondencji (w tym danych wrażliwych przesyłanych przez użytkowników).

Rekomendacje operacyjne / co zrobić teraz

A) Szybka weryfikacja (triage)

  1. Przeszukaj repozytoria i artefakty buildów pod kątem lotusbail:
    • package.json, package-lock.json / npm-shrinkwrap.json, lockfile w CI.
  2. Sprawdź, czy pakiet nie został wciągnięty tranzytywnie (dependency tree).
  3. Przejrzyj logi egress (proxy/NAT/firewall) pod kątem nietypowych połączeń wychodzących z hostów budujących/uruchamiających integrację WhatsApp.

B) Ograniczenie skutków (containment)

  1. Usuń zależność i zablokuj ją w politykach (allowlist/denylist).
  2. Jeśli integracja miała dostęp do konta WhatsApp:
    • natychmiast przejdź do WhatsApp → Linked devices / Połączone urządzenia i odłącz wszystkie podejrzane wpisy (w praktyce często najbezpieczniej: odłączyć wszystko i sparować ponownie).
  3. Traktuj tokeny/sesje jako skompromitowane: rotacja wszelkich sekretów w środowisku, w którym działał proces (API keys, webhook secrets, dane dostępowe w vaultach).

C) Detekcja i hardening (żeby to się nie powtórzyło)

  • Wymuś kontrolę łańcucha dostaw w CI/CD:
    • budowanie wyłącznie z lockfile i w trybie deterministycznym (np. „clean install”),
    • skan SCA (Snyk/OSV/GHAS itp.) + polityki blokujące „malicious package”.
  • Korzystaj z sygnałów heurystycznych:
    • biblioteka komunikacyjna nagle zawiera custom RSA, warstwy obfuscation, antydebug — to powinno odpalać alarm.
  • Włącz kontrolę zachowania w runtime (nie tylko statyczne skanowanie):
    • monitoruj nietypowe domeny/IP w egress,
    • ogranicz egress dla build runnerów i środowisk produkcyjnych (zasada najmniejszych uprawnień również dla sieci).

D) Status pakietu i „false sense of safety”

Nawet jeżeli rejestr „zdjął” pakiet lub podmienił go na placeholder, to:

  • zainstalowane kopie przez cały czas mogą siedzieć w cache’ach, obrazach kontenerów i artefaktach,
  • część szkód (np. podpięte urządzenie WhatsApp) jest poza npm.

Różnice / porównania z innymi przypadkami

Co wyróżnia lotusbail na tle klasycznych incydentów npm?

  1. „Functional malware”: paczka jest użyteczna i przechodzi testy funkcjonalne, więc trafia do produkcji szybciej niż typowy typosquat.
  2. Persistence poza kodem: mechanizm device linking sprawia, iż skutki mogą utrzymywać się po odinstalowaniu — to rzadsze niż w standardowych kradzieżach tokenów.
  3. Zaawansowane ukrywanie: wielowarstwowa obfuskacja + własna kryptografia + antydebug sugerują dobrze zaprojektowaną operację, a nie „jednorazowy strzał”.

Podsumowanie / najważniejsze wnioski

lotusbail to podręcznikowy przykład, iż „działa” nie znaczy „jest bezpieczne”. Atakujący wykorzystali naturalny odruch deweloperów: jeżeli biblioteka spełnia wymagania i ma pobrania, to budzi zaufanie. Tutaj to zaufanie zostało zamienione na:

  • kradzież treści komunikacji i danych kontaktowych,
  • przejęcie sesji,
  • oraz — co najgorsze — trwałe podpięcie urządzenia atakującego do konta WhatsApp.

Źródła / bibliografia

  1. Koi Security (Tuval Admoni), analiza lotusbail (21 grudnia 2025). (Koi)
  2. Security Affairs, podsumowanie incydentu i aspekty antydebug/pairing (27 grudnia 2025). (Security Affairs)
  3. BleepingComputer, dodatkowe szczegóły dot. przechwytywania i obfuskacji (22 grudnia 2025). (BleepingComputer)
  4. The Hacker News, dane o publikacji i kontekście (22 grudnia 2025). (The Hacker News)
  5. Snyk Vulnerability DB, rekord „Malicious Package” i informacja o usunięciu zawartości (publ. 24 grudnia 2025). (VulnInfo Guide)
Idź do oryginalnego materiału