Tíz rosszindulatú csomagot töltöttek fel az npm csomagkezelőbe, amelyek legitim szoftverprojekteknek álcázzák magukat és egy információlopó kártevőt telepítenek Windows, Linux és macOS rendszerekre.
A csomagokat július 4-én töltötték fel az npm-re, és hosszú ideig észrevétlenek maradtak, mivel többrétegű obfuszkációval kerülték meg a szokásos statikus elemzési eljárásokat.
A Socket kiberbiztonsági vállalat kutatói szerint a tíz csomagot közel 10 000 alkalommal töltötték le, és ezek hitelesítő adatokat loptak el rendszerszintű jelszótárolókból, böngészőkből, valamint különféle hitelesítési szolgáltatásokból.
A cikk írásakor a csomagok továbbra is elérhetők voltak, noha a Socket már jelentette őket az npm felé:
-
-
- typescriptjs
- deezcord[.]js
- dizcordjs
- dezcord[.]js
- etherdjs
- ethesjs
- ethetsjs
- nodemonjs
- react-router-dom[.]js
- zustand[.]js
-
A Socket kutatói szerint a csomagok hamis CAPTCHA-megjelenítést alkalmaznak a terminálban, hogy legitimnek tűnjenek, majd letöltenek egy 24 MB-os, PyInstallerrel csomagolt információlopó komponenst.
A támadó typosquatting technikát alkalmazott, vagyis olyan csomagneveket hozott létre, amelyek kismértékben térnek el ismert és legitim könyvtárak neveitől (például: TypeScript, discord[.]js, ethers[.]js, nodemon, react-router-dom, zustand). Ezáltal a fejlesztők – elgépelés vagy figyelmetlenség miatt – könnyen egy rosszindulatú csomagot választhatnak ki a találati listából.
A telepítés során automatikusan lefut egy postinstall script, amely felismeri a gazdarendszer operációs rendszerét, megnyit egy új terminálablakot, majd ott észrevétlenül lefuttatja az app[.]js fájlt, elkerülve a naplózásban való megjelenést.
Az app[.]js fájl maga a malware betöltője, amely négy obfuszkációs réteget használ:
-
-
- önmagát dekódoló eval-burkolat,
- dinamikusan generált kulccsal történő XOR-alapú titkosítás,
- URL-kódolt payload,
- bonyolult vezérlési struktúra (control-flow obfuszkáció).
-
A script ASCII-karakterekből álló hamis CAPTCHA-t jelenít meg, ezzel tovább erősítve a telepítés látszólagos hitelességét.
A script ezt követően elküldi az áldozat geolokációs adatait és a rendszer egyedi azonosítóit a támadó C2 (Command and Control) szerverére. Ezt követően letölt és automatikusan elindít egy az adott operációs rendszerhez illeszkedő, 24 MB-os, PyInstallerrel csomagolt bináris állományt.
Az eszköz az alábbi célpontokra összpontosít:
-
-
- Rendszerszintű jelszótárolók, például: Windows Credential Manager, macOS Keychain, Linux SecretService, libsecret,
- Chromium-alapú és Firefox böngészők: profiladatok, mentett jelszavak, munkamenet-sütik.
- SSH-kulcsok gyakran használt könyvtárakban.
- OAuth-, JWT- és egyéb API-tokenek.
-
A begyűjtött adatokat a rendszer ideiglenes könyvtáraiban (/var/tmp, /usr/tmp) tárolja, majd tömörített archívumként továbbítja a támadó szerverére: 195[.]133[.]79[.]43.
Azoknak a fejlesztőknek, akik letöltötték a fent felsorolt csomagok bármelyikét, haladéktalanul javasolt a fertőzött eszköz(ök) helyreállítása, valamint valamennyi jelszó és hozzáférési token azonnali cseréje, mivel nagy a valószínűsége annak, hogy a hitelesítő adatok illetéktelen kezekbe kerültek.
Nyílt forráskódú csomagok telepítésekor (npm-ről vagy más csomagkezelőről) mindig célszerű körültekintően ellenőrizni a csomagnevet és kizárólag hiteles forrásból, hivatalos kiadótól származó csomagokat használni.
