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.