En sårbarhet som gjorde att en uppdatering kunde släppas för alla paket i NPM-förvaret

GitHub har avslöjat två incidenter i sin NPM-paketförvarsinfrastruktur. Den 2 november rapporterade tredjepartssäkerhetsforskare (Kajetan Grzybowski och Maciej Piechota), som en del av Bug Bounty-programmet, närvaron av en sårbarhet i NPM-förvaret som låter dig publicera en ny version av vilket paket som helst med ditt konto, som inte är behörig att utföra sådana uppdateringar.

Sårbarheten orsakades av felaktiga behörighetskontroller i koden för mikrotjänster som behandlar förfrågningar till NPM. Auktoriseringstjänsten utförde paketbehörighetskontroller baserat på data som skickades i begäran, men en annan tjänst som laddade upp uppdateringen till förvaret bestämde att paketet skulle publiceras baserat på metadatainnehållet i det uppladdade paketet. Således kan en angripare begära publicering av en uppdatering för sitt paket, som han har tillgång till, men ange i själva paketet information om ett annat paket, som så småningom skulle uppdateras.

Problemet åtgärdades 6 timmar efter att sårbarheten rapporterades, men sårbarheten fanns i NPM längre än telemetriloggar täcker. GitHub hävdar att det inte har funnits några spår av attacker med denna sårbarhet sedan september 2020, men det finns ingen garanti för att problemet inte har utnyttjats tidigare.

Den andra händelsen inträffade den 26 oktober. Under tekniskt arbete med databasen för tjänsten replicate.npmjs.com avslöjades förekomsten av konfidentiell data i databasen som var tillgänglig för externa förfrågningar, vilket avslöjade information om namnen på interna paket som nämndes i ändringsloggen. Information om sådana namn kan användas för att utföra beroendeattacker på interna projekt (i februari tillät en liknande attack kod att köras på PayPal, Microsoft, Apple, Netflix, Uber och 30 andra företags servrar).

Dessutom, på grund av det ökande antalet fall av lagringsplatser för stora projekt som kapats och skadlig kod främjas genom att äventyra utvecklarkonton, har GitHub beslutat att införa obligatorisk tvåfaktorsautentisering. Ändringen kommer att träda i kraft under första kvartalet 2022 och kommer att gälla för underhållare och administratörer av paket som ingår i den mest populära listan. Dessutom rapporteras det om moderniseringen av infrastrukturen, där automatiserad övervakning och analys av nya versioner av paket kommer att introduceras för tidig upptäckt av skadliga ändringar.

Låt oss komma ihåg att, enligt en studie genomförd 2020, använder endast 9.27 % av paketunderhållarna tvåfaktorsautentisering för att skydda åtkomst, och i 13.37 % av fallen, när de registrerade nya konton, försökte utvecklare att återanvända komprometterade lösenord som dök upp i kända lösenordsläckor. Under en lösenordssäkerhetsgranskning fick 12 % av NPM-konton (13 % av paketen) åtkomst på grund av användningen av förutsägbara och triviala lösenord som "123456." Bland de problematiska var 4 användarkonton från de 20 mest populära paketen, 13 konton med paket nedladdade mer än 50 miljoner gånger per månad, 40 med mer än 10 miljoner nedladdningar per månad och 282 med mer än 1 miljon nedladdningar per månad. Med hänsyn till laddningen av moduler längs en kedja av beroenden, kan kompromisser mellan otillförlitliga konton påverka upp till 52 % av alla moduler i NPM.

Källa: opennet.ru

Lägg en kommentar