Timp de citit: 5 minute
Lumea Web3 este o lume a protocoalelor și standardelor. Cu siguranță că ați întâlnit mai multe standarde ERC. Unele dintre cele mai cunoscute standarde ERC sunt 20 și 721, care sunt pentru jetoane și, respectiv, NFT. Dar Web3 nu se limitează la asta.
Vedem actualizări și upgrade-uri regulate în Web3. Una dintre cele mai recente actualizări a fost ERC 4337, implementat pe Ethereum Mainnet în martie 2023. Nu fiecare actualizare are succes dintr-o singură mișcare; același lucru este valabil și cu ERC 4337. În acest blog, vom afla despre vulnerabilitățile referitoare la secțiunea Operarea utilizatorului a standardului și impactul acestora. În primul rând, să începem cu o scurtă introducere în standardul ERC 4337.
Ce este ERC 4337?
Spre deosebire de rețeaua Bitcoin, Ethereum acceptă contracte inteligente pe lanț, ceea ce face ca Ethereum să aibă două tipuri diferite de conturi, unul tranzacțional sau unul operațional. În plus, contractele inteligente au propriul spațiu, aproape ca un cont. Aceste două tipuri de conturi în Ethereum au propriile lor funcționalități.
Majoritatea portofelelor care funcționează cu Ethereum sunt EOA, ceea ce înseamnă conturile utilizatorului, nu cele cu contract inteligent. Acest tip de conturi au propriile lor limitări. O limitare include încrederea exclusivă a utilizatorului pe cheile private pentru a accesa conturile și necesitatea tuturor semnăturilor pentru tranzacții. Aceste limitări au determinat introducerea ERC 4337.
ERC 4337 încearcă să ofere abstractizarea contului combinând cele mai bune dintre cele două caracteristici de tip cont. Da, conturile EOA și smart contract. Acest lucru este posibil printr-un singur contract care poate tranzacționa jetoane și poate crea contracte simultan, iar ERC 4337 este un standard care facilitează acest nou progres extraordinar.
Vulnerabilitatea de ambalare UserOperation?
Totul despre acest standard și proiect este minunat, dar ce a mers prost? Ei bine, a existat o problemă de implementare care a dus la hashuri inconsecvente bazate pe metoda folosită pentru semnare. Acest lucru a dus la ciocniri de ordine, în special hash-uri divergente pentru aceleași operațiuni utilizator și hash-uri de ciocnire pentru operațiuni utilizator diferite.
Regiunile afectate au fost limitate la două vulnerabilități, Vulnerabilitatea de ambalare EntryPoint și Vulnerabilitatea de ambalare VerifyingPaymaster. Mai multe despre asta mai târziu. Să avem mai întâi o înțelegere generală, apoi vom învăța despre ele individual.
Să aruncăm o privire la UserOperation.sol:-
Vedeți parametrul UserOperation, un Calldata, fiind transmis ca argument funcției pack. Să explorăm structura:-
Acestea sunt câmpurile pe care le poartă structura UserOperation. Pentru a copia această porțiune mare a Calldata în memorie, segmentele de cod folosesc asamblarea. Unele metode ale contractelor intenționează să capteze toate câmpurile UserOperation, inclusiv câmpurile de dimensiune variabilă, numite și câmpuri dinamice în codificarea ABI. De exemplu, codificarea dinamică din această structură este „initCode”, „callData” și „paymasterAndData”.
Unele metode nu pot include „paymasterAndData” deoarece acel câmp nu este încă definit sau declarat. Pentru a face acest lucru, metodele folosesc câmpul de confort „.offset” furnizat tipurilor de date dinamice. Dar contractele care folosesc argumente codificate ABI nu validează ordinea în care sunt definite câmpurile și valabilitatea offset-urilor. Este posibil să construiți o reprezentare validă a operațiunilor utilizatorului în Calldata cu proprietăți hash neobișnuite.
Vulnerabilitatea ambalării punctului de intrare
Problema cu UserOperation afectează și unele dintre celelalte părți ale standardului, vulnerabilitatea EntryPoint Packing este una dintre acestea. Când se folosește o schemă de hashing diferită între EntryPoint și contractul de portofel sau este utilizată o codificare a operațiunii utilizator nestandard, vedem divergență de hash.
Riscul apare ca EntryPoint. Acum, o operație cu un singur utilizator ar putea fi reprezentată de mai multe „user op hash”, iar același „user op hash” ar putea reprezenta mai multe operațiuni de utilizator. Acum, acest lucru poate crea unele efecte nedorite. Să discutăm despre impactul pe care îl poate avea.
Erc 4337 este încă într-un stadiu foarte incipient, deoarece tocmai a fost lansat în martie, astfel încât impactul acestor vulnerabilități nu este pe deplin cunoscut. Este greu de descris impactul potențial din perspectiva unei păsări. În plus, impactul depinde de implementarea bundlerilor, indexarilor, exploratorilor de operațiuni ale utilizatorilor și a altor servicii în afara lanțului. Să ne uităm la câteva dintre problemele cauzate de această vulnerabilitate.
- Acest lucru poate cauza o experiență confuză pentru utilizator, deoarece hash-ul operațiunii utilizatorului se poate schimba între momentul trimiterii și cel al includerii. Acest fenomen este necunoscut pentru majoritatea portofelelor, așa că s-ar putea să nu țină cont de această diferență.
- Portofelele pot fi modificate și proiectate pentru a evita în mod intenționat indexarea, setând toate hashurile operațiunilor utilizatorului să fie aceleași.
- Putem vedea manipularea greșită a datelor și a cheilor dacă un serviciu în afara lanțului care monitorizează includerea operațiunii utilizatorului nu include includerea unei anumite operațiuni de utilizator.
Verifying Paymaster Packing Vulnerability
Nimănui nu-i place să comande ceva din cumpărături online și să primească un produs complet diferit. Același lucru este și pe Web3, dar această vulnerabilitate degradează experiența utilizatorului. Un utilizator poate avea conținut modificat sau diferit între momentul semnării și includerea în lanț. Și motivul pentru care se întâmplă acest lucru este că două operațiuni diferite ale utilizatorului returnează același hash din funcția „VerifyingPaymaster.getHash()”.
Funcția VerifyingPaymaster.getHash() preia câteva argumente precum „UserOperation”, care este o structură, „validUnitl”, o valoare uint48 și o altă valoare uint48 validAfter. Problema conținutului diferit dintre timpul semnării și momentul includerii are un impact asupra experienței utilizatorului și a securității generale. Să discutăm câteva dintre preocupările pe care le ridică.
- Semnatarii offchain care se semnează într-un format codificat ABI după ce primesc operațiuni ale utilizatorului sau semnatarii cu integrări contractuale pentru a pregăti datele pentru semnare devin vulnerabili.
- Hash-ul poate fi modificat pentru a acoperi mai puține elemente decât era de așteptat, ceea ce poate duce la excluderea unor câmpuri statice, cum ar fi initCode etc., din hash. Acest lucru poate avea ca rezultat o utilizare diferită de cea prevăzută pentru semnăturile de sponsorizare paymaster.
- Putem vedea o încălcare și ocolire a regulilor prin schimbarea userOp.initCode și userOp.callData după obținerea unei semnături. Acest lucru va permite ca jetonul nativ al plătitorului să fie utilizat în alte scopuri decât baterea NFT fără gaz.
Concluzie
Odată cu progresul și dezvoltarea continuă, vom asista la multe lucruri minunate, iar ERC 4337 este unul dintre ele. În timp ce dezvoltarea și promovarea securității este ceva pe care nu îl putem compromite niciodată. Este minunat să observăm cât de repede au fost găsite vulnerabilitățile în standard și se efectuează cercetări și dezvoltare continue pentru a se asigura.
Este important de remarcat că chiar și unele dintre cele mai mari și mai cunoscute organizații construite în Web3 pot face greșeli legate de securitate și, cu siguranță, celelalte protocoale le fac și ele. Creșterea continuă în Incidente Web3 în ultimii ani este evident.
Soluția unică pentru a vă proteja pe dvs., utilizatorii și protocolul dvs. de astfel de amenințări de securitate va fi auditată. Noi, QuillAudits, suntem unul dintre cei mai buni furnizori de servicii în auditarea contractelor inteligente și securitatea blockchain. Vizitați site-ul nostru pentru a afla mai multe și pentru a vă asigura proiectul. Și rămâneți pe fază pentru a vă bucura de mai multe astfel de bloguri informative
34 Vizualizări
- Distribuție de conținut bazat pe SEO și PR. Amplifică-te astăzi.
- Platoblockchain. Web3 Metaverse Intelligence. Cunoștințe amplificate. Accesați Aici.
- Mintând viitorul cu Adryenn Ashley. Accesați Aici.
- Sursa: https://blog.quillhash.com/2023/04/24/understanding-erc-4337-user-operation-packing-vulnerability/
- :este
- :nu
- 20
- 2023
- a
- Despre Noi
- acces
- Cont
- abstracția contului
- Conturi
- peste
- plus
- avansare
- După
- TOATE
- de asemenea
- modificate
- an
- și
- O alta
- SUNT
- argument
- argumente
- AS
- Asamblare
- At
- Încercările
- de audit
- audit
- bazat
- BE
- deoarece
- deveni
- fiind
- CEL MAI BUN
- între
- Cea mai mare
- blockchain
- Securitate Blockchain
- Blog
- încălcarea
- Clădire
- dar
- by
- denumit
- CAN
- nu poti
- captura
- Provoca
- cauze
- lanţ
- Schimbare
- schimbarea
- cod
- combinând
- cum
- compromis
- preocupările
- confuz
- construi
- conținut
- continuu
- contract
- contracte
- comoditate
- ar putea
- acoperi
- crea
- de date
- definit
- depinde de
- dislocate
- descrie
- proiectat
- în curs de dezvoltare
- Dezvoltare
- diferenţă
- diferit
- discuta
- Divergență
- do
- dinamic
- Devreme
- stadiu timpuriu
- efecte
- element
- se bucura
- în întregime
- CEC-4337
- etc
- ethereum
- ETHEREUM MAINNET
- Chiar
- Fiecare
- exemplu
- exclus
- de aşteptat
- experienţă
- explora
- Exploratori
- ochi
- facilitând
- celebru
- DESCRIERE
- puțini
- camp
- Domenii
- Găsi
- First
- Pentru
- format
- găsit
- din
- complet
- funcţie
- funcționalități
- funcționare
- General
- obține
- obtinerea
- dat
- Go
- merge
- se întâmplă
- Greu
- hașiș
- hashing
- Avea
- Cum
- HTTPS
- Impactul
- Impacturi
- implementarea
- Punere în aplicare a
- important
- in
- include
- include
- Inclusiv
- includere
- Individual
- informativ
- integrările
- intenţionează
- intentionat
- în
- Introducere
- problema
- probleme de
- IT
- doar
- chei
- cunoscut
- mare
- Nume
- Ultimele
- conduce
- AFLAȚI
- ca
- limitare
- limitări
- Limitat
- Uite
- făcut
- retea principala
- face
- FACE
- multe
- Martie
- max-width
- Mai..
- mijloace
- Memorie
- metodă
- Metode
- ar putea
- baterea
- manipularea greșită
- ratări
- greşeli
- modificată
- Monitorizarea
- mai mult
- cele mai multe
- multiplu
- nativ
- Jeton nativ
- reţea
- Nou
- NFT
- acum
- of
- on
- ONE
- on-line
- cumparaturi online
- OP
- operaţie
- operațional
- Operațiuni
- or
- comandă
- Organizaţii
- Altele
- Alte protocoale
- al nostru
- peste
- global
- propriu
- Ambalaj
- parametru
- în special
- piese
- Trecut
- fenomen
- Plato
- Informații despre date Platon
- PlatoData
- posibil
- potenţial
- Pregăti
- privat
- Cheile private
- Produs
- proiect
- proprietăţi
- proteja
- protocol
- protocoale
- furniza
- prevăzut
- furnizori
- scopuri
- repede
- Quillhash
- ridică
- motiv
- primire
- cu privire la
- regiuni
- regulat
- eliberat
- încredere
- reprezenta
- reprezentare
- reprezentate
- cercetare
- cercetare și dezvoltare
- rezultat
- reveni
- Ridica
- Risc
- norme
- acelaşi
- schemă
- Secțiune
- sigur
- securizat
- securitate
- Amenințări la adresa securității
- vedea
- segmente
- serviciu
- prestatori de servicii
- Servicii
- instalare
- câteva
- Cumpărături
- semna
- Semnături
- semnare
- simultan
- singur
- inteligent
- contract inteligent
- Contracte inteligente
- So
- SOL
- soluţie
- unele
- ceva
- Spaţiu
- sponsorizare
- Etapă
- standard
- standarde
- Începe
- şedere
- Încă
- supunere
- de succes
- astfel de
- Sprijină
- cu siguranţă
- ia
- decât
- acea
- lor
- Lor
- Acolo.
- Acestea
- ei
- lucruri
- acest
- aceste
- amenințări
- timp
- la
- semn
- indicativele
- de asemenea
- top
- tranzacționează
- tranzacțional
- Tranzacții
- adevărat
- Tipuri
- înţelegere
- nedorit
- Actualizează
- actualizări
- upgrade-uri
- utilizare
- utilizat
- Utilizator
- Experiența de utilizare
- utilizatorii
- VALIDA
- valoare
- foarte
- Vizualizare
- Vizita
- Vulnerabilitățile
- vulnerabilitate
- vulnerabil
- Portofel
- Portofele
- a fost
- we
- Web3
- website
- BINE
- bine cunoscut
- au fost
- Ce
- cand
- care
- în timp ce
- de ce
- voi
- cu
- martor
- lume
- Greșit
- ani
- Tu
- Ta
- zephyrnet