Złośliwy kod w module Lottie-Player

31 października, 2024

Znany moduł Lottie-Player przez kilka godzin zawierał nieautoryzowany kod wyświetlający na witrynach korzystających z tego rozszerzenia popup umożliwiający połączenie portfela kryptowalutowego docelowego użytkownika. Twórcy Lottie-Player, firma Design Barn Inc, o problemie dowiedzieli się poprzez issue założone przez użytkownika MrAhmedSayedAli w serwisie GitHub.

Popup wyświetlany przez złośliwą wersję Lottie-Player.

Jak można zauważyć, czytając odpowiedzi w tym wątku, skala problemu była stosunkowo duża. Co więcej, złośliwy kod utrudniał korzystanie z tzw. narzędzi deweloperskich w przeglądarkach (np. DevTools). Zmiany skutecznie dodano aż do trzech wersji modułu, tj. 2.0.5, 2.0.6 i 2.0.7 (wszystkie opublikowano wczoraj w godzinach wieczornych). Podatne wersje zostały już usunięte z repozytorium npm. Można jednak zapoznać się z tą zawartością, ponieważ została „zarchiwizowana” przez pochodzącego z Polski programistę i udostępniona w tym miejscu. Aktualnie najnowszą wersją jest 2.0.8, która stanowi kopię wersji 2.0.4.

Atak rozpoczął się od uzyskania należącego do programisty Lottie-Player tokenu pozwalającego na dodawanie paczek do repozytorium npm. W opublikowanym wątku znajdziemy „Incident Response”, w którym czytamy, że firma wraz z pomocą zewnętrznego podmiotu prowadzi analizę ataku.

Sam Lottie-Player jest używany do wyświetlania na stronach animacji przygotowanych w formacie Lottie (opartym na JSON). Dostępny jest przykład prezentujący możliwości tego modułu: https://codesandbox.io/p/sandbox/y2nxyvomyj. To bardzo popularne rozwiązanie, co widać na wykresie liczby pobrań w okresie ostatniego roku.

Ilość tygodniowych pobrań Lottie-Player.

Popularne są również memy dotyczące node_modules, czyli katalogu zawierającego pobrane z repozytorium npm gotowe paczki umożliwiające łatwiejsze dodawanie funkcjonalności w aplikacjach. O ile praktyka korzystania ze sprawdzonych i znanych rozwiązań jest zdecydowanie pozytywna, bo pozwala na szybszy rozwój oprogramowania, to jednak w każdej sytuacji wymagana jest pewna rozwaga. Przykładem może być moduł is-odd sprawdzający, czy podana liczba jest nieparzysta — samodzielne przygotowanie takiej funkcji nie jest skomplikowane.

Mem o node_modules.

Można zapytać, dlaczego złośliwy kod pojawił się na tak wielu witrynach. Powodem było stosowanie najnowszej możliwej wersji paczki, oznaczonej latest. Podatne serwisy zawierały odwołanie do tej wersji, wyglądające w ten sposób:

				
					https://unpkg.com/@lottiefiles/lottie-player@latest/dist/lottie-player.js
				
			

Podczas ładowania strony z tym skryptem nastąpi przekierowanie do faktycznej najnowszej wersji. Pomijając kwestie bezpieczeństwa, należy zwrócić też uwagę na kompatybilność, ponieważ wprowadzone w module zmiany niekoniecznie będą poprawnie działały z naszą aplikacją. Z tego powodu zwykle lepiej definiować konkretną i wiarygodną wersję. Zdarza się też, że najnowsze wersje zawierają po prostu błędy uniemożliwiające normalną pracę.

Czy ten artykuł był pomocny?

Oceniono: 2 razy

Picture of Michał Giza

Michał Giza

Administrator systemów Linux i Windows Server. Konfiguruje serwery WWW, bazy danych i inne usługi sieciowe. Wykonuje i automatyzuje wdrożenia aplikacji internetowych.
Picture of Michał Giza

Michał Giza

Administrator systemów Linux i Windows Server. Konfiguruje serwery WWW, bazy danych i inne usługi sieciowe. Wykonuje i automatyzuje wdrożenia aplikacji internetowych.

PODZIEL SIĘ:

guest
0 komentarzy
najstarszy
najnowszy oceniany
Inline Feedbacks
View all comments

Wyrażam zgodę na przesłanie oferty drogą telefoniczną przez IT Partners security sp. z o.o. z siedzibą Katowicach ul.Padereskiego 35 na podany przeze mnie adres e-mail zgodnie z ustawą z dnia 10 maja 2018 roku o ochronie danych osobowych (Dz. Ustaw z 2018, poz. 1000) oraz zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych oraz uchylenia dyrektywy 95/46/WE (RODO).

Wyrażam zgodę na przesłanie oferty drogą mailową przez IT Partners security sp. z o.o. z siedzibą Katowicach ul.Padereskiego 35 na podany przeze mnie adres e-mail zgodnie z ustawą z dnia 10 maja 2018 roku o ochronie danych osobowych (Dz. Ustaw z 2018, poz. 1000) oraz zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych oraz uchylenia dyrektywy 95/46/WE (RODO).

[ninja_tables id=”27481″]