A JavaScript ökoszisztéma sebezhetősége – egy tanulságos incidens

Charles Guillemet, a Ledger technológiai igazgatója szeptember 8-án sokakat sokkoló figyelmeztetést adott ki, amelyben azt javasolta, hogy ideiglenesen célszerű beszüntetni a blokklánc tranzakciókat, mivel úgy tűnik, hogy jelentős, ún. ellátási lánc elleni kibertámadás zajlik.

Azt írta, hogy egy neves fejlesztő NPM-fiókját feltörték és rosszindulatú kódrészeket töltöttek fel kódcsomagokba. Az érintett fejlesztői csomagokat már több mint 1 milliárdszor letöltötték, ami azt jelenti, hogy az egész JavaScript ökoszisztéma veszélyben lehet, legalábbis Guillemet ezzel rémisztgetett. Az NPM (Node Package Manager) egy, a JavaScript nyelvhez tartozó csomagkezelő rendszer. Egy fejlesztő NPM-fiókja az a hozzáférés, amellyel csomagokat tud feltölteni vagy frissíteni az NPM-tárhelyre. Ha ezt feltörik, a támadók rosszindulatú kódot tudnak bejuttatni a csomagokba, amit aztán más fejlesztők letöltenek és beépítenek a saját projektjeikbe. Több hasonló is volt a közelmúltban.

A problémát a megjelenés után néhány órával meg is oldották

Az érintett fejlesztő Josh Junon alias Qix volt, aki egy csaló e-mailnek esett áldozatul, amely az NPM hivatalos támogatásának tűnt. Állítólagosan az e-mail egy olyan domainről érkezett, amely egy hamis weboldalt futtat, és azt a látszatot kelti, mintha az eredeti npmjs.com lenne. A csaló e-mailekben olyan fenyegetést fogalmaztak meg az érintett fejlesztők számára, hogy ha nem cselekszenek azonnal (azaz kattintanak a linkre), akkor szeptember 10-én már zárolják is a fiókjukat.

A támadók ezután rosszindulatú verziókat töltöttek fel több mint 20 népszerű csomagból, például a chalk, debug, strip-ansi csomagokból, amelyek hetente több mint 2 milliárd letöltést generálnak. Például a chalk egy olyan NPM-csomag, amelyet arra használnak, hogy színes vagy éppen formázott szöveget jeleníthessenek meg a parancssorban.

A beépített rosszindulatú kódok célja kriptovaluták ellopása volt egyszerű tárcacím csere útján. Guillemet posztjában arra figyelmeztette a felhasználókat, hogy aki nem használ hardveres tárcát, az inkább ne hajtson végre láncon belüli tranzakciókat. Az X-en és más közösségi oldalakon teljesen elszabadult az őrület, voltak akik a valaha volt legnagyobb ellátási lánc elleni támadásnak nevezték az ügyet.

A Ledger igazgatója nem az egyetlen volt, aki észrevette a támadást, amit ráadásul később maga a fejlesztő is megerősített. De aztán gyorsan reagált is, az NPM csapata pedig néhány órán belül eltávolította az érintett csomagverziókat. Azonban még mindig sokan tartanak attól, hogy a weboldalak frontendjei sebezhetőek lehetnek.

A rosszindulatú kód főként a böngészőben futott, a szerveroldali alkalmazásokra nem volt közvetlen hatással. De minden olyan projekt, amely npm frissítést futtatott az érintett időablakban, potenciálisan veszélybe kerülhetett. A jelenlegi információk szerint valamikor szeptember 8-án magyar idő szerint délután három és öt között töltötték fel az első fertőzött verziókat. Öt óra után nem sokkal viszont már el is kezdtek biztonsági szakértői csapatok dolgozni a helyzet kezelésén és a fertőzött csomagok eltávolításán. Valamikor szeptember 8-án este 10 óra környékén került törlése minden fertőzött csomag. Erre az idősávra kell tehát figyelni. Mivel szerveroldali alkalmazásokat nem érintett az ügy, nem futott le olyan környezetben, ahol a kódot szerveren, háttérben, például Node.js alkalmazásként futtatják. A támadás célja böngészőben futó JavaScript volt – például olyan frontend alkalmazások, ahol a felhasználó interakcióba lép a weboldallal, és a kód a felhasználó gépén fut.

Jelen írás nem minősül befektetési tanácsadásnak. Részletes jogi információ