Badacze z firmy Aqua Security opublikowali wyniki analizy statystyk dotyczących 50 tysięcy najczęściej pobieranych pakietów w repozytorium NPM. 7500 (15%) z najczęściej pobieranych pakietów okazało się związanych z przestarzałymi pakietami i projektami, które już nie istnieją. W celu uproszczenia identyfikacji przestarzałych pakietów w zależnościach używanych w projekcie, zaproponowano narzędzie Dependency-Deprecated-Checker, opublikowane na licencji MIT.
W 4100 (8,2%) rozważanych pakietach w łańcuchu zależności zidentyfikowano pakiety, które zostały oficjalnie uznane w NPM za przestarzałe lub związane z przestarzałymi projektami (na przykład pakiet request jest oznaczony jako przestarzały, ale nadal jest używany jako bezpośrednia zależność przez 55000 pakietów). 2300 (4,6%) pakietów jest związanych z repozytoriami na GitHubie, które zostały przekształcone w archiwa (rozwój został wstrzymany, na przykład repozytorium pakietu through oznaczone jest jako archiwalne, ale jest używane jako bezpośrednia zależność przez 3000 pakietów). 1100 (2,2%) pakietów odwołuje się do już nieistniejących repozytoriów, a ich wywołanie prowadzi do błędu 404. 3100 (6,2%) pakietów nie zawiera informacji o repozytorium.

W absolutnych liczbach, rozprzestrzenienie przestarzałych pakietów i pakietów bez linków do repozytoriów w NPM szacuje się na około 2,1 miliarda pobrań tygodniowo. Używanie przestarzałych pakietów i projektów, które pozostały bez wsparcia, jako zależności wiąże się z ryzykiem istnienia niezałatwionych luk w zabezpieczeniach, zwłaszcza biorąc pod uwagę praktykę stosowaną przez niektórych programistów polegającą na ukrywaniu usunięć luk bez nadawania identyfikatora CVE i bez wyraźnego podkreślania eliminacji problemu.
Źródło: opennet.ru
