W zależności od pakietu npm z instalatorem PureScript
Problem odkrył jeden z nowych opiekunów pakietu, któremu po wielu nieporozumieniach i nieprzyjemnych dyskusjach z pierwotnym autorem pakietu purescript npm przeniesiono prawa do jego konserwacji. Nowi opiekunowie są odpowiedzialni za kompilator PureScript i nalegali, aby pakiet NPM i jego instalator były utrzymywane przez tych samych opiekunów, a nie przez stronę zewnętrzną. Autor pakietu npm z instalatorem PureScript długo się nie zgadzał, ale potem ustąpił i przekazał dostęp do repozytorium. Jednak niektóre zależności pozostały pod jego kontrolą.
W zeszłym tygodniu został wydany kompilator PureScript 0.13.2 i
nowi opiekunowie przygotowali odpowiednią aktualizację pakietu npm z instalatorem, w zależności od którego zidentyfikowano złośliwy kod. Autor pakietu npm z instalatorem PureScript, który został usunięty ze stanowiska opiekuna, powiedział, że jego konto zostało przejęte przez nieznanych napastników. Jednak w obecnej postaci działania szkodliwego kodu ograniczały się do sabotowania instalacji pakietu, który stanowił pierwszą wersję od nowych opiekunów. Złośliwe działania sprowadzały się do zapętlenia komunikatu o błędzie podczas próby zainstalowania pakietu za pomocą polecenia „npm i -g purescript” bez wykonania jakiejkolwiek oczywistej szkodliwej aktywności.
Wykryto dwa ataki. Kilka godzin po oficjalnym wydaniu nowej wersji pakietu purescript npm ktoś stworzył nową wersję zależności loading-from-cwd-or-npm 3.0.2, której zmiany doprowadziły zamiast tego do wywołania metody loadingFromCwdOrNpm() listy wymaganych do instalacji plików binarnych zwrócony strumień
4 dni później, gdy programiści odkryli źródło błędów i przygotowywali się do wydania aktualizacji wykluczającej obciążenie z cwd-or-npm z zależności, napastnicy wydali kolejną aktualizację, ładowanie z-cwd-or-npm 3.0.4, w której usunięto szkodliwy kod. Jednak niemal natychmiast wydano aktualizację innej zależności, mapy stawek 1.0.3, która dodała poprawkę blokującą wywołanie zwrotne podczas ładowania. Te. w obu przypadkach zmiany w nowych wersjach Load-from-cwd-or-npm irate-map miały charakter oczywistego sabotażu. Co więcej, złośliwy kod miał kontrolę, która wywoływała błędne działania tylko podczas instalowania wydania od nowych opiekunów i nie pojawiała się w żaden sposób podczas instalowania starszych wersji.
Twórcy rozwiązali problem wypuszczając aktualizację, w której usunięto problematyczne zależności. Aby zapobiec osadzaniu się skompromitowanego kodu w systemach użytkowników po próbie instalacji problematycznej wersji PureScript, zaleca się usunięcie zawartości katalogów node_modules i plików package-lock.json, a następnie ustawienie wersji purescript 0.13.2 jako dolna granica.
Źródło: opennet.ru