Popularna biblioteka Axios, używana w wielu projektach JavaScript do wykonywania żądań HTTP, odnotowała atak na łańcuch dostaw, w wyniku którego naruszono dwie konkretne wersje opublikowane w rejestrze NPM. Investigadores z firmy StepSecurity zidentyfikował wersje 1.14.1 i 0.30.4 jako złośliwe i opublikowane we wczesnych godzinach porannych 31 marca 2026 r. Pakiety wstrzykiwały fałszywą zależność uruchamiającą skrypt instalacyjny umożliwiający zainstalowanie trojana dostępu zdalnego na komputerach programistów.
Incydent ujawnił rozległy ekosystem programistyczny zależny od biblioteki, jednej z najczęściej pobieranych na platformie, z ponad 100 milionami pobrań tygodniowo. Napastnicy nie zmienili podstawowego kodu Axios, ale dodali ukrytą zależność o nazwie zwykły-crypto-js@4.2.1. Zależność Essa aktywowana automatycznie podczas uruchamiania npm install i instalowania określonych ładunków dla Windows, macOS i Linux.
W jaki sposób konto konserwacyjne zostało naruszone
Osoby odpowiedzialne za atak uzyskały dostęp do konta NPM głównego opiekuna projektu, zidentyfikowanego jako jasonsayman. Eles zmienił powiązany adres e-mail naifstap@proton.mei ręcznie opublikował skompromitowane wersje, omijając zautomatyzowane procesy ciągłej integracji repozytorium w GitHub. Pierwsza złośliwa wersja, axios@1.14.1, została wypuszczona około 00:21 czasu UTC, a axios@0.30.4 około 39 minut później.
Takie podejście umożliwiło udostępnienie pakietów bez uruchamiania kontroli podpisów lub zwykłych procesów CI/CD. Opiekunowie Axios zareagowali szybko po odkryciu, a NPM usunęło obie wersje w ciągu kilku godzin, ograniczając czas ekspozycji do około dwóch do trzech godzin.
https://twitter.com/TheHackersNews/status/2038862039482093999?ref_src=twsrc%5EtfwSzczegóły techniczne wstrzykniętego złośliwego oprogramowania
Fałszywa zależność zwykły-crypto-js@4.2.1 nie została zaimportowana w żadnym momencie oryginalnego kodu Axios i służyła wyłącznie do wykonania skryptu poinstalacyjnego. Skrypt działał jako trojan zapewniający dostęp zdalny, nawiązujący kontakt z serwerem dowodzenia i kontroli w celu pobrania dodatkowych ładunków dostosowanych do każdego systemu operacyjnego.
Aby utrudnić natychmiastową analizę, zastosowano techniki zaciemniania, przy czym polecenia były dekodowane w czasie wykonywania. Após pomyślna instalacja, szkodliwe oprogramowanie usunęła własne ślady, zastępując plik package.json czystą wersją, aby uniknąć wykrycia podczas późniejszych inspekcji folderu node_modules.
- Sprawdzanie wersji, których dotyczy problem, za pomocą polecenia npm list axios filtrującego 1.14.1 lub 0.30.4
- Sprawdzanie obecności folderu node_modules/plain-crypto-js jako wskaźnika naruszenia
- Wyszukaj artefakty, takie jak pliki tymczasowe, w pliku /tmp/ld.py lub jego odpowiednikach w innych systemach
Zalecane środki łagodzące dla programistów
Programiści, którzy zainstalowali wersje 1.14.1 lub 0.30.4, powinni uznać, że środowisko zostało zagrożone i podjąć natychmiastowe działania. Głównym zaleceniem jest powrót do poprzednich bezpiecznych wersji: axios@1.14.0 w najnowszej gałęzi lub axios@0.30.3 w starszej wersji.
Konieczne jest usunięcie fałszywej zależności, wykonanie czystej instalacji z flagą –ignore-scripts i rotacja wszystkich wrażliwych danych uwierzytelniających, w tym tokenów NPM, kluczy SSH, dostępu do usług w chmurze i zmiennych środowiskowych. W potokach ciągłej integracji trwałe przyjęcie parametru ignorującego skrypty poinstalacyjne pomaga zapobiegać niechcianym automatycznym wykonywaniom.
Wpływ na ekosystem programistyczny JavaScript
Axios to jedna z najczęściej używanych bibliotek w ekosystemie Node.js oraz w aplikacjach front-endowych, będąca bezpośrednią lub pośrednią zależnością wielu projektów korporacyjnych i open source. Atak uwydatnia nieodłączną lukę w zabezpieczeniach indywidualnych kont opiekunów w bardzo popularnych pakietach, nawet jeśli kod podstawowy pozostaje nienaruszony.
Eksperci ds. bezpieczeństwa zauważają, że zastosowana metoda charakteryzuje się wyrafinowaniem operacyjnym i wymaga wcześniejszego przygotowania fałszywej zależności w czystej wersji przed wstrzyknięciem szkodliwego ładunku. Strategia Essa skomplikowała początkowe automatyczne wykrywanie i zwiększyła ryzyko w krótkim okresie dostępności wersji.
Wytyczne dotyczące sprawdzania i czyszczenia dotkniętych środowisk
Zespoły programistów muszą sprawdzić dzienniki instalacji i historię pakietów, aby określić, czy zostały pobrane złośliwe wersje. Obecność folderu zwykły-crypto-js w node_modules stanowi silny wskaźnik, że dropper został wykonany, niezależnie od późniejszego usunięcia pliku.
Po oczyszczeniu zaleca się pełne przeskanowanie systemów narzędziami do wykrywania zagrożeń i monitorowanie połączeń sieciowych z adresami powiązanymi z serwerem kontroli. Natychmiastowa aktualizacja zasad bezpieczeństwa w prywatnych repozytoriach pomaga również zmniejszyć podobne ryzyko w innych pakietach.
Zapobieganie przyszłym atakom na dzienniki pakietów
Ten incydent wzmacnia znaczenie takich środków, jak rygorystyczne uwierzytelnianie wieloskładnikowe na kontach publikowanych, ciągłe monitorowanie zmian w metadanych pakietów i stosowanie bardziej solidnych kontroli integralności. Projetos systemy open source o dużym rozpowszechnieniu mogą rozważyć dodatkowe procesy przeglądu przed nowymi wydaniami.
Indywidualni programiści i firmy powinni priorytetowo traktować przypinanie znanych bezpiecznych wersji w plikach konfiguracyjnych projektu, unikając automatycznej instalacji aktualizacji bez wcześniejszej weryfikacji. Praktyki Essas pomagają ograniczyć powierzchnię ataku w łańcuchach dostaw oprogramowania.
Społeczność zajmująca się bezpieczeństwem w dalszym ciągu monitoruje sprawę, aby zidentyfikować potencjalne ofiary i udoskonalić narzędzia wykrywania. Até W tej chwili nie ma publicznych raportów o wykorzystaniu na dużą skalę, ale jednomyślne zalecenie jest takie, aby każdą instalację wersji, których dotyczy problem, traktować jako całkowity kompromis dla danego systemu.

