NPM támadás Google Naptárral
A Veracode biztonsági kutatói egy kifinomult támadást azonosítottak az npm csomagkezelő ökoszisztémájában, amely a os-info-checker-es6 nevű csomaghoz köthető. A csomag első verziói ártalmatlannak tűntek, rendszerinformációkat gyűjtöttek, és nem mutattak rosszindulatú viselkedést.
Későbbi verziókban azonban platformspecifikus, előre lefordított bináris fájlokat adtak hozzá, amelyek egy decode nevű függvényt tartalmaztak. Ez a függvény egy látszólag egyszerű karakterláncot dolgozott fel, amely valójában láthatatlan Unicode karakterek sorozatát tartalmazta. Ezek a karakterek a Unicode kiegészítő síkjának variációs szelektorai közé tartoztak, amelyek nem jelennek meg vizuálisan, így ideálisak steganográfiai célokra.
A decode függvény által visszaadott Base64-kódolt adatokat a kód eval(atob(decodedString)) hívással hajtotta végre, lehetővé téve tetszőleges JavaScript kód futtatását a telepítés során.
A támadás következő fázisában a csomag egy Google Calendar rövid linket használt, amely egy esemény oldalára mutatott. Az esemény HTML kódjából a támadó egy Base64-kódolt URL-t nyert ki, amely a végső rosszindulatú kódot tartalmazta. Ez a megközelítés lehetővé tette a támadó számára, hogy dinamikusan változtassa a letöltött kódot anélkül, hogy közvetlenül módosítania kellett volna az npm csomagot.
A Veracode jelentése szerint a os-info-checker-es6 csomagot körülbelül 655 alkalommal töltötték le hetente, és négy másik npm csomag is függött tőle: skip-tot, vue-dev-serverr, vue-dummyy és vue-bit. Ezek a csomagok valószínűleg ugyanahhoz a rosszindulatú kampányhoz kapcsolódnak.