Lesetid: 5 minutter
Web3s verden er en verden av protokoller og standarder. Du må sikkert ha kommet over flere ERC-standarder. Noen av de mest kjente ERC-standardene er 20 og 721, som er for henholdsvis tokens og NFT. Men Web3 er ikke begrenset til det.
Vi ser jevnlige oppdateringer og oppgraderinger i Web3. En av de siste oppgraderingene var ERC 4337, distribuert på Ethereum Mainnet i mars 2023. Ikke hver oppdatering er vellykket på én gang; det samme gjelder med ERC 4337. I denne bloggen vil vi lære om sårbarheter angående brukeroperasjonsdelen av standarden og deres innvirkning. La oss først starte med en kort introduksjon til ERC 4337-standarden.
Hva er ERC 4337?
I motsetning til Bitcoins nettverk, Ethereum støtter smarte kontrakter i kjeden, noe som gjør at Ethereum har to forskjellige typer kontoer, en transaksjonskonto eller en operasjonell konto. I tillegg til det har smarte kontrakter sin egen plass, nesten som en konto. Disse to typene kontoer i Ethereum har sine egne funksjoner.
De fleste lommebøker som fungerer med Ethereum er EOA-er som betyr brukerens kontoer, ikke de smarte kontraktene. Denne typen kontoer har sine egne begrensninger. En begrensning inkluderer brukerens eneste avhengighet av de private nøklene for å få tilgang til kontoer og krever alle signaturer for transaksjoner. Disse begrensningene førte til introduksjonen av ERC 4337.
ERC 4337 forsøker å gi kontoabstraksjon ved å kombinere det beste av de to kontotypefunksjonene. Ja, EOA-er og smarte kontraktskontoer. Dette er muliggjort av en enkelt kontrakt som kan transaksjoner tokens og opprette kontrakter samtidig, og ERC 4337 er en standard som tilrettelegger for denne fantastiske nye utviklingen.
UserOperation packing sårbarhet?
Alt med denne standarden og prosjektet er fantastisk, men hva gikk galt? Vel, det var et implementeringsproblem som resulterte i inkonsekvente hashes basert på metoden som ble brukt til å signere. Dette førte til ordrekollisjoner, spesielt divergerende hasher for de samme brukeroperasjonene og kolliderende hasher for ulike brukeroperasjoner.
De berørte regionene var begrenset til to sårbarheter, EntryPoint Packing Vulnerability og VerifyingPaymaster Packing Vulnerability. Mer om det senere. La oss først ha en generell forståelse, og deretter vil vi lære om dem individuelt.
La oss ta en titt på UserOperation.sol:-
Du ser UserOperation-parameteren, en Calldata, sendes som et argument til pakkefunksjonen. La oss utforske strukturen: -
Dette er feltene som UserOperation-strukturen har. For å kopiere denne store delen av samtaledataene til minnet bruker kodesegmentene assembly. Noen metoder i kontraktene har til hensikt å fange opp alle feltene i UserOperation, inkludert felt med variabel størrelse, også kalt dynamiske felt i ABI-koding. For eksempel er den dynamiske kodingen i denne strukturen 'initCode', 'callData' og 'paymasterAndData'.
Noen metoder kan ikke inkludere 'paymasterAndData' fordi det feltet ikke er definert eller deklarert ennå. Metoder bruker ".offset" bekvemmelighetsfeltet gitt til dynamiske datatyper for å gjøre det. Men kontraktene som bruker ABI-kodede argumenter validerer ikke rekkefølgen feltene er definert i og offsetens gyldighet. Det er mulig å konstruere en gyldig representasjon av brukeroperasjonene i Calldata med uvanlige hashegenskaper.
EntryPoint-pakkesårbarhet
Problemet med UserOperation påvirker også noen av de andre delene av standarden, EntryPoint Packing-sårbarhet er en av disse. Når en annen hashing-ordning brukes mellom EntryPoint- og lommebokkontrakten eller en ikke-standard brukeroperasjonskoding brukes, ser vi hash-divergens.
Risikoen dukker opp som EntryPoint. Nå kan en enkelt brukeroperasjon representeres av flere 'user op hashes', og den samme 'user op hash' kan representere flere brukeroperasjoner. Nå kan dette skape noen uønskede effekter. La oss diskutere virkningen det kan ha.
Erc 4337 er fortsatt på et veldig tidlig stadium, siden den nettopp ble utgitt i mars, så virkningen av disse sårbarhetene er ikke helt kjent. Det er vanskelig å beskrive den potensielle påvirkningen fra et fugleperspektiv. I tillegg avhenger virkningen av å implementere bundlere, indeksere, brukeroperasjonsutforskere og andre tjenester utenfor kjeden. La oss se på noen av problemene denne sårbarheten forårsaker.
- Dette kan føre til en forvirrende opplevelse for brukeren fordi hash for brukeroperasjonen kan endres mellom innsending og inkluderingstid. Dette fenomenet er ukjent for de fleste lommebøker, så de står kanskje ikke for den forskjellen.
- Lommebøkene kan endres og utformes for å unngå indeksering med vilje ved å sette alle brukeroperasjonshasjene til å være de samme.
- Vi kan se feilhåndtering av data og nøkler hvis en off-chain-tjeneste som overvåker brukeroperasjonens inkludering, går glipp av inkluderingen av en gitt brukeroperasjon.
VerifyingPaymaster Packing sårbarhet
Ingen liker å bestille noe fra netthandel og motta et helt annet produkt. Det samme er på Web3, men denne sårbarheten forringer brukeropplevelsen. En bruker kan ha endret eller forskjellig innhold mellom signeringstidspunktet og inkludering i kjeden. Og grunnen til at dette skjer er at to forskjellige brukeroperasjoner returnerer samme hash fra 'VerifyingPaymaster.getHash()'-funksjonen.
VerifyingPaymaster.getHash()-funksjonen tar noen få argumenter som 'UserOperation', som er en struct, 'validUnitl', en uint48-verdi og en validAfter en annen uint48-verdi. Spørsmålet om det forskjellige innholdet mellom signeringstid og inkluderingstid påvirker brukeropplevelsen og den generelle sikkerheten. La oss diskutere noen av bekymringene det vekker.
- Offchain-signere som signerer i et ABI-kodet format etter å ha mottatt brukeroperasjoner eller signere med kontraktsintegrasjoner for å forberede data for signatur, blir sårbare.
- Hashen kan modifiseres for å dekke færre elementer enn forventet, noe som kan føre til at noen av de statiske feltene, som initCode etc., blir ekskludert fra hashen. Dette kan resultere i en annen bruk enn tiltenkt for paymaster-sponsorsignaturene.
- Vi kan se et brudd på og omgå reglene ved å endre userOp.initCode og userOp.callData etter å ha fått en signatur. Dette vil tillate at betalingsmesterens opprinnelige token kan brukes til andre formål enn å prege gassfri NFT.
konklusjonen
Med den stadig pågående utviklingen og utviklingen vil vi være vitne til mange fantastiske ting, og ERC 4337 er en av dem. Mens utvikling og fremme av sikkerhet er noe vi aldri kan gå på akkord med. Det er fantastisk å legge merke til hvor raskt sårbarhetene ble funnet i standarden, og det utføres kontinuerlig forskning og utvikling for å gjøre den sikker.
Det er viktig å merke seg at selv noen av de største og mest kjente organisasjonene som bygger i Web3 kan gjøre sikkerhetsrelaterte feil, og sikkert også de andre protokollene. Den kontinuerlige økningen i Web3-hendelser de siste årene er tydelig.
One-stop-løsningen for å beskytte deg, brukerne dine og protokollen din mot slike sikkerhetstrusler skal til en revisjon. Vi QuillAudits, er en av de beste tjenesteleverandørene innen smart kontraktrevisjon og blokkjedesikkerhet. Besøk nettstedet vårt for å finne ut mer og få prosjektet ditt sikret. Og følg med for å nyte flere slike informative blogger
34 Visninger
- SEO-drevet innhold og PR-distribusjon. Bli forsterket i dag.
- Platoblokkkjede. Web3 Metaverse Intelligence. Kunnskap forsterket. Tilgang her.
- Minting the Future med Adryenn Ashley. Tilgang her.
- kilde: https://blog.quillhash.com/2023/04/24/understanding-erc-4337-user-operation-packing-vulnerability/
- :er
- :ikke
- 20
- 2023
- a
- Om oss
- adgang
- Logg inn
- kontoabstraksjon
- kontoer
- tvers
- tillegg
- forfremmelse
- Etter
- Alle
- også
- endret
- an
- og
- En annen
- ER
- argument
- argumenter
- AS
- Montering
- At
- forsøk
- revisjon
- revisjon
- basert
- BE
- fordi
- bli
- være
- BEST
- mellom
- Biggest
- blockchain
- Blockchain sikkerhet
- Blogg
- brudd
- Bygning
- men
- by
- som heter
- CAN
- kan ikke
- fangst
- Årsak
- årsaker
- kjede
- endring
- endring
- kode
- kombinere
- Kom
- kompromiss
- bekymringer
- forvirrende
- konstruere
- innhold
- kontinuerlig
- kontrakt
- kontrakter
- bekvemmelighet
- kunne
- dekke
- skape
- dato
- definert
- avhenger
- utplassert
- beskrive
- designet
- utvikle
- Utvikling
- forskjell
- forskjellig
- diskutere
- Divergens
- do
- dynamisk
- Tidlig
- tidlig stadie
- effekter
- elementer
- nyte
- fullstendig
- ERC-4337
- etc
- ethereum
- ETHEREUM MAINNET
- Selv
- Hver
- eksempel
- ekskludert
- forventet
- erfaring
- utforske
- Explorers
- øye
- tilrettelegging
- berømt
- Egenskaper
- Noen få
- felt
- Felt
- Finn
- Først
- Til
- format
- funnet
- fra
- fullt
- funksjon
- funksjonalitet
- funksjon
- general
- få
- få
- gitt
- Go
- skal
- skjer
- Hard
- hash
- hashing
- Ha
- Hvordan
- HTTPS
- Påvirkning
- Konsekvenser
- gjennomføring
- implementere
- viktig
- in
- inkludere
- inkluderer
- Inkludert
- inkludering
- individuelt
- informative
- integrasjoner
- hensikt
- med hensikt
- inn
- Introduksjon
- utstedelse
- saker
- IT
- bare
- nøkler
- kjent
- stor
- Siste
- siste
- føre
- LÆRE
- i likhet med
- begrensning
- begrensninger
- Begrenset
- Se
- laget
- hovednettet
- gjøre
- GJØR AT
- mange
- Mars
- max bredde
- Kan..
- midler
- Minne
- metode
- metoder
- kunne
- prege
- feilbehandling
- målet
- feil
- modifisert
- overvåking
- mer
- mest
- flere
- innfødt
- Native Token
- nettverk
- Ny
- NFT
- nå
- of
- on
- ONE
- på nett
- online shopping
- OP
- drift
- operasjonell
- Drift
- or
- rekkefølge
- organisasjoner
- Annen
- Andre protokoller
- vår
- enn
- samlet
- egen
- Pakk med deg
- parameter
- spesielt
- deler
- bestått
- fenomen
- plato
- Platon Data Intelligence
- PlatonData
- mulig
- potensiell
- Forbered
- privat
- Private nøkler
- Produkt
- prosjekt
- egenskaper
- beskytte
- protokollen
- protokoller
- gi
- forutsatt
- tilbydere
- formål
- raskt
- Quillhash
- hever
- grunnen til
- mottak
- om
- regioner
- regelmessig
- utgitt
- avhengighet
- representere
- representasjon
- representert
- forskning
- forskning og utvikling
- resultere
- retur
- Rise
- Risiko
- regler
- samme
- ordningen
- Seksjon
- sikre
- sikret
- sikkerhet
- Sikkerhetstrusler
- se
- segmenter
- tjeneste
- tjenestetilbydere
- Tjenester
- innstilling
- flere
- Shopping
- undertegne
- signaturer
- signering
- samtidig
- enkelt
- Smart
- smart kontrakt
- Smarte kontrakter
- So
- SOL
- løsning
- noen
- noe
- Rom
- sponsoravtale
- Scene
- Standard
- standarder
- Begynn
- opphold
- Still
- innsending
- vellykket
- slik
- Støtter
- sikkert
- tar
- enn
- Det
- De
- deres
- Dem
- Der.
- Disse
- de
- ting
- denne
- De
- trusler
- tid
- til
- token
- tokens
- også
- topp
- avtale
- transaksjonell
- Transaksjoner
- sant
- typer
- forståelse
- uønsket
- Oppdater
- oppdateringer
- oppgraderinger
- bruke
- brukt
- Bruker
- Brukererfaring
- Brukere
- VALIDERE
- verdi
- veldig
- Se
- Besøk
- Sikkerhetsproblemer
- sårbarhet
- Sårbar
- lommebok
- Lommebøker
- var
- we
- Web3
- Nettsted
- VI VIL
- velkjent
- var
- Hva
- når
- hvilken
- mens
- hvorfor
- vil
- med
- Vitne
- verden
- Feil
- år
- Du
- Din
- zephyrnet