Leestijd: 5 minuten
De wereld van Web3 is een wereld van protocollen en standaarden. U bent vast al verschillende ERC-normen tegengekomen. Enkele van de meest bekende ERC-standaarden zijn 20 en 721, die respectievelijk voor tokens en NFT zijn. Maar Web3 is daar niet toe beperkt.
We zien regelmatig updates en upgrades in Web3. Een van de laatste upgrades was ERC 4337, geรฏmplementeerd op Ethereum Mainnet in maart 2023. Niet elke update is in รฉรฉn keer succesvol; hetzelfde geldt voor ERC 4337. In deze blog leren we over kwetsbaarheden met betrekking tot het gedeelte Gebruikersbediening van de standaard en hun impact. Laten we eerst beginnen met een korte introductie van de ERC 4337-standaard.
Wat is ERC 4337?
In tegenstelling tot het netwerk van Bitcoin, Ethereum ondersteunt slimme contracten in de keten, waardoor Ethereum twee verschillende soorten accounts heeft, een transactieaccount of een operationeel account. Daarnaast hebben slimme contracten hun eigen ruimte, bijna als een account. Deze twee soorten accounts in Ethereum hebben hun eigen functionaliteiten.
De meeste portefeuilles die met Ethereum werken, zijn EOA's, wat de gebruikersaccounts betekent, niet de slimme contractaccounts. Dit type accounts heeft zijn eigen beperkingen. Een beperking omvat de enige afhankelijkheid van de gebruiker van de privรฉsleutels om toegang te krijgen tot accounts en het vereisen van alle handtekeningen voor transacties. Deze beperkingen leidden tot de introductie van ERC 4337.
De ERC 4337 probeert accountabstractie te bieden door het beste van de twee accounttypefuncties te combineren. Ja, EOA's en smart contract accounts. Dit wordt mogelijk gemaakt door een enkel contract dat tokens kan verhandelen en tegelijkertijd contracten kan creรซren, en ERC 4337 is een standaard die deze geweldige nieuwe vooruitgang mogelijk maakt.
UserOperation inpakken kwetsbaarheid?
Alles aan deze standaard en dit project is geweldig, maar wat ging er mis? Welnu, er was een implementatieprobleem dat resulteerde in inconsistente hashes op basis van de methode die werd gebruikt om te ondertekenen. Dit leidde tot orderconflicten, met name uiteenlopende hashes voor dezelfde UserOperations en botsende hashes voor verschillende UserOperations.
De getroffen regio's waren beperkt tot twee kwetsbaarheden, de EntryPoint Packing Vulnerability en de VerifyingPaymaster Packing Vulnerability. Daarover later meer. Laten we eerst een algemeen begrip hebben, en dan zullen we er individueel over leren.
Laten we eens kijken naar de UserOperation.sol:-
U ziet dat de UserOperation-parameter, een Calldata, wordt doorgegeven als een argument aan de pack-functie. Laten we de structuur verkennen: -
Dit zijn de velden die de UserOperation-structuur bevat. Om dit grote deel van de Calldata naar het geheugen te kopiรซren, gebruiken de codesegmenten assembly. Sommige methoden van de contracten zijn bedoeld om alle velden van de UserOperation vast te leggen, inclusief de velden met variabele grootte, ook wel dynamische velden genoemd in ABI-codering. De dynamische codering in deze structuur is bijvoorbeeld 'initCode', 'callData' en 'paymasterAndData'.
Sommige methoden kunnen 'paymasterAndData' niet bevatten omdat dat veld nog niet is gedefinieerd of gedeclareerd. Methoden gebruiken daarvoor het gemaksveld '.offset' dat aan dynamische gegevenstypen wordt verstrekt. Maar de contracten die ABI-gecodeerde argumenten gebruiken, valideren de volgorde waarin de velden zijn gedefinieerd en de geldigheid van de offsets niet. Het is mogelijk om met ongebruikelijke hash-eigenschappen een geldige representatie van de gebruikershandelingen in Calldata te construeren.
EntryPoint Packing-kwetsbaarheid
Het probleem met de UserOperation is ook van invloed op enkele van de andere delen van de standaard, waaronder de EntryPoint Packing-kwetsbaarheid. Wanneer een ander hash-schema wordt gebruikt tussen het EntryPoint- en portemonnee-contract of wanneer een niet-standaard codering van de gebruikersbewerking wordt gebruikt, zien we hash-divergentie.
Het risico komt naar boven als EntryPoint. Nu zou een enkele gebruikersbewerking kunnen worden weergegeven door meerdere 'user op hashes', en dezelfde 'user op hash' zou meerdere gebruikersbewerkingen kunnen vertegenwoordigen. Dit kan enkele ongewenste effecten veroorzaken. Laten we het hebben over de impact die het kan hebben.
De Erc 4337 bevindt zich nog in een zeer vroeg stadium, aangezien deze pas in maart is uitgebracht, dus de impact van deze kwetsbaarheden is niet volledig bekend. Het is moeilijk om de potentiรซle impact vanuit vogelperspectief te beschrijven. Bovendien hangt de impact af van het implementeren van bundelers, indexeerders, gebruikersverkenners en andere off-chain services. Laten we eens kijken naar enkele van de problemen die deze kwetsbaarheid veroorzaakt.
- Dit kan een verwarrende ervaring voor de gebruiker veroorzaken, omdat de hash van de gebruikersbewerking kan veranderen tussen de indiening en opnametijd. Dit fenomeen is bij de meeste portemonnees onbekend, dus ze verklaren dat verschil misschien niet.
- De portefeuilles kunnen worden gewijzigd en ontworpen om opzettelijk indexering te voorkomen door alle hashes voor gebruikersbewerkingen zo in te stellen dat ze hetzelfde zijn.
- We kunnen verkeerd gebruik van gegevens en sleutels zien als een off-chain service die de opname van de gebruikersbewerking bewaakt, de opname van een bepaalde gebruikersbewerking mist.
Beveiligingslek met betrekking tot Paymaster-verpakking verifiรซren
Niemand vindt het leuk om iets te bestellen bij online winkelen en een heel ander product te ontvangen. Hetzelfde geldt voor Web3, maar deze kwetsbaarheid verslechtert de gebruikerservaring. Een gebruiker kan gewijzigde of andere inhoud hebben tussen het moment van ondertekening en opname in de keten. En de reden waarom dit gebeurt, is dat twee verschillende gebruikersbewerkingen dezelfde hash retourneren van de functie 'VerifyingPaymaster.getHash()'.
De functie VerifyingPaymaster.getHash() neemt een aantal argumenten zoals 'UserOperation', wat een struct is, 'validUnitl', een uint48-waarde en een validAfter nog een uint48-waarde. Het probleem van de verschillende inhoud tussen ondertekeningstijd en opnametijd heeft invloed op de gebruikerservaring en algehele beveiliging. Laten we een paar van de zorgen bespreken die het oproept.
- Offchain-ondertekenaars die ondertekenen in een ABI-gecodeerde indeling nadat ze gebruikersbewerkingen hebben ontvangen of ondertekenaars met contractintegraties om gegevens voor te bereiden op ondertekening, worden kwetsbaar.
- De hash kan worden aangepast om minder elementen te dekken dan verwacht, wat ertoe kan leiden dat sommige statische velden, zoals initCode enz., worden uitgesloten van de hash. Dit kan resulteren in een ander gebruik dan bedoeld voor de sponsorhandtekeningen van de paymaster.
- We kunnen een overtreding en omzeiling van de regels zien door de userOp.initCode en userOp.callData te wijzigen na het verkrijgen van een handtekening. Hierdoor kan het oorspronkelijke token van de betaalmeester worden gebruikt voor andere doeleinden dan het slaan van gasloze NFT.
Conclusie
Met de voortdurende vooruitgang en ontwikkeling zullen we getuige zijn van veel geweldige dingen, en ERC 4337 is daar een van. Hoewel het ontwikkelen en bevorderen van beveiliging iets is dat we nooit kunnen compromitteren. Het is geweldig om te zien hoe snel de kwetsbaarheden in de standaard werden gevonden en hoe continu onderzoek en ontwikkeling wordt uitgevoerd om deze veilig te maken.
Het is belangrijk op te merken dat zelfs enkele van de grootste en meest bekende organisaties die in Web3 bouwen, beveiligingsgerelateerde fouten kunnen maken, en zeker ook de andere protocollen. De voortdurende stijging van Web3-incidenten van de laatste jaren is duidelijk.
De allesomvattende oplossing om u, uw gebruikers en uw protocol tegen dergelijke beveiligingsbedreigingen te beschermen, wordt gecontroleerd. Wij QuillAudits zijn een van de beste dienstverleners op het gebied van slimme contractcontrole en blockchain-beveiliging. Bezoek onze website voor meer informatie en om uw project te beveiligen. En blijf op de hoogte om te genieten van meer van dergelijke informatieve blogs
34 keer bekeken
- Door SEO aangedreven content en PR-distributie. Word vandaag nog versterkt.
- Platoblockchain. Web3 Metaverse Intelligentie. Kennis versterkt. Toegang hier.
- De toekomst slaan met Adryenn Ashley. Toegang hier.
- Bron: https://blog.quillhash.com/2023/04/24/understanding-erc-4337-user-operation-packing-vulnerability/
- :is
- :niet
- 20
- 2023
- a
- Over
- toegang
- Account
- accountabstractie
- accounts
- over
- toevoeging
- vordering
- Na
- Alles
- ook
- gewijzigd
- an
- en
- Nog een
- ZIJN
- argument
- argumenten
- AS
- bijeenkomst
- At
- pogingen
- controleren
- auditing
- gebaseerde
- BE
- omdat
- worden
- wezen
- BEST
- tussen
- Grootste
- blockchain
- Blockchain beveiliging
- Blog
- overtreding
- Gebouw
- maar
- by
- Dit betekent dat we onszelf en onze geliefden praktisch vergiftigen.
- CAN
- kan niet
- vangen
- Veroorzaken
- oorzaken
- keten
- verandering
- veranderende
- code
- combineren
- hoe
- compromis
- Zorgen
- verwarrend
- bouwen
- inhoud
- doorlopend
- contract
- contracten
- gemak
- kon
- deksel
- en je merk te creรซren
- gegevens
- gedefinieerd
- afhankelijk
- ingezet
- beschrijven
- ontworpen
- het ontwikkelen van
- Ontwikkeling
- verschil
- anders
- bespreken
- Afwijking
- do
- dynamisch
- Vroeg
- vroege fase
- duurt
- geeft je de mogelijkheid
- en geniet van
- geheel
- ERC-4337
- etc
- ethereum
- ETHEREUM HOOFDNET
- Zelfs
- Alle
- voorbeeld
- uitgesloten
- verwacht
- ervaring
- Verken
- Explorers
- oog
- faciliterende
- beroemd
- Voordelen
- weinig
- veld-
- Velden
- VIND DE PLEK DIE PERFECT VOOR JOU IS
- Voornaam*
- Voor
- formaat
- gevonden
- oppompen van
- geheel
- functie
- functionaliteiten
- functionerende
- Algemeen
- krijgen
- het krijgen van
- gegeven
- Go
- gaan
- gebeurt
- Hard
- hachee
- hashing
- Hebben
- Hoe
- HTTPS
- Impact
- Effecten
- uitvoering
- uitvoering
- belangrijk
- in
- omvatten
- omvat
- Inclusief
- inclusie
- individueel
- leerzaam
- integraties
- voornemens zijn
- opzettelijk
- in
- Introductie
- kwestie
- problemen
- IT
- voor slechts
- toetsen
- bekend
- Groot
- Achternaam*
- laatste
- leiden
- LEARN
- als
- beperking
- beperkingen
- Beperkt
- Kijk
- gemaakt
- mainnet
- maken
- MERKEN
- veel
- Maart
- max-width
- Mei..
- middel
- Geheugen
- methode
- methoden
- macht
- slaan
- verkeerd
- misses
- fouten
- gewijzigd
- Grensverkeer
- meer
- meest
- meervoudig
- inheemse
- Native token
- netwerk
- New
- NFT
- nu
- of
- on
- EEN
- online.
- online winkelen
- OP
- operatie
- operationele
- Operations
- or
- bestellen
- Organisaties
- Overige
- Andere protocollen
- onze
- over
- totaal
- het te bezitten.
- Pakken
- parameter
- vooral
- onderdelen
- voorbij
- een fenomeen
- Plato
- Plato gegevensintelligentie
- PlatoData
- mogelijk
- potentieel
- Voorbereiden
- privaat
- Privรฉsleutels
- Product
- project
- vastgoed
- beschermen
- protocol
- protocollen
- zorgen voor
- mits
- providers
- doeleinden
- snel
- Quillhash
- verhoogt
- reden
- ontvangende
- met betrekking tot
- regio
- regelmatig
- uitgebracht
- vertrouwen
- vertegenwoordigen
- vertegenwoordiging
- vertegenwoordigd
- onderzoek
- onderzoek en ontwikkeling
- resultaat
- terugkeer
- Stijgen
- Risico
- reglement
- dezelfde
- schema
- sectie
- beveiligen
- Beveiligde
- veiligheid
- Beveiligingsbedreigingen
- zien
- segmenten
- service
- dienstverleners
- Diensten
- het instellen van
- verscheidene
- Winkelen
- teken
- handtekeningen
- het ondertekenen van
- gelijktijdig
- single
- slim
- slim contract
- Slimme contracten
- So
- SOL
- oplossing
- sommige
- iets
- Tussenruimte
- sponsoring
- Stadium
- standaard
- normen
- begin
- blijven
- Still
- voorlegging
- geslaagd
- dergelijk
- steunen
- zeker
- neemt
- neem contact
- dat
- De
- hun
- Ze
- Er.
- Deze
- ze
- spullen
- dit
- die
- bedreigingen
- niet de tijd of
- naar
- teken
- tokens
- ook
- top
- verhandelen
- transactionele
- Transacties
- waar
- types
- begrip
- ongewenste
- bijwerken
- updates
- upgrades
- .
- gebruikt
- Gebruiker
- Gebruikerservaring
- gebruikers
- BEVESTIG
- waarde
- zeer
- Bekijk
- Bezoek
- kwetsbaarheden
- kwetsbaarheid
- Kwetsbaar
- Portemonnee
- Portemonnees
- was
- we
- Web3
- Website
- GOED
- bekend
- waren
- Wat
- wanneer
- welke
- en
- Waarom
- wil
- Met
- Getuige
- wereld
- Verkeerd
- jaar
- You
- Your
- zephyrnet