W zależności od pakietu npm z instalatorem PureScript złośliwy kod, który pojawia się podczas próby instalacji pakietu . Złośliwy kod został wbudowany przez zależności i . Co ciekawe, opieką nad pakietami z tymi zależnościami zajmuje się pierwotny autor pakietu npm z instalatorem PureScript, który do niedawna zajmował się tym pakietem npm, ale około miesiąca temu pakiet przeszedł pod inną opiekę.
Problem został odkryty przez jednego z nowych głównych opiekunów pakietu, którym prawa do opieki zostały przekazane po wielu sporach i nieprzyjemnych dyskusjach z pierwotnym autorem pakietu npm purescript. Nowi główni opiekunowie odpowiadają za kompilator PureScript i nalegali, że pakiet npm z jego instalatorem powinien być obsługiwany przez tych samych opiekunów, a nie obce osoby. Autor pakietu npm z instalatorem PureScript długo się nie zgadzał, ale ostatecznie ustąpił i przekazał dostęp do repozytorium. Przy tym niektóre zależności pozostały pod jego zarządem.
W zeszłym tygodniu wydano wersję kompilatora PureScript 0.13.2 i
nowi opiekunowie przygotowali odpowiednią aktualizację pakietu npm z instalatorem, w zależnościach którego wykryto złośliwy kod. Odsunięty od stanowiska opiekuna autor pakietu npm z instalatorem PureScript stwierdził, że jego konto zostało skompromitowane przez nieznanych atakujących. Niemniej jednak, w obecnej formie działania złośliwego kodu ograniczały się jedynie do sabotażu instalacji pakietu, który stał się pierwszą wersją od nowych oświecających. Działania złośliwe polegały na zapętleniu z wyświetleniem błędu podczas próby zainstalowania pakietu za pomocą polecenia „npm i -g purescript” bez wykonywania jawnej złośliwej aktywności.
Zidentyfikowano dwa ataki. Kilka godzin po oficjalnym wydaniu nowej wersji pakietu npm purescript, ktoś wytworzył nową wersję zależności load-from-cwd-or-npm 3.0.2, której zmiany spowodowały, że wywołanie loadFromCwdOrNpm() zamiast listy wymaganych do instalacji plików binarnych zwracało strumień , który odzwierciedlał wejściowe zapytania jako wartości wyjściowe.
Cztery dni po tym, jak deweloperzy zrozumieli źródło awarii i przygotowywali się do wypuszczenia aktualizacji w celu wykluczenia load-from-cwd-or-npm z zależności, przestępcy wydali kolejną aktualizację load-from-cwd-or-npm 3.0.4, w której usunięto złośliwy kod. Niemniej jednak prawie natychmiast wydano aktualizację innej zależności rate-map 1.0.3, która wprowadziła poprawkę blokującą wywołanie callback do ładowania. Oznacza to, że w obu przypadkach zmiany w nowych wersjach load-from-cwd-or-npm i rate-map miały charakter jawnej dywersji. Co więcej, złośliwy kod zawierał sprawdzenie, które aktywowało awaryjne działania tylko podczas instalacji wydania od nowych opiekunów i w żaden sposób nie ujawniało się przy instalacji starszych wersji.
Deweloperzy rozwiązali problem, wydając aktualizację, w której problematyczne zależności zostały usunięte. Aby wykluczyć osiadanie skompromitowanego kodu na systemach użytkowników po próbie instalacji problematycznej wersji PureScript, zaleca się usunięcie zawartości katalogów node_modules oraz plików package-lock.json, a następnie ustawienie jako dolnego limitu wersji purescript 0.13.2.
Źródło: opennet.ru
