Egy biztonsági rés, amely lehetővé tette az NPM-lerakat bármely csomagjának frissítését

A GitHub két incidenst hozott nyilvánosságra az NPM-csomagok adattárának infrastruktúrájában. November 2-án külső biztonsági kutatók (Kajetan Grzybowski és Maciej Piechota), a Bug Bounty program részeként, az NPM adattárában egy sérülékenységről számoltak be, amely lehetővé teszi bármely csomag új verziójának közzétételét fiókja használatával. amely nem jogosult ilyen frissítések végrehajtására.

A sérülékenységet az NPM-hez intézett kéréseket feldolgozó mikroszolgáltatások kódjának helytelen engedélyellenőrzése okozta. Az engedélyezési szolgáltatás a kérésben átadott adatok alapján csomagengedély-ellenőrzéseket végzett, de egy másik, a frissítést a tárolóba feltöltő szolgáltatás a feltöltött csomag metaadattartalma alapján határozta meg a közzétenni kívánt csomagot. Így a támadó kérheti egy frissítés közzétételét a csomagjához, amelyhez hozzáféréssel rendelkezik, de magában a csomagban megadhatja egy másik csomag információit, amely végül frissül.

A hibát 6 órával a sérülékenység bejelentése után javították, de a sérülékenység hosszabb ideig volt jelen az NPM-ben, mint amennyit a telemetriai naplók lefednek. A GitHub azt állítja, hogy 2020 szeptembere óta nem volt nyoma a biztonsági rést használó támadásoknak, de nincs garancia arra, hogy korábban nem használták ki a problémát.

A második eset október 26-án történt. A replicate.npmjs.com szolgáltatás adatbázisával végzett technikai munka során a külső kérések számára hozzáférhető adatbázisban bizalmas adatok jelenléte derült ki, amelyek a változásnaplóban szereplő belső csomagok nevéről árulkodtak. Az ilyen nevekre vonatkozó információk felhasználhatók belső projektek függőségi támadásainak végrehajtására (februárban egy hasonló támadás lehetővé tette a kód futtatását a PayPal, a Microsoft, az Apple, a Netflix, az Uber és 30 másik cég szerverein).

Ezen túlmenően, mivel egyre több olyan eset van, amikor nagy projektek adattárait feltörik, és rosszindulatú kódokat népszerűsítenek kompromittáló fejlesztői fiókokon keresztül, a GitHub a kötelező kétfaktoros hitelesítés bevezetése mellett döntött. A változás 2022 első negyedévében lép életbe, és a legnépszerűbb listán szereplő csomagok fenntartóira és adminisztrátoraira vonatkozik. Emellett beszámoltak az infrastruktúra korszerűsítéséről is, melynek keretében a csomagok új verzióinak automatizált monitorozása és elemzése kerül bevezetésre a rosszindulatú változások korai felismerése érdekében.

Emlékezzünk arra, hogy egy 2020-ban készült tanulmány szerint a csomagkarbantartóknak mindössze 9.27%-a használ kétfaktoros hitelesítést a hozzáférés védelmére, az esetek 13.37%-ában pedig új fiókok regisztrálásakor próbálták meg újra felhasználni a fejlesztők a feltört jelszavakat. ismert jelszószivárgás. A jelszóbiztonsági felülvizsgálat során az NPM-fiókok 12%-ához (a csomagok 13%-ához) fértek hozzá kiszámítható és triviális jelszavak, például az „123456” jelszavak miatt. A problémásak között szerepel 4 felhasználói fiók a Top 20 legnépszerűbb csomagból, 13 fiók több mint 50 milliószor letöltött havonta, 40 több mint 10 millió letöltéssel havonta, 282 pedig több mint 1 millió letöltéssel havonta. Figyelembe véve a modulok függőségi láncolat mentén történő betöltését, a nem megbízható fiókok feltörése az NPM összes moduljának akár 52%-át is érintheti.

Forrás: opennet.ru

Hozzászólás