A napokban egy rendkívül érdekes támadás történt, ami összesen 18 darab olyan JavaScript csomagot érint, amelyeket heti szinten összesen több, mint 2 milliárd alkalommal szoktak letölteni a fejlesztők és a felhasználók, vagyis eléggé súlyos eseményről van szó – ekkora volumenű támadásra ebben az iparágban eddig még nem volt példa. A problémát az Aikido csapata vette észre, akik gyorsan fel is vették a kapcsolatot az érintett fejlesztővel, akiről hamar kiderült, az ő figyelmetlensége és felelőtlensége miatt következhetett be az eset, ugyanis egy hitelesnek tűnő adathalász levélben található linkre kattintott, onnan pedig már nem volt visszaút.
A támadók hozzáférést szereztek a felhasználói fiókja felett, amelynek eredményeként összesen 18 népszerű JavaScript csomagot módosítottak úgy, hogy azok kriptovaluta-lopásra használható kártékony kódot tartalmazzanak. Ha ezeknek a csomagoknak a legfrissebb, immár kártékony kóddal ellátott verzióját telepítik egy szerverre, akkor az adott weboldal látogatóit már támadhatja is a kártékony kód, méghozzá úgy, hogy a kriptovalutákkal kapcsolatos és a web3 aktivitásokat csendben elfogja, de a kriptotárcákkal történő interakciókat is tudja manipulálni, valamint képes átírni a fizetéssel kapcsolatos műveletek során a célszámlát is, ezzel a kriptovaluta a kiberbűnözők által felügyelt tárcákba kerülhet.
A legszebb az egészben, hogy ezeket az aljas műveleteket a háttérben, a felhasználó tudta és gyanúja nélkül végzi a kártékony kód, úgy, hogy a kezelőfelületen minden hibátlannak látszik, a háttérben viszont zajlik a manipuláció, amiről jó eséllyel még a szerver üzemeltetője, illetve a csomagot telepítő webmester sem tud, hiszen biztonságosnak hitt forrásból érkezett a csomag, ahogy eddig is.
A támadás az alábbi csomagokat érintette:
- backslash (0,26 millió heti letöltés)
- chalk-template (3,9 millió heti letöltés)
- supports-hyperlinks (19,2 millió heti letöltés)
- has-ansi (12,1 millió heti letöltés)
- simple-swizzle (26,26 millió heti letöltés)
- color-string (27,48 millió heti letöltés)
- error-ex (47,17 millió heti letöltés)
- color-name (191,71 millió heti letöltés)
- is-arrayish (73,8 millió heti letöltés)
- slice-ansi (59,8 millió heti letöltés)
- color-convert (193,5 millió heti letöltés)
- wrap-ansi (197,99 millió heti letöltés)
- ansi-regex (243,64 millió heti letöltés)
- supports-color (287,1 millió heti letöltés)
- strip-ansi (261,17 millió heti letöltés)
- chalk (299,99 millió heti letöltés)
- debug (357,6 millió heti letöltés)
- ansi-styles (371,41 millió heti letöltés)
Ezek a fentiek alapján összesen heti szinten 2 milliárdnál is több letöltést generálnak, az viszont nem derült ki, a már fertőzött csomagokat pontosan hányan tölthették le. Az viszont biztos, hogy az érintett fejlesztő végül vissza tudta szerezni az ellopott felhasználói fiókját és nekilátott a kártékony kódok eltávolításának, így a fenti csomagok éppen aktuálisan elérhető legfrissebb verziói már mentesek a kriptovaluta-lopó kódtól.
A támadás az NPM-et célozta: a támadók még szeptember 5-én regisztráltak egy új domaint, ami az npmjs.help nevet viseli, majd ezen keresztül egy adathalász levelet küldtek az érintett fejlesztőnek. Josh Junon a valódinak tűnő levélben található linkre rá is kattintott, ami a kétfaktoros hitelesítés visszaállítását okozta, ezzel utat nyitott a támadók előtt, akik gyorsan el is lopták felhasználói fiókját.
A csomagok érintett verziói:
- backslash – 0.2.1
- chalk-template – 1.1.1
- supports-hyperlinks – 4.1.1
- has-ansi – 6.0.1
- simple-swizzle – 0.2.3
- color-string – 2.1.1
- error-ex – 1.3.3
- color-name – 2.0.1
- is-arrayish – 0.3.3
- slice-ansi – 7.1.1
- color-convert – 3.1.1
- wrap-ansi – 9.0.1
- ansi-regex – 6.2.1
- supports-color – 10.2.1
- strip-ansi – 7.1.1
- chalk – 5.6.1
- debug – 4.4.2
- ansi-styles – 6.2.2
A fejlesztő a jelek szerint már mindegyik csomagból készített új, a kártékony kódot nem tartalmazó kiadást, aminél vagy eggyel nőtt, vagy pedig eggyel csökkent a verziószám utolsó számjegye. Ha a fenti csomagokat használjuk szervereinken, feltétlenül ellenőrizzük a verziószámot és haladéktalanul frissítsük a csomagot biztonságos verzióra.