Okosszerződések hibái és visszaélések
A kód nem hibázik – az ember, aki írta, igen. Hibák kihasználása, rosszindulatú szerződések, és mit tehet a nyomozó.
Az okosszerződések nem tévednek: pontosan azt teszik, amire megírták őket. Az őket megíró emberek viszont hibázhatnak, és egy rosszul megírt kód nem szándékolt következményekkel járhat. A blokklánc megváltoztathatatlansága pedig ilyenkor hátránnyá válik: egy hibás szerződést nem lehet egyszerűen kijavítani, és a hiba miatt elveszett pénzt sem lehet visszahívni.
A kockázatok fő típusai
- Programhiba, amelyet kihasználnak. A támadó egy olyan funkciót vagy funkciók kombinációját találja meg, amely a fejlesztő szándéka ellenére lehetővé teszi a szerződésben tárolt vagyon elvitelét. Az Ethereum történetének első nagy esete, a DAO feltörése is ilyen volt. A legnagyobb kriptovalutás lopások jelentős része a mai napig DeFi-szolgáltatások szerződéseinek hibáit célozza.
- Szándékosan rosszindulatú szerződés. A szerződés első ránézésre egy hétköznapi tokennek vagy szolgáltatásnak tűnik, de a kódjába rejtett szabályok a készítőjének kedveznek: például senki más nem adhatja el a tokent, a készítő bármikor kivonhatja a pénzt, vagy minden eladásnál 100% „díjat” von le. Ezekről a csaló tokenekről szóló kártyán lesz szó.
- Rejtett módosíthatóság. Bár a kód megváltoztathatatlan, a fejlesztő eleve beépíthet olyan lehetőséget, hogy egy másik szerződésre irányítsa át a működést (proxy). Ha a felhasználók ezt nem veszik észre, a „megváltoztathatatlan” szabályok egyik napról a másikra megváltozhatnak.
- Túl széles jogosultságok. Sok szolgáltatás használatához a felhasználónak engedélyeznie kell, hogy a szerződés elköltse a tokenjeit (approval). Ha valaki egy rosszindulatú szerződésnek ad korlátlan engedélyt, az bármikor kiürítheti a tárcáját.
Kódhibák kihasználása: bűncselekmény?
Felmerülhet a kérdés: ha valaki csak egy olyan funkciót használ, amely mindenki számára nyitva állt, és senkit sem tévesztett meg, elkövet-e bűncselekményt? A joggyakorlat erre a józan ész szerint felel: ha egy funkció nyilvánvalóan nem lehetett a szerződés készítőjének szándéka, a kihasználása – a jogtalan haszonszerzési célzat és az okozott kár esetén – bűncselekmény, ugyanúgy, mint egy hibásan működő bankautomatából többletként kiadott pénz megtartása. A legtöbb jogrendszerben az ilyen cselekmény az informatikai rendszerek felhasználásával elkövetett csalás valamely formájaként minősíthető: a blokkláncon működő okosszerződés információs rendszer, a vele való kommunikáció pedig adatbevitel.
Mit tehet a nyomozó?
A kódhibát kihasználó támadásoknál a klasszikus kiberbűnözési nyomok (e-mail-cím, IP-cím, fiókadatok) gyakran hiányoznak: a támadó egy frissen létrehozott címről, közvetlenül a blokkláncon dolgozik. Az egyetlen biztos nyom a pénz útja:
- a támadó címét és a megszerzett vagyon mozgását folyamatosan figyelni kell;
- ha a vagyon egy azonosítható szolgáltatóhoz (tőzsde, váltó) kerül, onnan már hagyományos adatok szerezhetők;
- ha a támadó a díjhoz szükséges ethert valahonnan kapta, a forrás címe is nyom lehet;
- egyes tokenek kódja lehetővé teszi a befagyasztást – ilyenkor a kibocsátóval együttműködve a vagyon mozgása megakadályozható.
Megjegyzés: a támadók gyakran képzettek, és tudják, hogyan rejtsék el a nyomaikat. Mégsem szabad abból kiindulni, hogy nem hibáznak: a nagy összegű lopásoknál a megszerzett vagyont valahol előbb-utóbb pénzzé kell tenni, és a pénzzé tétel pontja a leggyengébb láncszem. Ráadásul az Ethereum ökoszisztémában – a Bitcoinnal ellentétben – egyes tokenek esetén technikai beavatkozás (befagyasztás) is lehetséges, a gyanúsított azonosítása nélkül is.
Extra tudásHogyan védekeznek a fejlesztők?
A komolyabb projektek a szerződéseik kódját közzététel előtt független szakértőkkel auditáltatják, és gyakran jutalmat (bug bounty) ajánlanak annak, aki hibát talál és jelent. Kialakult az úgynevezett „fehér kalapos” (white hat) gyakorlat is: ha valaki hibát talál, és a pénzt a támadók előtt „kimenti”, majd visszaadja, jutalmat kap. Egyes támadók utólag hivatkoznak arra, hogy ők is csak ilyen „kimentést” végeztek, és tárgyalnak a jutalomról – ez azonban nem változtat azon, hogy a jogosulatlan pénzszerzés megtörtént.
Ellenőrizd a tudásod
A kvíz betöltése…