Chyba zabezpečení, která umožnila vydání aktualizace pro jakýkoli balíček v úložišti NPM

GitHub odhalil dva incidenty ve své infrastruktuře úložiště balíčků NPM. 2. listopadu bezpečnostní výzkumníci třetích stran (Kajetan Grzybowski a Maciej Piechota) v rámci programu Bug Bounty ohlásili přítomnost zranitelnosti v úložišti NPM, která vám umožňuje publikovat novou verzi libovolného balíčku pomocí vašeho účtu, která není oprávněna takové aktualizace provádět.

Tato chyba zabezpečení byla způsobena nesprávnými kontrolami oprávnění v kódu mikroslužeb, které zpracovávají požadavky na NPM. Autorizační služba provedla kontroly oprávnění balíčku na základě dat předaných v požadavku, ale jiná služba, která nahrála aktualizaci do úložiště, určila, že se balíček má publikovat na základě obsahu metadat nahraného balíčku. Útočník by tak mohl požádat o zveřejnění aktualizace pro svůj balíček, ke kterému má přístup, ale v balíčku samotném uvést informaci o jiném balíčku, který by se případně aktualizoval.

Problém byl opraven 6 hodin po nahlášení chyby zabezpečení, ale chyba zabezpečení byla v NPM přítomna déle, než pokrývaly protokoly telemetrie. GitHub tvrdí, že od září 2020 nebyly zaznamenány žádné stopy útoků využívajících tuto chybu zabezpečení, ale neexistuje žádná záruka, že problém nebyl zneužit dříve.

K druhému incidentu došlo 26. října. Při technické práci s databází služby replicate.npmjs.com byla odhalena přítomnost důvěrných dat v databázi přístupných externím požadavkům, která odhalila informace o názvech interních balíčků, které byly uvedeny v change logu. Informace o takových jménech lze použít k provádění útoků na závislost na interních projektech (v únoru podobný útok umožnil spuštění kódu na serverech PayPal, Microsoftu, Apple, Netflixu, Uberu a 30 dalších společností).

Navíc vzhledem k narůstajícímu počtu případů únosů úložišť velkých projektů a propagace škodlivého kódu prostřednictvím kompromitujících vývojářských účtů se GitHub rozhodl zavést povinné dvoufaktorové ověřování. Změna vstoupí v platnost v prvním čtvrtletí roku 2022 a bude se týkat správců a administrátorů balíčků zařazených do seznamu nejoblíbenějších. Dále se uvádí o modernizaci infrastruktury, ve které bude zavedeno automatizované sledování a analýza nových verzí balíčků pro včasnou detekci škodlivých změn.

Připomeňme, že podle studie provedené v roce 2020 pouze 9.27 % správců balíčků používá k ochraně přístupu dvoufaktorové ověřování a ve 13.37 % případů se při registraci nových účtů vývojáři pokusili znovu použít kompromitovaná hesla, která se objevila v úniky známých hesel. Během kontroly zabezpečení hesel bylo 12 % účtů NPM (13 % balíčků) přístupných kvůli použití předvídatelných a triviálních hesel, jako je „123456“. Mezi problematické patřily 4 uživatelské účty z Top 20 nejoblíbenějších balíčků, 13 účtů s balíčky staženými více než 50 milionykrát za měsíc, 40 účtů s více než 10 miliony stažení za měsíc a 282 účtů s více než 1 milionem stažení za měsíc. Vezmeme-li v úvahu načítání modulů v řetězci závislostí, kompromitace nedůvěryhodných účtů by mohla ovlivnit až 52 % všech modulů v NPM.

Zdroj: opennet.ru

Přidat komentář