Atak na NPM, umożliwiająca wykrycie pakietów w prywatnych repozytoriach

W NPM odkryto lukę, która pozwala na stwierdzenie istnienia pakietów w zamkniętych repozytoriach. Problem wynika z różnego czasu reakcji na zapytanie o istniejący oraz nieistniejący pakiet przez zewnętrznego użytkownika, który nie ma dostępu do repozytorium. W przypadku braku dostępu do jakichkolwiek pakietów w prywatnych repozytoriach serwer registry.npmjs.org zwraca błąd o kodzie „404”, jednak w przypadku istnienia pakietu o żądanej nazwie błąd generowany jest z zauważalnym opóźnieniem. Napastnik może wykorzystać tę szczególną cechę do określenia dostępności pakietu podczas zgadywania nazw pakietów z słowników.

Określenie nazw pakietów w zamkniętych repozytoriach może być konieczne do przeprowadzenia ataku poprzez mieszanie zależności, manipulującego przecięciem nazw zależności w publicznych i wewnętrznych repozytoriach. Znając, które wewnętrzne pakiety NPM są obecne w korporacyjnych repozytoriach, napastnik może publikować pakiety o tych samych nazwach i nowszych wersjach w publicznym repozytorium NPM. Jeśli podczas kompilacji wewnętrzne biblioteki nie są wyraźnie przypisane w ustawieniach do swojego repozytorium, menedżer pakietów npm uzna publiczne repozytorium za bardziej priorytetowe i pobierze przygotowany przez napastnika pakiet.

GitHub został powiadomiony o problemie w marcu, ale odmówił dodania ochrony przed atakiem, powołując się na ograniczenia architektoniczne. Firmom korzystającym z prywatnych repozytoriów zaleca się okresowe sprawdzanie występowania pokrywających się nazw w publicznym repozytorium lub stworzenie pod swoim nazwiskiem atrap o nazwach powtarzających nazwy pakietów w prywatnych repozytoriach, aby przestępcy nie mogli publikować swoich pakietów o pokrywających się nazwach.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster