NPM-csomagokkal terjesztett információlopó kártevő veszélyezteti a fejlesztőket Windows, Linux és macOS platformokon

Segítséget kaptál? Szívesen töltöd itt az idődet? Visszajársz hozzánk? Támogasd a munkákat: Ko-fi és Paypal!

kami911 képe

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.

(forrás, forrás)