Az Ethereum blokklánc tegnap délben élesítette új frissítését. A Pectra névre keresztelt javítócsomag több pontja is az úgynevezett “account abstraction”, vagyis a tárcák programozhatóvá tételének irányába tett lépéseket. Ez a technikai előrelépés azonban nem csak a felhasználási lehetőségek terét bővítette ki, hanem megnyitotta az utat néhány újabb támadási forma előtt.
A problémát két új technikai komponens okozhatja: az EIP-3074 és az EIP-7702 nevű fejlesztések. Ezek célja, hogy az Ethereum-felhasználók egyszerűbben és többféle módon használhassák pénztárcáikat, ám ezek a könnyítések akár gyengíthetnek is egy tárca biztonságán.
EIP-3074
Az EIP-3074-el két Ethereum parancs, az AUTH és az AUTHCALL teszik lehetővé, hogy egy felhasználó, azaz aki rendelkezik a pénztárca privát kulcsával, jogosultságot adjon egy okosszerződésnek, hogy helyette tranzakciókat hajtson végre.
Ha a tárcánkkal engedélyezünk egy rosszindulatú parancsot, egy támadó átveheti az irányítást a pénztárcánk felett. Nem kell többé jelszót, engedélyt vagy tranzakciót megerősíteni – egyetlen klikkelés is elég lehet, hogy lecsapolják a tárcánkat
Korábban, ha egy Ethereum-felhasználó valamilyen műveletet akart végrehajtani, manuálisan kellett jóváhagynia minden egyes tranzakciót. Az új rendszer viszont lehetővé teszi, hogy egyszeri aláírással egy teljes jogkört delegáljunk egy okosszerződésnek. Ez hasznos lehet például automatizált kereskedési megoldásokhoz vagy automatizált fizetések (pl.: előfizetések) engedélyezéséhez, de ha nem figyelünk, azt a támadók is kihasználhatják.
EIP-7702
A másik problémás újítás az EIP-7702 lehet, aminek élesedésével egy hagyományos, külső tulajdonban lévő fiók (EOA – externally owned account) egy tranzakció erejéig úgy viselkedhet, mint egy okosszerződés.
Az Ethereumon kétféle fióktípus létezik:
- EOA (külső fiók): ez az, amit egy felhasználó a privát kulcsával kezel. Ez a „normál pénztárca”.
- Szerződéses fiók (contract account): ez egy olyan cím, amelyen fut valamilyen programozott logika (okosszerződés) fut.
Az EIP-7702 lehetővé teszi, hogy a normál pénztárca egy tranzakció idejére felvegye egy okosszerződés viselkedését – azaz képes legyen egy előre megírt parancsot lefuttatni anélkül, hogy örökre szerződéses fiókká kellene válnia.
Ez szintén azért lehet hasznos, mert új pénztárcafunkciók bevezetését teszi lehetővé költséghatékony alkalmazás mellett. Használata kevesebb tárolási kapacitást igényel az Ethereumon és alacsonyabb gas-költségekkel jár, mint egy állandóan működő okosszerződés futtatása.
A fő biztonsági kockázat itt is az, hogy az EOA-felhasználó ideiglenesen okosszerződéssé változtatja a saját tárcáját, ami az adott tranzakción belül tetszőleges műveletet végezhet – például elutalhatja a tárcában tárolt vagyont egy hackernek. Ez egy új támadási felületet jelent, aminek korábban csak az okosszerződéseket kezelő fiókok voltak kitéve, mostantól viszont a hétköznapi pénztárcákat is értintheti.
Vigyázz, mit írsz alá
A PEctra élesedését követően több szakértő is a közösségi fiókján figyelmeztetett, hogy sok felhasználó rutinból ír alá és okézza le a tranzakciókat, anélkül, hogy pontosan értené, hogymihez ad jóváhagyást. A nagyobb tárcák, például a Metamask készültek erre a frissítésre, így figyelmeztetnek a gyanús tranzakcióknál, de ezek is csak akkor érnek valamit, ha a felhasználó elolvassa a szöveget és nem lép át rutinból a felhívásokon.
Mivel rengeteg pénzt lehet ezekkel a módszerekkel ellopni, valószínűleg a hackerek is kreatívak lesznek, hogy rábírjanak a tárcánkhoz való jogosultság átadására, ezért mindig érdemes alaposan megfontolni, hogy mihez adunk jóváhagyást. Alapvető biztonsági intézkedésként tehát a jövőben is érdemes külön tárcában tárolni a napi használatra szánt kriptopénzeinket és ezektől elkülönítve tartani a nagyobb értékű eszközöket.