Læsetid: 5 minutter
Web3s verden er en verden af protokoller og standarder. Du skal helt sikkert have stødt på flere ERC-standarder. Nogle af de mest berømte ERC-standarder er 20 og 721, som er for henholdsvis tokens og NFT. Men Web3 er ikke begrænset til det.
Vi ser løbende opdateringer og opgraderinger i Web3. En af de seneste opgraderinger var ERC 4337, implementeret på Ethereum Mainnet i marts 2023. Ikke alle opdateringer lykkes på én gang; det samme er tilfældet med ERC 4337. I denne blog vil vi lære om sårbarheder vedrørende brugeroperationsafsnittet i standarden og deres indvirkning. Lad os først starte med en kort introduktion til ERC 4337-standarden.
Hvad er ERC 4337?
I modsætning til Bitcoins netværk, Ethereum understøtter smarte kontrakter på kæden, hvilket gør, at Ethereum har to forskellige typer konti, en transaktionskonto eller en operationel konto. Ud over det har smarte kontrakter deres eget rum, næsten som en konto. Disse to typer konti i Ethereum har deres egne funktioner.
De fleste tegnebøger, der fungerer med Ethereum, er EOA'er, hvilket betyder brugerens konti, ikke de smarte kontrakter. Disse typer konti har deres egne begrænsninger. En begrænsning omfatter brugerens eneste afhængighed af de private nøgler for at få adgang til konti og kræve alle signaturer for transaktioner. Disse begrænsninger førte til introduktionen af ERC 4337.
ERC 4337 forsøger at give kontoabstraktion ved at kombinere det bedste af de to konto-type funktioner. Ja, EOA'er og smarte kontraktkonti. Dette er gjort muligt af en enkelt kontrakt, der kan handle tokens og oprette kontrakter samtidigt, og ERC 4337 er en standard, der letter denne fantastiske nye fremgang.
UserOperation packing sårbarhed?
Alt ved denne standard og dette projekt er fantastisk, men hvad gik galt? Nå, der var et implementeringsproblem, som resulterede i inkonsistente hashes baseret på den metode, der blev brugt til at signere. Dette førte til ordresammenstød, især divergerende hashes for de samme UserOperations og kolliderende hashes for forskellige UserOperations.
De berørte områder var begrænset til to sårbarheder, EntryPoint Packing Vulnerability og VerifyingPaymaster Packing Vulnerability. Mere om det senere. Lad os først få en generel forståelse, og derefter vil vi lære om dem individuelt.
Lad os tage et kig på UserOperation.sol:-
Du ser parameteren UserOperation, en Calldata, blive videregivet som et argument til pakkefunktionen. Lad os udforske strukturen: -
Dette er de felter, som UserOperation-strukturen bærer. For at kopiere denne store del af opkaldsdataene ind i hukommelsen bruger kodesegmenterne assembly. Nogle metoder i kontrakterne har til hensigt at fange alle felter i UserOperation, inklusive felter med variabel størrelse, også kaldet dynamiske felter i ABI-kodning. For eksempel er den dynamiske kodning i denne struktur 'initCode', 'callData' og 'paymasterAndData'.
Nogle metoder kan ikke inkludere 'paymasterAndData', fordi dette felt ikke er defineret eller erklæret endnu. Metoder bruger bekvemmelighedsfeltet '.offset' til dynamiske datatyper til at gøre det. Men de kontrakter, der bruger ABI-kodede argumenter, validerer ikke den rækkefølge, som felterne er defineret i, og offsets gyldighed. Det er muligt at konstruere en gyldig repræsentation af brugeroperationerne i Calldata med usædvanlige hash-egenskaber.
EntryPoint Packing sårbarhed
Problemet med UserOperation påvirker også nogle af de andre dele af standarden, EntryPoint Packing-sårbarhed er en af dem. Når der bruges et andet hashskema mellem EntryPoint og tegnebogskontrakten, eller der bruges en ikke-standard brugerhandlingskodning, ser vi hash-divergens.
Risikoen dukker op som EntryPoint. Nu kunne en enkelt brugeroperation repræsenteres af flere 'user op hashes', og den samme 'user op hash' kunne repræsentere flere brugeroperationer. Nu kan dette skabe nogle uønskede effekter. Lad os diskutere, hvilken effekt det kan have.
Erc 4337 er stadig på et meget tidligt stadie, da den netop blev udgivet i marts, så virkningen af disse sårbarheder er ikke helt kendt. Det er svært at beskrive den potentielle påvirkning fra et fugleperspektiv. Derudover afhænger virkningen af implementering af bundtere, indeksere, brugeroperationsudforskere og andre off-chain-tjenester. Lad os se på et par af de problemer, som denne sårbarhed forårsager.
- Dette kan forårsage en forvirrende oplevelse for brugeren, fordi brugerhandlingens hash kan skifte mellem indsendelse og inklusionstid. Dette fænomen er ukendt for de fleste tegnebøger, så de står måske ikke for denne forskel.
- Tegnebøgerne kan ændres og designes, så de bevidst undgår indeksering ved at indstille alle hashes til brugerbetjeningen til at være ens.
- Vi kan se forkert håndtering af data og nøgler, hvis en off-chain-tjeneste, der overvåger brugeroperationens inklusion, går glip af inklusion af en given brugeroperation.
VerifyingPaymaster Packing sårbarhed
Ingen kan lide at bestille noget fra online shopping og modtage et helt andet produkt. Det samme er på Web3, men denne sårbarhed forringer brugeroplevelsen. En bruger kan have ændret eller anderledes indhold mellem underskriftstidspunktet og optagelse i kæden. Og grunden til, at dette sker, er, at to forskellige brugeroperationer returnerer den samme hash fra funktionen 'VerifyingPaymaster.getHash()'.
Funktionen VerifyingPaymaster.getHash() tager nogle få argumenter som 'UserOperation', som er en struct, 'validUnitl', en uint48-værdi og en validAfter en anden uint48-værdi. Spørgsmålet om det forskellige indhold mellem signeringstid og inklusionstid påvirker brugeroplevelsen og den generelle sikkerhed. Lad os diskutere et par af de bekymringer, det rejser.
- Offchain-underskrivere, der signerer i et ABI-kodet format efter at have modtaget brugerhandlinger eller underskrivere med kontraktintegrationer for at forberede data til signatur, bliver sårbare.
- Hashen kan modificeres til at dække færre elementer end forventet, hvilket kan føre til, at nogle af de statiske felter, såsom initCode osv., udelukkes fra hashen. Dette kan resultere i en anden brug end beregnet til paymaster-sponsoratsignaturerne.
- Vi kan se et brud og omgåelse af reglerne ved at ændre userOp.initCode og userOp.callData efter at have fået en signatur. Dette vil tillade, at betalingsmesterens oprindelige token kan bruges til andre formål end prægning af gasfri NFT.
Konklusion
Med den konstante fremgang og udvikling vil vi være vidne til mange fantastiske ting, og ERC 4337 er en af dem. Mens udvikling og fremme af sikkerhed er noget, vi aldrig kan gå på kompromis med. Det er fantastisk at bemærke, hvor hurtigt sårbarhederne blev fundet i standarden, og der udføres løbende forskning og udvikling for at gøre den sikker.
Det er vigtigt at bemærke, at selv nogle af de største og mest kendte organisationer, der bygger i Web3, kan lave sikkerhedsrelaterede fejl, og de andre protokoller laver dem sikkert også. Den kontinuerlige stigning i Web3 hændelser i de sidste par år er tydeligt.
One-stop-løsningen til at beskytte dig, dine brugere og din protokol mod sådanne sikkerhedstrusler skal til en revision. Vi QuillAudits, er en af de bedste tjenesteudbydere inden for smart kontraktrevision og blockchain-sikkerhed. Besøg vores hjemmeside for at finde ud af mere og få dit projekt sikret. Og følg med for at nyde flere sådanne informative blogs
34 Views
- SEO Powered Content & PR Distribution. Bliv forstærket i dag.
- Platoblokkæde. Web3 Metaverse Intelligence. Viden forstærket. Adgang her.
- Udmøntning af fremtiden med Adryenn Ashley. Adgang her.
- Kilde: https://blog.quillhash.com/2023/04/24/understanding-erc-4337-user-operation-packing-vulnerability/
- :er
- :ikke
- 20
- 2023
- a
- Om
- adgang
- Konto
- kontoabstraktion
- Konti
- tværs
- Desuden
- fremgang
- Efter
- Alle
- også
- ændret
- an
- ,
- En anden
- ER
- argument
- argumenter
- AS
- Assembly
- At
- Forsøg på
- revision
- revision
- baseret
- BE
- fordi
- bliver
- være
- BEDSTE
- mellem
- Største
- blockchain
- Blockchain sikkerhed
- Blog
- brud
- Bygning
- men
- by
- kaldet
- CAN
- kan ikke
- fange
- Årsag
- årsager
- kæde
- lave om
- skiftende
- kode
- kombinerer
- Kom
- kompromis
- Bekymringer
- forvirrende
- konstruere
- indhold
- kontinuerlig
- kontrakt
- kontrakter
- bekvemmelighed
- kunne
- dæksel
- skabe
- data
- definerede
- afhænger
- indsat
- beskrive
- konstrueret
- udvikling
- Udvikling
- forskel
- forskellige
- diskutere
- Divergens
- do
- dynamisk
- Tidligt
- tidlig stadie
- effekter
- elementer
- nyde
- helt
- ERC-4337
- etc.
- ethereum
- ETHEREUM MAINNET
- Endog
- Hver
- eksempel
- udelukket
- forventet
- erfaring
- udforske
- Explorers
- øje
- faciliterende
- berømt
- Funktionalitet
- få
- felt
- Fields
- Finde
- Fornavn
- Til
- format
- fundet
- fra
- fuldt ud
- funktion
- funktionaliteter
- fungerer
- Generelt
- få
- få
- given
- Go
- gå
- sker
- Hård Ost
- hash
- hashing
- Have
- Hvordan
- HTTPS
- KIMOs Succeshistorier
- Påvirkninger
- implementering
- gennemføre
- vigtigt
- in
- omfatter
- omfatter
- Herunder
- inklusion
- Individuelt
- informative
- integrationer
- hensigt
- med vilje
- ind
- Introduktion
- spørgsmål
- spørgsmål
- IT
- lige
- nøgler
- kendt
- stor
- Efternavn
- seneste
- føre
- LÆR
- ligesom
- begrænsning
- begrænsninger
- Limited
- Se
- lavet
- mainnet
- lave
- maerker
- mange
- Marts
- max-bredde
- Kan..
- midler
- Hukommelse
- metode
- metoder
- måske
- prægning
- forkert håndtering
- misses
- fejl
- modificeret
- overvågning
- mere
- mest
- flere
- indfødte
- Indfødt token
- netværk
- Ny
- NFT
- nu
- of
- on
- ONE
- online
- online shopping
- OP
- drift
- operationelle
- Produktion
- or
- ordrer
- organisatorisk
- Andet
- Andre protokoller
- vores
- i løbet af
- samlet
- egen
- Pack
- parameter
- især
- dele
- Bestået
- fænomen
- plato
- Platon Data Intelligence
- PlatoData
- mulig
- potentiale
- Forbered
- private
- Private nøgler
- Produkt
- projekt
- egenskaber
- beskytte
- protokol
- protokoller
- give
- forudsat
- udbydere
- formål
- hurtigt
- Quillhash
- rejser
- grund
- modtagende
- om
- regioner
- fast
- frigivet
- afhængighed
- repræsentere
- repræsentation
- repræsenteret
- forskning
- forskning og udvikling
- resultere
- afkast
- Rise
- Risiko
- regler
- samme
- Ordningen
- Sektion
- sikker
- Sikret
- sikkerhed
- Sikkerhedsrisici
- se
- segmenter
- tjeneste
- service-udøvere
- Tjenester
- indstilling
- flere
- Shopping
- underskrive
- Underskrifter
- signering
- samtidigt
- enkelt
- Smart
- smart kontrakt
- Smarte kontrakter
- So
- SOL
- løsninger
- nogle
- noget
- Space
- sponsorering
- Stage
- standard
- standarder
- starte
- forblive
- Stadig
- indsendelse
- vellykket
- sådan
- Understøtter
- sikkert
- tager
- end
- at
- deres
- Them
- Der.
- Disse
- de
- ting
- denne
- dem
- trusler
- tid
- til
- token
- Tokens
- også
- top
- handle
- transaktionsbeslutning
- Transaktioner
- sand
- typer
- forståelse
- uønsket
- Opdatering
- opdateringer
- opgraderinger
- brug
- anvendte
- Bruger
- Brugererfaring
- brugere
- VALIDATE
- værdi
- meget
- Specifikation
- Besøg
- Sårbarheder
- sårbarhed
- Sårbar
- tegnebog
- Punge
- var
- we
- Web3
- Hjemmeside
- GODT
- Kendt
- var
- Hvad
- hvornår
- som
- mens
- hvorfor
- vilje
- med
- vidne
- world
- Forkert
- år
- Du
- Din
- zephyrnet