Trojan ukryty w milionach instalacji
W świecie open source bezpieczeństwo to nieustanna gra w kotka i myszkę. Tym razem cyberprzestępcy wykorzystali popularność biblioteki @react-native-aria, należącej do zestawu pakietów rozwijanych przez Gluestack. Atak, który miał swój początek 6 czerwca, wprowadził do 17 bibliotek złośliwy kod przypominający trojana zdalnego dostępu. Z pozoru niewinne aktualizacje opublikowane w rejestrze NPM ukrywały w sobie zaciemniony fragment kodu osadzony na końcu pliku lib/index.js. Jego obecność nie rzucała się w oczy — przesunięta na sam koniec, za długim ciągiem białych znaków, pozostawała niezauważona podczas rutynowego przeglądu kodu przez programistów. To właśnie ta niewidoczność była kluczem do skuteczności ataku. Analiza ujawniona przez firmę Aikido Security, która pierwsza wykryła naruszenie, pokazała, że złośliwy kod umożliwia zdalną kontrolę nad systemem użytkownika. Trojan RAT, jaki znaleziono w zainfekowanych bibliotekach, po połączeniu się z serwerem C2 atakujących, może wykonywać szereg poleceń systemowych. Od manipulacji katalogami roboczymi, przez przesyłanie plików, aż po wykonywanie poleceń powłoki — zakres potencjalnych szkód jest znaczny.To, co czyni ten incydent wyjątkowo niepokojącym, to skala. Zainfekowane biblioteki notują tygodniowo ponad milion pobrań. Biorąc pod uwagę, że są one wykorzystywane w środowisku React Native, istnieje ryzyko, że tysiące aplikacji mobilnych — zarówno tych będących w fazie produkcji, jak i testowania — mogły nieświadomie wprowadzić złośliwy kod do swojego ekosystemu.
Milczenie i opóźnienia zwiększają ryzyko
W ciągu kilkudziesięciu godzin po wykryciu ataku udało się zidentyfikować 17 zainfekowanych bibliotek, a później do listy dopisano kolejną — @react-native-aria/tabs. Oznacza to, że cała seria @react-native-aria mogła zostać naruszona. Pomimo starań badaczy, w tym zgłoszeń na GitHubie i bezpośrednich kontaktów z zespołem Gluestack, reakcja ze strony twórców była opóźniona. Dopiero po pewnym czasie zespół deweloperski cofnął kompromitujący token API, który posłużył do opublikowania złośliwych wersji. Pakiety oznaczono jako przestarzałe, jednak całkowite usunięcie nie było możliwe ze względu na zależności używane przez inne projekty. To właśnie czas reakcji staje się tutaj kluczowym problemem. Aikido przyznało, że kontakt z NPM-em — choć konieczny — zwykle trwa wiele dni. Tyle czasu mogą potrzebować opiekunowie rejestru, by skutecznie ocenić sytuację i podjąć odpowiednie działania. W międzyczasie złośliwe wersje pakietów są nadal dostępne, a użytkownicy, którzy zautomatyzowali aktualizacje w swoich projektach, mogą nawet nie zdawać sobie sprawy z zagrożenia.
Dodatkowo, sposób w jaki działają trojany tego typu – w tym modyfikowanie zmiennej środowiskowej PATH w systemie Windows – pozwala atakującym podszywać się pod legalne procesy lub wykonywać binaria bez wzbudzania alarmów. To sprawia, że atak staje się trudny do wykrycia nawet przez doświadczonych administratorów systemów czy specjalistów DevOps.