Złośliwy kod w module Lottie-Player. Występował przez kilka godzin

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 tzw. issue założone przez użytkownika MrAhmedSayedAli w serwisie GitHub.

Komputer, ładowarka
Komputer, ładowarka
Źródło zdjęć: © Unsplash | ThisisEngineering RAEng

Jak można zauważyć, czytając odpowiedzi we wspomnianym 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. 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 sieci. Aktualnie najnowszą wersją jest 2.0.8, która stanowi kopię wersji 2.0.4.

Portfele kryptowalutowe
Portfele kryptowalutowe© Licencjodawca

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.

Dalsza część artykułu pod materiałem wideo

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.

Tygodniowa liczba pobrań modułu
Tygodniowa liczba pobrań modułu© Licencjodawca

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
Mem o node_modules© Licencjodawca

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ę.

Twórz treści i zarabiaj na ich publikacji. Dołącz do WP Kreatora

Programy

Zobacz więcej
Źródło artykułu:avlab.pl
Wybrane dla Ciebie
Komentarze (2)