Čas branja: 5 min
Svet Web3 je svet protokolov in standardov. Gotovo ste naleteli na več standardov ERC. Nekateri najbolj znani standardi ERC so 20 in 721, ki sta za žetone oziroma NFT. Vendar Web3 ni omejen na to.
V Web3 vidimo redne posodobitve in nadgradnje. Ena zadnjih nadgradenj je bila ERC 4337, ki je bila uvedena v Ethereum Mainnet marca 2023. Vsaka posodobitev ni uspešna naenkrat; enako velja za ERC 4337. V tem spletnem dnevniku se bomo seznanili z ranljivostmi glede razdelka Uporabniško delovanje standarda in njihovim vplivom. Najprej začnimo s kratkim uvodom v standard ERC 4337.
Kaj je ERC 4337?
Za razliko od omrežja Bitcoin, Ethereum podpira pametne pogodbe v verigi, zaradi česar ima Ethereum dve različni vrsti računov, en transakcijski ali operativni račun. Poleg tega imajo pametne pogodbe svoj prostor, skoraj kot račun. Ti dve vrsti računov v Ethereumu imata svoje funkcije.
Večina denarnic, ki delujejo z Ethereumom, so denarnice EOA, kar pomeni uporabniške račune, ne tiste pametne pogodbe. Te vrste računov imajo svoje omejitve. Ena od omejitev vključuje izključno zanašanje uporabnika na zasebne ključe za dostop do računov in zahtevanje vseh podpisov za transakcije. Te omejitve so spodbudile uvedbo ERC 4337.
ERC 4337 poskuša zagotoviti abstrakcijo računa z združevanjem najboljših dveh funkcij tipa računa. Da, računi EOA in pametni pogodbeni računi. To omogoča ena sama pogodba, ki lahko hkrati izvaja transakcije z žetoni in ustvarja pogodbe, ERC 4337 pa je standard, ki omogoča ta osupljiv nov napredek.
Ranljivost pakiranja UserOperation?
Vse o tem standardu in projektu je super, toda kaj je šlo narobe? No, prišlo je do težave pri izvajanju, ki je povzročila nedosledne zgoščene vrednosti glede na metodo, uporabljeno za podpisovanje. To vodi do navzkrižja vrstnega reda, zlasti do različnih zgoščenih vrednosti za iste uporabniške operacije in trkov zgoščenih vrednosti za različne uporabniške operacije.
Prizadete regije so bile omejene na dve ranljivosti, ranljivost pakiranja EntryPoint in ranljivost pakiranja VerifyingPaymaster. Več o tem pozneje. Najprej imejmo splošno razumevanje, nato pa se bomo učili o njih posamezno.
Oglejmo si UserOperation.sol:-
Vidite parameter UserOperation, Calldata, posredovan kot argument funkciji pakiranja. Raziščimo strukturo: -
To so polja, ki jih nosi struktura UserOperation. Za kopiranje tega velikega dela Calldata v pomnilnik segmenti kode uporabljajo sestavljanje. Nekatere metode pogodb nameravajo zajeti vsa polja UserOperation, vključno s polji spremenljive velikosti, imenovanimi tudi dinamična polja v kodiranju ABI. Na primer, dinamično kodiranje v tej strukturi je 'initCode', 'callData' in 'paymasterAndData'.
Nekatere metode ne morejo vključevati 'paymasterAndData', ker to polje še ni definirano ali deklarirano. Metode za to uporabljajo priročno polje '.offset', ki je na voljo dinamičnim podatkovnim tipom. Toda pogodbe, ki uporabljajo argumente, kodirane z ABI, ne potrdijo vrstnega reda, v katerem so definirana polja, in veljavnosti odmikov. Možno je sestaviti veljavno predstavitev uporabniških operacij v Calldata z neobičajnimi lastnostmi zgoščevanja.
Ranljivost pakiranja EntryPoint
Težava z UserOperation vpliva tudi na nekatere druge dele standarda, ranljivost EntryPoint Packing je ena izmed teh. Ko je med EntryPoint in pogodbo denarnice uporabljena drugačna shema zgoščevanja ali je uporabljeno nestandardno kodiranje uporabniške operacije, opazimo razhajanje zgoščevanja.
Tveganje se pojavi kot vstopna točka. Zdaj bi eno uporabniško operacijo lahko predstavili z več 'uporabniškimi zgoščenimi op.', isti 'uporabniški op. zgoščeni' pa bi lahko predstavljal več uporabniških operacij. Zdaj lahko to povzroči nekatere neželene učinke. Pogovorimo se o vplivu, ki ga lahko ima.
Erc 4337 je še vedno v zelo zgodnji fazi, saj je bil izdan šele marca, zato vpliv teh ranljivosti ni v celoti znan. Iz ptičje perspektive je težko opisati potencialni vpliv. Poleg tega je učinek odvisen od izvajanja povezovalnikov, indeksatorjev, raziskovalcev uporabniških operacij in drugih storitev zunaj verige. Oglejmo si nekaj težav, ki jih povzroča ta ranljivost.
- To lahko povzroči zmedo za uporabnika, ker se lahko zgoščena vrednost uporabniške operacije spreminja med časom oddaje in vključitvijo. Večini denarnic ta pojav ni znan, zato te razlike morda ne bodo upoštevale.
- Denarnice je mogoče spremeniti in oblikovati tako, da se namerno izognejo indeksiranju, tako da nastavite vse zgoščene vrednosti uporabniških operacij, da so enake.
- Opazimo lahko napačno ravnanje s podatki in ključi, če storitev izven verige, ki spremlja vključitev uporabniške operacije, zgreši vključitev dane uporabniške operacije.
Preverjanje ranljivosti pakiranja Paymaster
Nihče ne mara, da nekaj naroči v spletni trgovini in prejme popolnoma drugačen izdelek. Enako je na Web3, vendar ta ranljivost poslabša uporabniško izkušnjo. Uporabnik je morda spremenil ali drugačno vsebino med časom podpisa in vključitvijo v verigo. In razlog, zakaj se to zgodi, je, da dve različni uporabniški operaciji vrneta isti hash iz funkcije 'VerifyingPaymaster.getHash()'.
Funkcija VerifyingPaymaster.getHash() sprejme nekaj argumentov, kot je 'UserOperation', ki je struktura, 'validUnitl', vrednost uint48 in validAfter drugo vrednost uint48. Težava različnih vsebin med časom podpisovanja in časom vključitve vpliva na uporabniško izkušnjo in splošno varnost. Pogovorimo se o nekaterih pomislekih, ki jih sproža.
- Podpisniki zunaj verige, ki se podpišejo v formatu, kodiranem z ABI, potem ko prejmejo uporabniške operacije, ali podpisniki z integracijo pogodbe za pripravo podatkov za podpis postanejo ranljivi.
- Zgoščeno vrednost je mogoče spremeniti tako, da zajema manj elementov, kot je pričakovano, kar lahko povzroči, da so nekatera statična polja, kot je initCode itd., izključena iz zgoščene vrednosti. Posledica tega je lahko drugačna uporaba od predvidene za sponzorske podpise plačilnika.
- Kršitev in obhod pravil lahko opazimo s spremembo userOp.initCode in userOp.callData po pridobitvi podpisa. To bo omogočilo uporabo izvornega žetona skrbnika plačila za druge namene kot za kovanje NFT brez plina.
zaključek
Z nenehnim napredkom in razvojem bomo priča mnogim osupljivim stvarem in ERC 4337 je ena izmed njih. Medtem ko je razvoj in napredek varnosti nekaj, kar nikoli ne moremo ogroziti. Čudovito je opaziti, kako hitro so bile odkrite ranljivosti v standardu in izvajajo se stalne raziskave in razvoj, da bi bil varen.
Pomembno je omeniti, da lahko tudi nekatere največje in najbolj znane organizacije, ki gradijo na Web3, delajo napake, povezane z varnostjo, zagotovo pa jih delajo tudi drugi protokoli. Nenehno naraščanje Web3 incidenti v zadnjih nekaj letih je očitno.
Rešitev na enem mestu za zaščito vas, vaših uporabnikov in vašega protokola pred takšnimi varnostnimi grožnjami gre v revizijo. QuillAudits smo eden najboljših ponudnikov storitev na področju revizije pametnih pogodb in varnosti verige blokov. Obiščite naše spletno mesto, če želite izvedeti več in zaščititi svoj projekt. In ostanite z nami, če želite uživati v več takšnih informativnih blogih
34 Ogledov
- Distribucija vsebine in PR s pomočjo SEO. Okrepite se še danes.
- Platoblockchain. Web3 Metaverse Intelligence. Razširjeno znanje. Dostopite tukaj.
- Kovanje prihodnosti z Adryenn Ashley. Dostopite tukaj.
- vir: https://blog.quillhash.com/2023/04/24/understanding-erc-4337-user-operation-packing-vulnerability/
- : je
- :ne
- 20
- 2023
- a
- O meni
- dostop
- Račun
- abstrakcija računa
- računi
- čez
- Poleg tega
- napredovanje
- po
- vsi
- Prav tako
- spremenila
- an
- in
- Še ena
- SE
- Argument
- Argumenti
- AS
- Skupščina
- At
- Poskusi
- Revizija
- revidiranje
- temeljijo
- BE
- ker
- postanejo
- počutje
- BEST
- med
- največji
- blockchain
- Blockchain varnost
- Blog
- kršitev
- Building
- vendar
- by
- se imenuje
- CAN
- ne more
- zajemanje
- Vzrok
- vzroki
- verige
- spremenite
- spreminjanje
- Koda
- združevanje
- kako
- Kompromis
- Skrbi
- zmedeno
- gradnjo
- Vsebina
- neprekinjeno
- Naročilo
- pogodbe
- udobje
- bi
- pokrov
- ustvarjajo
- datum
- opredeljen
- odvisno
- razporejeni
- opisati
- zasnovan
- razvoju
- Razvoj
- Razlika
- drugačen
- razpravlja
- Razhajanja
- do
- dinamično
- Zgodnje
- v zgodnji fazi
- Učinki
- elementi
- uživajte
- popolnoma
- ERC-4337
- itd
- ethereum
- GLAVNO OMREŽJE ETHEREUM
- Tudi
- Tudi vsak
- Primer
- izključena
- Pričakuje
- izkušnje
- raziskuje
- Raziskovalci
- oči
- olajšanje
- slavni
- Lastnosti
- Nekaj
- Polje
- Področja
- Najdi
- prva
- za
- format
- je pokazala,
- iz
- v celoti
- funkcija
- funkcionalnosti
- delovanje
- splošno
- dobili
- pridobivanje
- dana
- Go
- dogaja
- se zgodi
- Trdi
- hash
- mešanje
- Imajo
- Kako
- HTTPS
- vpliv
- Vplivi
- Izvajanje
- izvajanja
- Pomembno
- in
- vključujejo
- vključuje
- Vključno
- vključitev
- Posamezno
- informativni
- integracije
- nameravajo
- namerno
- v
- Predstavitev
- vprašanje
- Vprašanja
- IT
- samo
- tipke
- znano
- velika
- Zadnja
- Zadnji
- vodi
- UČITE
- kot
- Omejitev
- omejitve
- Limited
- Poglej
- je
- glavno omrežje
- Znamka
- IZDELA
- več
- marec
- max širine
- Maj ..
- pomeni
- Spomin
- Metoda
- Metode
- morda
- kovanje
- napačno ravnanje
- pogreša
- napake
- spremembe
- spremljanje
- več
- Najbolj
- več
- materni
- Izvorni žeton
- mreža
- Novo
- NFT
- zdaj
- of
- on
- ONE
- na spletu
- spletno nakupovanje
- OP
- Delovanje
- operativno
- operacije
- or
- Da
- Organizacije
- Ostalo
- Drugi protokoli
- naši
- več
- Splošni
- lastne
- Pack
- parameter
- zlasti
- deli
- opravil
- pojav
- platon
- Platonova podatkovna inteligenca
- PlatoData
- mogoče
- potencial
- Pripravimo
- zasebna
- Zasebni ključi
- Izdelek
- Projekt
- Lastnosti
- zaščito
- protokol
- protokoli
- zagotavljajo
- če
- ponudniki
- namene
- hitro
- Quillhash
- povečuje
- Razlog
- prejema
- o
- regije
- redni
- sprosti
- odvisnost
- predstavljajo
- zastopanje
- zastopan
- Raziskave
- raziskave in razvoj
- povzroči
- vrnitev
- Rise
- Tveganje
- pravila
- Enako
- shema
- Oddelek
- zavarovanje
- Zavarovano
- varnost
- Varnostne grožnje
- glej
- segmentih
- Storitev
- ponudnikov storitev
- Storitve
- nastavitev
- več
- Nakupovalna
- podpisati
- Podpisi
- podpis
- hkrati
- sam
- pametna
- pametna pogodba
- Pametne pogodbe
- So
- SOL
- Rešitev
- nekaj
- Nekaj
- Vesolje
- sponzorstvo
- Stage
- standardna
- standardi
- Začetek
- bivanje
- Še vedno
- predložitev
- uspešno
- taka
- Podpira
- zagotovo
- meni
- kot
- da
- O
- njihove
- Njih
- Tukaj.
- te
- jih
- stvari
- ta
- tisti,
- grožnje
- čas
- do
- žeton
- Boni
- tudi
- vrh
- transakcija
- transakcijski
- Transakcije
- Res
- Vrste
- razumevanje
- nezaželen
- Nadgradnja
- posodobitve
- Nadgradnje
- uporaba
- Rabljeni
- uporabnik
- Uporabniška izkušnja
- Uporabniki
- POTRDI
- vrednost
- zelo
- Poglej
- obisk
- Ranljivosti
- ranljivost
- Ranljivi
- denarnica
- Denarnice
- je
- we
- Web3
- Spletna stran
- Dobro
- dobro znana
- so bili
- Kaj
- kdaj
- ki
- medtem
- zakaj
- bo
- z
- priča
- svet
- Napačen
- let
- Vi
- Vaša rutina za
- zefirnet