Lästid: 5 minuter
Web3s värld är en värld av protokoll och standarder. Du måste säkert ha stött på flera ERC-standarder. Några av de mest kända ERC-standarderna är 20 och 721, som är för tokens respektive NFT. Men Web3 är inte begränsad till det.
Vi ser regelbundna uppdateringar och uppgraderingar i Web3. En av de senaste uppgraderingarna var ERC 4337, som distribuerades på Ethereum Mainnet i mars 2023. Inte alla uppdateringar lyckas på en gång; samma sak är sant med ERC 4337. I den här bloggen kommer vi att lära oss om sårbarheter gällande avsnittet User Operation i standarden och deras inverkan. Låt oss först börja med en kort introduktion till ERC 4337-standarden.
Vad är ERC 4337?
Till skillnad från Bitcoins nätverk, Ethereum stödjer smarta kontrakt i kedjan, vilket gör att Ethereum har två olika typer av konton, ett transaktionskonto eller ett operativt konto. Utöver det har smarta kontrakt ett eget utrymme, nästan som ett konto. Dessa två typer av konton i Ethereum har sina egna funktioner.
De flesta plånböcker som fungerar med Ethereum är EOA:s vilket betyder användarens konton, inte de smarta kontrakten. Den här typen av konton har sina egna begränsningar. En begränsning inkluderar användarens enda beroende av de privata nycklarna för att komma åt konton och att kräva alla signaturer för transaktioner. Dessa begränsningar föranledde införandet av ERC 4337.
ERC 4337 försöker tillhandahålla kontoabstraktion genom att kombinera det bästa av de två kontotypsfunktionerna. Ja, EOA:s och smarta kontraktskonton. Detta möjliggörs av ett enda kontrakt som kan handla tokens och skapa kontrakt samtidigt, och ERC 4337 är en standard som underlättar detta fantastiska nya framsteg.
UserOperation packning sårbarhet?
Allt med den här standarden och projektet är fantastiskt, men vad gick fel? Tja, det fanns ett implementeringsproblem som resulterade i inkonsekventa hashs baserat på metoden som användes för att signera. Detta ledde till orderkrockar, särskilt divergerande hashar för samma User Operations och kolliderande hashar för olika User Operations.
De drabbade regionerna var begränsade till två sårbarheter, EntryPoint Packing Vulnerability och VerifyingPaymaster Packing Vulnerability. Mer om det senare. Låt oss först ha en allmän förståelse, och sedan kommer vi att lära oss om dem individuellt.
Låt oss ta en titt på UserOperation.sol:-
Du ser parametern UserOperation, en Calldata, skickas som ett argument till packfunktionen. Låt oss utforska strukturen: -
Det här är fälten som UserOperation-strukturen bär. För att kopiera denna stora del av samtalsdata till minnet använder kodsegmenten assemblering. Vissa metoder i kontrakten avser att fånga alla fält i UserOperation, inklusive fälten med variabel storlek, även kallade dynamiska fält i ABI-kodning. Till exempel är den dynamiska kodningen i denna struktur 'initCode', 'callData' och 'paymasterAndData'.
Vissa metoder kan inte inkludera 'paymasterAndData' eftersom det fältet inte är definierat eller deklarerat ännu. Metoder använder bekvämlighetsfältet ".offset" som tillhandahålls för dynamiska datatyper för att göra det. Men de kontrakt som använder ABI-kodade argument validerar inte den ordning i vilken fälten definieras och offsetens giltighet. Det är möjligt att konstruera en giltig representation av användaroperationerna i Calldata med ovanliga hashegenskaper.
EntryPoint Packing sårbarhet
Problemet med UserOperation påverkar också några av de andra delarna av standarden, EntryPoint Packing-sårbarhet är en av dessa. När ett annat hashschema används mellan EntryPoint och plånbokskontraktet eller en icke-standardiserad användarkodning används, ser vi hashavvikelser.
Risken dyker upp som EntryPoint. Nu kan en enskild användaroperation representeras av flera "user op-hashar", och samma "user op-hash" kan representera flera användaroperationer. Nu kan detta skapa några oönskade effekter. Låt oss diskutera vilken effekt det kan ha.
Erc 4337 är fortfarande i ett mycket tidigt skede, eftersom det precis släpptes i mars, så effekten av dessa sårbarheter är inte helt känd. Det är svårt att beskriva den potentiella påverkan från fågelperspektiv. Utöver det beror effekten på att implementera buntare, indexerare, användaroperationsutforskare och andra tjänster utanför kedjan. Låt oss titta på några av de problem som denna sårbarhet orsakar.
- Detta kan orsaka en förvirrande upplevelse för användaren eftersom hash för användarens operation kan ändras mellan inlämning och inkluderingstid. Detta fenomen är okänt för de flesta plånböcker, så de kanske inte står för den skillnaden.
- Plånböckerna kan ändras och designas för att avsiktligt undvika indexering genom att ställa in alla hash för användaroperationer att vara desamma.
- Vi kan se felaktig hantering av data och nycklar om en tjänst utanför kedjan som övervakar inkluderingen av användaroperationer missar inkluderingen av en given användaroperation.
VerifyingPaymaster Packing sårbarhet
Ingen gillar att beställa något från onlineshopping och få en helt annan produkt. Samma sak är på Web3, men denna sårbarhet försämrar användarupplevelsen. En användare kan ha ändrat eller annorlunda innehåll mellan undertecknandet och införandet i kedjan. Och anledningen till att detta händer är att två olika användaroperationer returnerar samma hash från funktionen 'VerifyingPaymaster.getHash()'.
Funktionen VerifyingPaymaster.getHash() tar några argument som 'UserOperation', som är en struct, 'validUnitl', ett uint48-värde och ett validAfter ett annat uint48-värde. Frågan om det olika innehållet mellan signeringstid och inkluderingstid påverkar användarupplevelsen och den övergripande säkerheten. Låt oss diskutera några av de farhågor det väcker.
- Offchain-undertecknare som signerar i ett ABI-kodat format efter att ha mottagit användaråtgärder eller undertecknare med kontraktsintegrationer för att förbereda data för signatur blir sårbara.
- Hashen kan modifieras för att täcka färre element än förväntat, vilket kan leda till att vissa av de statiska fälten, som initCode etc., exkluderas från hashen. Detta kan resultera i en annan användning än vad som är avsett för betalmästarens sponsringssignaturer.
- Vi kan se ett brott mot och kringgå reglerna genom att ändra userOp.initCode och userOp.callData efter att ha fått en signatur. Detta kommer att tillåta betalarens inhemska token att användas för andra ändamål än att prägla gasfri NFT.
Slutsats
Med den ständigt pågående utvecklingen och utvecklingen kommer vi att bevittna många fantastiska saker, och ERC 4337 är en av dem. Samtidigt som att utveckla och främja säkerhet är något som vi aldrig kan kompromissa med. Det är häftigt att notera hur snabbt sårbarheterna hittades i standarden, och kontinuerlig forskning och utveckling genomförs för att göra den säker.
Det är viktigt att notera att även några av de största och mest välkända organisationerna som bygger i Web3 kan göra säkerhetsrelaterade misstag, och säkert gör de andra protokollen dem också. Den kontinuerliga uppgången Web3 incidenter under de senaste åren är uppenbart.
En enda lösning för att skydda dig, dina användare och ditt protokoll från sådana säkerhetshot ska granskas. Vi QuillAudits, är en av de främsta tjänsteleverantörerna inom smart kontraktsrevision och blockchain-säkerhet, besök vår webbplats för att ta reda på mer och få ditt projekt säkrat. Och håll utkik för att njuta av fler sådana informativa bloggar
34 Visningar
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- Platoblockchain. Web3 Metaverse Intelligence. Kunskap förstärkt. Tillgång här.
- Minting the Future med Adryenn Ashley. Tillgång här.
- Källa: https://blog.quillhash.com/2023/04/24/understanding-erc-4337-user-operation-packing-vulnerability/
- :är
- :inte
- 20
- 2023
- a
- Om Oss
- tillgång
- Konto
- kontoabstraktion
- konton
- tvärs
- Dessutom
- befordran
- Efter
- Alla
- också
- förändrad
- an
- och
- Annan
- ÄR
- Argumentet
- argument
- AS
- Montage
- At
- Försök
- revision
- revision
- baserat
- BE
- därför att
- blir
- Där vi får lov att vara utan att konstant prestera,
- BÄST
- mellan
- störst
- blockchain
- Blockchain-säkerhet
- Blogg
- brott
- Byggnad
- men
- by
- kallas
- KAN
- kan inte
- fånga
- Orsak
- Orsakerna
- kedja
- byta
- byte
- koda
- kombinera
- komma
- kompromiss
- oro
- förvirrande
- konstruera
- innehåll
- kontinuerlig
- kontrakt
- kontrakt
- bekvämlighet
- kunde
- täcka
- skapa
- datum
- definierade
- beror
- utplacerade
- beskriva
- utformade
- utveckla
- Utveckling
- Skillnaden
- olika
- diskutera
- Avvikelse
- do
- dynamisk
- Tidig
- tidigt skede
- effekter
- element
- njuta
- helt
- ERC-4337
- etc
- ethereum
- ETHEREUM MAINNET
- Även
- Varje
- exempel
- uteslutna
- förväntat
- erfarenhet
- utforska
- Upptäcktsresande
- ögat
- underlättande
- kända
- Funktioner
- få
- fält
- Fält
- hitta
- Förnamn
- För
- format
- hittade
- från
- fullständigt
- fungera
- funktionaliteter
- funktion
- Allmänt
- skaffa sig
- få
- ges
- Go
- kommer
- händer
- Hård
- hash
- hasch
- Har
- Hur ser din drömresa ut
- HTTPS
- Inverkan
- Konsekvenser
- genomförande
- genomföra
- med Esport
- in
- innefattar
- innefattar
- Inklusive
- integration
- Individuellt
- informativ
- integrationer
- avser
- avsiktligt
- in
- Beskrivning
- fråga
- problem
- IT
- bara
- nycklar
- känd
- Large
- Efternamn
- senaste
- leda
- LÄRA SIG
- tycka om
- begränsning
- begränsningar
- Begränsad
- se
- gjord
- huvudnätet
- göra
- GÖR
- många
- Mars
- max-bredd
- Maj..
- betyder
- Minne
- metod
- metoder
- kanske
- präglingen
- felhantering
- missar
- misstag
- modifierad
- övervakning
- mer
- mest
- multipel
- nativ
- Infödd token
- nät
- Nya
- NFT
- nu
- of
- on
- ONE
- nätet
- E-handel
- OP
- drift
- operativa
- Verksamhet
- or
- beställa
- organisationer
- Övriga
- Andra protokoll
- vår
- över
- övergripande
- egen
- Pack
- parameter
- särskilt
- reservdelar till din klassiker
- Godkänd
- Fenomenet
- plato
- Platon Data Intelligence
- PlatonData
- möjlig
- potentiell
- Förbered
- privat
- Privata nycklar
- Produkt
- projektet
- egenskaper
- skydda
- protokoll
- protokoll
- ge
- förutsatt
- leverantörer
- syfte
- snabbt
- Pilbåt
- höjer
- Anledningen
- mottagande
- om
- regioner
- regelbunden
- frigörs
- tillit
- representerar
- representation
- representerade
- forskning
- forskning och utveckling
- resultera
- avkastning
- Rise
- Risk
- regler
- Samma
- ordningen
- §
- säkra
- Säkrad
- säkerhet
- Säkerhetshot
- se
- segment
- service
- tjänsteleverantörer
- Tjänster
- inställning
- flera
- Gå och Handla
- signera
- signaturer
- signering
- samtidigt
- enda
- smarta
- smart kontrakt
- Smarta kontrakt
- So
- SOL
- lösning
- några
- något
- Utrymme
- sponsorskap
- Etapp
- standard
- standarder
- starta
- bo
- Fortfarande
- underkastelse
- framgångsrik
- sådana
- Stöder
- säkert
- tar
- än
- den där
- Smakämnen
- deras
- Dem
- Där.
- Dessa
- de
- saker
- detta
- de
- hot
- tid
- till
- token
- tokens
- alltför
- topp
- handla
- transaktion
- Transaktioner
- sann
- typer
- förståelse
- oönskade
- Uppdatering
- Uppdateringar
- uppgraderingar
- användning
- Begagnade
- Användare
- Användarupplevelse
- användare
- BEKRÄFTA
- värde
- mycket
- utsikt
- Besök
- sårbarheter
- sårbarhet
- Sårbara
- plånbok
- Plånböcker
- var
- we
- Web3
- Webbplats
- VÄL
- ALLBEKANT
- były
- Vad
- när
- som
- medan
- varför
- kommer
- med
- Vittne
- världen
- Fel
- år
- Om er
- Din
- zephyrnet