Lugemise aeg: 5 protokoll
Web3 maailm on protokollide ja standardite maailm. Kindlasti olete kohanud mitmeid ERC standardeid. Mõned kuulsamad ERC standardid on 20 ja 721, mis on vastavalt žetoonide ja NFT jaoks. Kuid Web3 ei piirdu sellega.
Näeme Web3-s regulaarseid värskendusi ja täiendusi. Üks viimaseid uuendusi oli ERC 4337, mis võeti kasutusele Ethereumi Mainnetis märtsis 2023. Mitte iga värskendus ei õnnestu korraga; sama kehtib ka ERC 4337 kohta. Sellest ajaveebist saame teada standardi kasutaja toimimise jaotisega seotud turvaaukude ja nende mõju kohta. Kõigepealt alustame ERC 4337 standardi lühikese sissejuhatusega.
Mis on ERC 4337?
Erinevalt Bitcoini võrgust, Ethereum toetab ketti nutikaid lepinguid, mistõttu Ethereumil on kaks erinevat tüüpi kontot, üks tehingu- või tegevuskonto. Lisaks on nutikatel lepingutel oma ruum, peaaegu nagu konto. Neil kahel Ethereumi kontotüübil on oma funktsioonid.
Enamik Ethereumiga toimivaid rahakotte on EOA-d, mis tähendab kasutaja kontosid, mitte nutikate lepingute kontosid. Seda tüüpi kontodel on oma piirangud. Üks piirang hõlmab seda, et kasutaja tugineb kontodele juurdepääsuks ainult privaatvõtmetele ja nõuab tehingute jaoks kõigi allkirjade olemasolu. Need piirangud ajendasid ERC 4337 kasutuselevõttu.
ERC 4337 püüab pakkuda konto abstraktsiooni, kombineerides kahest kontotüüpi funktsioonist parimad. Jah, EOA ja nutikate lepingute kontod. See on võimalik tänu ühele lepingule, millega saab üheaegselt tehinguid teha ja lepinguid luua, ning ERC 4337 on standard, mis hõlbustab seda vinget uut edasiminekut.
UserOperationi pakkimise haavatavus?
Kõik selle standardi ja projekti kohta on suurepärane, kuid mis läks valesti? Noh, ilmnes rakendusprobleem, mille tulemuseks olid allkirjastamiseks kasutatud meetodil põhinevad ebajärjekindlad räsid. See põhjustab järjestuste kokkupõrkeid, eriti lahknevaid räsisid samade kasutajaoperatsioonide jaoks ja põrkuvaid räsisid erinevate kasutajaoperatsioonide jaoks.
Mõjutatud piirkonnad piirdusid kahe haavatavusega, EntryPointi pakkimise haavatavusega ja VerifyingPaymasteri pakkimise haavatavusega. Sellest lähemalt hiljem. Saame esmalt üldise arusaama ja siis õpime neid eraldi tundma.
Heidame pilgu saidile UserOperation.sol:-
Näete, et parameeter UserOperation, Calldata, edastatakse argumendina pakifunktsioonile. Uurime struktuuri:
Need on väljad, mida UserOperation struktuur kannab. Kõneandmete suure osa mällu kopeerimiseks kasutavad koodisegmendid montaaži. Mõned lepingute meetodid hõlmavad kõiki UserOperationi välju, sealhulgas muutuva suurusega välju, mida ABI-kodeeringus nimetatakse ka dünaamilisteks väljadeks. Näiteks on selle struktuuri dünaamiline kodeering 'initCode', 'callData' ja 'paymasterAndData'.
Mõned meetodid ei saa sisaldada „paymasterAndData”, kuna see väli pole veel määratletud ega deklareeritud. Meetodid kasutavad selleks dünaamiliste andmetüüpide jaoks pakutavat mugavusvälja „.offset”. Kuid lepingud, mis kasutavad ABI-kodeeritud argumente, ei kinnita väljade määratlemise järjekorda ja tasaarvestuse kehtivust. Calldatas on võimalik luua ebatavaliste räsiomadustega kehtiv esitus kasutajatoimingutest.
EntryPointi pakkimise haavatavus
Probleem UserOperationiga mõjutab ka mõnda muud standardi osa, EntryPointi pakkimise haavatavus on üks neist. Kui EntryPointi ja rahakoti lepingu vahel kasutatakse teistsugust räsimisskeemi või kasutatakse mittestandardset kasutajatoimingute kodeeringut, näeme räsi lahknemist.
Riskipind on EntryPoint. Nüüd võib ühe kasutaja toiming olla esindatud mitme "kasutaja operatsiooni räsi" abil ja sama "kasutaja operatsiooni räsi" võib esindada mitut kasutajatoimingut. Nüüd võib see tekitada soovimatuid efekte. Arutame, millist mõju see võib avaldada.
Erc 4337 on veel väga varajases staadiumis, kuna see ilmus just märtsis, seega pole nende haavatavuste mõju täielikult teada. Võimalikku mõju on linnulennult raske kirjeldada. Lisaks sõltub mõju komplekteerijate, indekseerijate, kasutajatoimingute uurijate ja muude ahelaväliste teenuste rakendamisest. Vaatame mõningaid probleeme, mida see haavatavus põhjustab.
- See võib kasutajale segadust tekitada, kuna kasutajatoimingute räsi võib esitamise ja kaasamise aja vahel muutuda. Seda nähtust ei tea enamik rahakotte, seega ei pruugi nad seda erinevust arvesse võtta.
- Rahakotte saab muuta ja kujundada nii, et tahtlikult vältida indekseerimist, määrates kõik kasutajatoimingute räsid samaks.
- Kui ahelaväline teenus, mis jälgib kasutaja toimingute kaasamist, jätab andmete ja võtmete väärkäitlemise märkamata antud kasutajatoimingu kaasamisest.
Maksja pakkimise haavatavuse kontrollimine
Kellelegi ei meeldi veebipoest midagi tellida ja saada täiesti erinevat toodet. Sama kehtib ka Web3-s, kuid see haavatavus halvendab kasutajakogemust. Kasutaja võib allkirjastamise aja ja ahelasse kaasamise vahel sisu muuta või erineda. Ja põhjus, miks see juhtub, on see, et kaks erinevat kasutajatoimingut tagastavad funktsioonist „VerifyingPaymaster.getHash()” sama räsi.
Funktsioon VerifyingPaymaster.getHash() võtab mõned argumendid, näiteks 'UserOperation', mis on struktuur, 'validUnitl', uint48 väärtus ja validAfter veel üks uint48 väärtus. Allkirjastamisaja ja kaasamisaja vahelise erineva sisu probleem mõjutab kasutajakogemust ja üldist turvalisust. Räägime mõnest probleemist, mida see tõstatab.
- Ketivälised allkirjastajad, kes logivad sisse pärast kasutajatoimingute saamist ABI-kodeeritud vormingus, või allkirjastajad, kellel on lepingu integreerimine andmete allkirjastamiseks ettevalmistamiseks, muutuvad haavatavaks.
- Räsi saab muuta nii, et see hõlmaks oodatust vähem elemente, mis võib viia selleni, et mõned staatilised väljad, nagu initCode jne, jäetakse räsist välja. Selle tulemuseks võib olla maksja sponsorallkirjade jaoks ettenähtust erinev kasutamine.
- Reeglite rikkumist ja möödahiilimist näeme, kui muudame pärast allkirja saamist parameetreid userOp.initCode ja userOp.callData. See võimaldab maksja algmärki kasutada muuks otstarbeks kui gaasivaba NFT vermimiseks.
Järeldus
Pideva edenemise ja arenguga saame olla tunnistajaks paljudele ägedatele asjadele ja ERC 4337 on üks neist. Turvalisuse arendamine ja edendamine on midagi, mida me ei saa kunagi teha. Äge on tõdeda, kui kiiresti turvaaukud standardis leiti ning selle turvaliseks muutmiseks tehakse pidevalt uurimis- ja arendustegevust.
Oluline on märkida, et isegi mõned suurimad ja tuntuimad Web3-s ehitavad organisatsioonid võivad teha turvalisusega seotud vigu ning kindlasti teevad neid ka teised protokollid. Pidev tõus Web3 juhtumid viimastel aastatel on ilmne.
Ühekordne lahendus teie, teie kasutajate ja teie protokolli kaitsmiseks selliste turvaohtude eest läheb auditile. Meie, QuillAudits, oleme nutikate lepingute auditeerimise ja plokiahela turvalisuse üks parimaid teenusepakkujaid. Lisateabe saamiseks ja oma projekti kaitsmiseks külastage meie veebisaiti. Ja püsige lainel, et nautida rohkem selliseid informatiivseid ajaveebe
34 views
- SEO-põhise sisu ja PR-levi. Võimenduge juba täna.
- Platoblockchain. Web3 metaversiooni intelligentsus. Täiustatud teadmised. Juurdepääs siia.
- Tuleviku rahapaja Adryenn Ashley. Juurdepääs siia.
- Allikas: https://blog.quillhash.com/2023/04/24/understanding-erc-4337-user-operation-packing-vulnerability/
- :on
- :mitte
- 20
- 2023
- a
- MEIST
- juurdepääs
- konto
- konto abstraktsioon
- Kontod
- üle
- lisamine
- areng
- pärast
- Materjal: BPA ja flataatide vaba plastik
- Ka
- muuta
- an
- ja
- Teine
- OLEME
- argument
- argumendid
- AS
- Kokkupanek
- At
- Katsed
- audit
- auditeerimine
- põhineb
- BE
- sest
- muutuma
- on
- BEST
- vahel
- suurim
- blockchain
- Blockchaini turvalisus
- Blogi
- rikkumine
- Ehitus
- kuid
- by
- kutsutud
- CAN
- ei saa
- lüüa
- Põhjus
- põhjuste
- kett
- muutma
- muutuv
- kood
- kombineerimine
- Tulema
- kompromiss
- Murettekitav
- segane
- ehitama
- sisu
- pidev
- leping
- lepingud
- mugavus
- võiks
- cover
- looma
- andmed
- määratletud
- sõltub
- lähetatud
- kirjeldama
- kavandatud
- arenev
- & Tarkvaraarendus
- erinevus
- erinev
- arutama
- Lahknemine
- do
- dünaamiline
- Varajane
- varajases staadiumis
- mõju
- elemendid
- nautima
- täielikult
- ERC-4337
- jms
- ethereum
- ETHEREUM MAINNET
- Isegi
- Iga
- näide
- välja jäetud
- oodatav
- kogemus
- uurima
- Explorers
- silm
- hõlbustades
- kuulus
- FUNKTSIOONID
- vähe
- väli
- Valdkonnad
- leidma
- esimene
- eest
- formaat
- avastatud
- Alates
- täielikult
- funktsioon
- funktsionaalsused
- toimimine
- Üldine
- saama
- saamine
- antud
- Go
- läheb
- juhtub
- Raske
- hash
- räsimine
- Olema
- Kuidas
- HTTPS
- mõju
- Mõjud
- täitmine
- rakendamisel
- oluline
- in
- sisaldama
- hõlmab
- Kaasa arvatud
- kaasamine
- Üksikult
- informatiivne
- integratsioon
- kavatsevad
- tahtlikult
- sisse
- Sissejuhatus
- probleem
- küsimustes
- IT
- lihtsalt
- võtmed
- teatud
- suur
- viimane
- hiljemalt
- viima
- Õppida
- nagu
- piiramine
- piirangud
- piiratud
- Vaata
- tehtud
- mainnet
- tegema
- TEEB
- palju
- Märts
- max laiuse
- mai..
- vahendid
- Mälu
- meetod
- meetodid
- võib
- vermimine
- väärkäitlemine
- igatsen
- vigu
- modifitseeritud
- järelevalve
- rohkem
- kõige
- mitmekordne
- emakeelena
- Omakeelne märk
- võrk
- Uus
- NFT
- nüüd
- of
- on
- ONE
- Internetis
- online-shopping
- OP
- töö
- töökorras
- Operations
- or
- et
- organisatsiooniline
- Muu
- Muud protokollid
- meie
- üle
- üldine
- enda
- Pakk
- parameeter
- eriti
- osad
- Vastu võetud
- nähtus
- Platon
- Platoni andmete intelligentsus
- PlatoData
- võimalik
- potentsiaal
- Valmistama
- era-
- Privaatvõtmed
- Toode
- projekt
- omadused
- kaitsma
- protokoll
- protokollid
- anda
- tingimusel
- pakkujad
- eesmärkidel
- kiiresti
- Quillhash
- tõstab
- põhjus
- vastuvõtmine
- kohta
- piirkondades
- regulaarne
- vabastatud
- sõltuvus
- esindama
- esindamine
- esindatud
- teadustöö
- teadus-ja arendustegevus
- kaasa
- tagasipöördumine
- Tõusma
- Oht
- eeskirjade
- sama
- kava
- Osa
- kindlustama
- tagatud
- turvalisus
- Turvaohud
- vaata
- segmendid
- teenus
- teenusepakkujad
- Teenused
- kehtestamine
- mitu
- ostud
- kirjutama
- Allkirjad
- allkirjastamine
- üheaegselt
- ühekordne
- nutikas
- arukas leping
- Tarkvaralepingud
- So
- SOL
- lahendus
- mõned
- midagi
- Ruum
- sponsorlus
- Stage
- standard
- standardite
- algus
- jääma
- Veel
- esitamine
- edukas
- selline
- Toetab
- kindlasti
- võtab
- kui
- et
- .
- oma
- Neile
- Seal.
- Need
- nad
- asjad
- see
- need
- ähvardused
- aeg
- et
- sümboolne
- märgid
- liiga
- ülemine
- tehinguid tegema
- tehinguline
- Tehingud
- tõsi
- liigid
- mõistmine
- soovimatu
- Värskendused
- Uudised
- uuendamine
- kasutama
- Kasutatud
- Kasutaja
- User Experience
- Kasutajad
- KINNITAGE
- väärtus
- väga
- vaade
- visiit
- Haavatavused
- haavatavus
- Haavatav
- rahakott
- Rahakotid
- oli
- we
- Web3
- veebisait
- Hästi
- hästi tuntud
- olid
- M
- millal
- mis
- kuigi
- miks
- will
- koos
- tunnistaja
- maailm
- Vale
- aastat
- sa
- Sinu
- sephyrnet