Czas czytania: 5 minuty
Świat Web3 to świat protokołów i standardów. Na pewno spotkałeś się z kilkoma standardami ERC. Niektóre z najbardziej znanych standardów ERC to 20 i 721, które dotyczą odpowiednio tokenów i NFT. Ale Web3 nie ogranicza się do tego.
Widzimy regularne aktualizacje i uaktualnienia w Web3. Jedną z najnowszych aktualizacji była ERC 4337, wdrożona w sieci Ethereum Mainnet w marcu 2023 r. Nie każda aktualizacja kończy się sukcesem za jednym razem; podobnie jest z ERC 4337. W tym blogu dowiemy się o lukach w sekcji User Operation standardu i ich wpływie. Na początek zacznijmy od krótkiego wprowadzenia do standardu ERC 4337.
Co to jest ERC 4337?
W przeciwieństwie do sieci Bitcoin, Ethereum obsługuje inteligentne kontrakty w łańcuchu, co sprawia, że Ethereum ma dwa różne rodzaje kont, jedno konto transakcyjne lub konto operacyjne. Poza tym inteligentne kontrakty mają swoją własną przestrzeń, prawie jak konto. Te dwa rodzaje kont w Ethereum mają swoje własne funkcjonalności.
Większość portfeli działających z Ethereum to EOA, co oznacza konta użytkownika, a nie smart kontrakty. Tego typu konta mają swoje własne ograniczenia. Jedno ograniczenie obejmuje wyłączne poleganie użytkownika na kluczach prywatnych w celu uzyskania dostępu do kont i wymaganie wszystkich podpisów dla transakcji. Te ograniczenia skłoniły do wprowadzenia ERC 4337.
ERC 4337 próbuje zapewnić abstrakcję konta, łącząc najlepsze z dwóch funkcji typu konta. Tak, konta EOA i inteligentne kontrakty. Jest to możliwe dzięki pojedynczemu kontraktowi, który może jednocześnie dokonywać transakcji tokenami i tworzyć kontrakty, a ERC 4337 to standard ułatwiający ten niesamowity nowy postęp.
Luka w zabezpieczeniach UserOperation?
Wszystko w tym standardzie i projekcie jest niesamowite, ale co poszło nie tak? Cóż, wystąpił problem z implementacją, który spowodował niespójne skróty w oparciu o metodę używaną do podpisywania. Prowadzi to do konfliktów kolejności, szczególnie rozbieżnych skrótów dla tych samych UserOperations i kolidujących skrótów dla różnych UserOperations.
Dotknięte regiony były ograniczone do dwóch luk: luki w zabezpieczeniach EntryPoint Packing i luki w zabezpieczeniach VerifyingPaymaster Packing. Więcej na ten temat później. Najpierw miejmy ogólne zrozumienie, a potem poznamy je indywidualnie.
Rzućmy okiem na UserOperation.sol: -
Widzisz parametr UserOperation, Calldata, który jest przekazywany jako argument do funkcji pack. Zbadajmy strukturę: -
Są to pola, które zawiera struktura UserOperation. Aby skopiować tę dużą część Calldata do pamięci, segmenty kodu używają asemblera. Niektóre metody kontraktów mają na celu przechwytywanie wszystkich pól UserOperation, w tym pól o zmiennej wielkości, zwanych również polami dynamicznymi w kodowaniu ABI. Na przykład dynamiczne kodowanie w tej strukturze to „initCode”, „callData” i „paymasterAndData”.
Niektóre metody nie mogą zawierać „paymasterAndData”, ponieważ to pole nie jest jeszcze zdefiniowane ani zadeklarowane. Aby to zrobić, metody używają wygodnego pola „.offset” udostępnianego dynamicznym typom danych. Ale kontrakty, które używają argumentów zakodowanych w ABI, nie sprawdzają poprawności kolejności, w jakiej pola są zdefiniowane, ani ważności przesunięć. Możliwe jest skonstruowanie poprawnej reprezentacji operacji użytkownika w Calldata z nietypowymi właściwościami skrótu.
Luka w zabezpieczeniach EntryPoint Packing
Problem z UserOperation dotyczy również niektórych innych części standardu, a jedną z nich jest luka EntryPoint Packing. Kiedy używany jest inny schemat haszowania między EntryPoint a umową portfela lub stosowane jest niestandardowe kodowanie operacji użytkownika, widzimy rozbieżność haszowania.
Ryzyko pojawia się jako EntryPoint. Teraz pojedyncza operacja użytkownika może być reprezentowana przez wiele „haszy operacji użytkownika”, a ten sam „hasz operacji użytkownika” może reprezentować wiele operacji użytkownika. Teraz może to spowodować niepożądane efekty. Porozmawiajmy o wpływie, jaki może mieć.
Erc 4337 jest wciąż na bardzo wczesnym etapie, ponieważ został wydany dopiero w marcu, więc wpływ tych luk nie jest w pełni znany. Trudno opisać potencjalny wpływ z lotu ptaka. Poza tym wpływ zależy od wdrożenia programów pakujących, indeksatorów, eksploratorów operacji użytkownika i innych usług poza łańcuchem. Przyjrzyjmy się kilku problemom powodowanym przez tę lukę.
- Może to być mylące dla użytkownika, ponieważ skrót operacji użytkownika może zmieniać się między czasem przesłania a włączeniem. Zjawisko to jest nieznane większości portfeli, więc mogą nie uwzględniać tej różnicy.
- Portfele można zmieniać i projektować tak, aby celowo unikać indeksowania, ustawiając takie same skróty wszystkich operacji użytkownika.
- Widzimy niewłaściwe obchodzenie się z danymi i kluczami, jeśli usługa off-chain monitorująca włączenie operacji użytkownika pomija włączenie danej operacji użytkownika.
Weryfikacja luki w pakowaniu Paymaster
Nikt nie lubi zamawiać czegoś z zakupów online i otrzymywać zupełnie inny produkt. To samo dotyczy Web3, ale ta luka pogarsza wrażenia użytkownika. Użytkownik mógł zmienić lub zmienić treść między czasem podpisania a włączeniem do łańcucha. Dzieje się tak dlatego, że dwie różne operacje użytkownika zwracają ten sam skrót z funkcji „VerifyingPaymaster.getHash()”.
Funkcja VerifyingPaymaster.getHash() przyjmuje kilka argumentów, takich jak „UserOperation”, która jest strukturą, „validUnitl”, wartością uint48 i wartością validAfter innej wartości uint48. Kwestia różnych treści między czasem podpisywania a czasem włączenia ma wpływ na wrażenia użytkownika i ogólne bezpieczeństwo. Omówmy kilka obaw, jakie się z tym wiążą.
- Sygnatariusze offchain, którzy podpisują się w formacie zakodowanym w ABI po otrzymaniu operacji użytkownika lub sygnatariusze z integracją kontraktu w celu przygotowania danych do podpisu, stają się narażeni na niebezpieczeństwo.
- Hash można zmodyfikować tak, aby obejmował mniej elementów niż oczekiwano, co może prowadzić do wykluczenia niektórych pól statycznych, takich jak initCode itp. Może to skutkować innym zastosowaniem niż zamierzone dla podpisów sponsorskich płatnika.
- Widzimy naruszenie i obejście zasad poprzez zmianę userOp.initCode i userOp.callData po uzyskaniu podpisu. Umożliwi to wykorzystanie natywnego tokena płatnika do celów innych niż bicie bezgazowego NFT.
Wnioski
Dzięki ciągłemu postępowi i rozwojowi będziemy świadkami wielu niesamowitych rzeczy, a ERC 4337 jest jednym z nich. Podczas gdy rozwijanie i rozwijanie bezpieczeństwa jest czymś, czego nigdy nie możemy narazić na szwank. Wspaniale jest zauważyć, jak szybko wykryto luki w standardzie, a ciągłe badania i rozwój są prowadzone w celu zapewnienia bezpieczeństwa.
Należy zauważyć, że nawet niektóre z największych i najbardziej znanych organizacji budujących Web3 mogą popełniać błędy związane z bezpieczeństwem, iz pewnością inne protokoły również je popełniają. Ciągły wzrost w Incydenty Web3 widać wyraźnie w ostatnich latach.
Kompleksowe rozwiązanie chroniące Ciebie, Twoich użytkowników i protokół przed takimi zagrożeniami przechodzi audyt. My, QuillAudits, jesteśmy jednym z czołowych dostawców usług w zakresie inteligentnego audytu kontraktów i bezpieczeństwa blockchain. Odwiedź naszą stronę internetową, aby dowiedzieć się więcej i zabezpieczyć swój projekt. I bądź na bieżąco, aby cieszyć się więcej takich blogów informacyjnych
34 odwiedzajacy
- Dystrybucja treści i PR oparta na SEO. Uzyskaj wzmocnienie już dziś.
- Platoblockchain. Web3 Inteligencja Metaverse. Wzmocniona wiedza. Dostęp tutaj.
- Wybijanie przyszłości w Adryenn Ashley. Dostęp tutaj.
- Źródło: https://blog.quillhash.com/2023/04/24/understanding-erc-4337-user-operation-packing-vulnerability/
- :Jest
- :nie
- 20
- 2023
- a
- O nas
- dostęp
- Konto
- abstrakcja konta
- Konta
- w poprzek
- dodatek
- postęp
- Po
- Wszystkie kategorie
- również
- zmieniony
- an
- i
- Inne
- SĄ
- argument
- argumenty
- AS
- Montaż
- At
- Próby
- Audyt
- audytu
- na podstawie
- BE
- bo
- stają się
- jest
- BEST
- pomiędzy
- Najwyższa
- blockchain
- Bezpieczeństwo Blockchain
- Blog
- naruszenie
- Budowanie
- ale
- by
- nazywa
- CAN
- nie może
- zdobyć
- Spowodować
- Przyczyny
- łańcuch
- zmiana
- wymiana pieniędzy
- kod
- łączenie
- jak
- kompromis
- Obawy
- mylące
- skonstruować
- treść
- ciągły
- umowa
- umowy
- wygoda
- mógłby
- pokrywa
- Stwórz
- dane
- zdefiniowane
- zależy
- wdrażane
- opisać
- zaprojektowany
- rozwijanie
- oprogramowania
- różnica
- różne
- dyskutować
- Rozbieżność
- do
- dynamiczny
- Wcześnie
- wczesna faza
- ruchomości
- Elementy
- cieszyć się
- całkowicie
- ERC-4337
- itp
- ethereum
- SIEĆ GŁÓWNA ETHEREUM
- Parzyste
- Każdy
- przykład
- wyłączony
- spodziewany
- doświadczenie
- odkryj
- Odkrywcy
- oko
- ułatwienie
- sławny
- Korzyści
- kilka
- pole
- Łąka
- Znajdź
- i terminów, a
- W razie zamówieenia projektu
- format
- znaleziono
- od
- w pełni
- funkcjonować
- funkcjonalności
- funkcjonowanie
- Ogólne
- otrzymać
- miejsce
- dany
- Go
- będzie
- dzieje
- Ciężko
- haszysz
- mieszanie
- Have
- W jaki sposób
- HTTPS
- Rezultat
- Oddziaływania
- realizacja
- wykonawczych
- ważny
- in
- zawierać
- obejmuje
- Włącznie z
- włączenie
- Indywidualnie
- informacyjny
- integracje
- Zamierzam
- celowo
- najnowszych
- Wprowadzenie
- problem
- problemy
- IT
- właśnie
- Klawisze
- znany
- duży
- Nazwisko
- firmy
- prowadzić
- UCZYĆ SIĘ
- lubić
- ograniczenie
- Ograniczenia
- Ograniczony
- Popatrz
- zrobiony
- mainnet
- robić
- WYKONUJE
- wiele
- March
- Maksymalna szerokość
- Może..
- znaczy
- Pamięć
- metoda
- metody
- może
- bicie
- niewłaściwe obchodzenie się
- tęskni
- błędy
- zmodyfikowano
- monitorowanie
- jeszcze
- większość
- wielokrotność
- rodzimy
- Natywny token
- sieć
- Nowości
- NFT
- już dziś
- of
- on
- ONE
- Online
- zakupy online
- OP
- działanie
- operacyjny
- operacje
- or
- zamówienie
- organizacyjne
- Inne
- Inne protokoły
- ludzkiej,
- koniec
- ogólny
- własny
- Pakować
- parametr
- szczególnie
- strony
- minęło
- zjawisko
- plato
- Analiza danych Platona
- PlatoDane
- możliwy
- potencjał
- Przygotować
- prywatny
- Klucze prywatne
- Produkt
- projekt
- niska zabudowa
- chronić
- protokół
- protokoły
- zapewniać
- pod warunkiem,
- dostawców
- cele
- szybko
- Quillhash
- podnosi
- powód
- odbieranie
- w sprawie
- regiony
- regularny
- wydany
- poleganie
- reprezentować
- reprezentacja
- reprezentowane
- Badania naukowe
- badania i rozwój
- dalsze
- powrót
- Rosnąć
- Ryzyko
- reguły
- taki sam
- schemat
- Sekcja
- bezpieczne
- zabezpieczone
- bezpieczeństwo
- Zagrożenia bezpieczeństwa
- widzieć
- Segmenty
- usługa
- usługodawcy
- Usługi
- ustawienie
- kilka
- Zakupy
- znak
- Podpisy
- podpisywanie
- jednocześnie
- pojedynczy
- mądry
- inteligentna umowa
- Inteligentne kontrakty
- So
- SOL
- rozwiązanie
- kilka
- coś
- Typ przestrzeni
- sponsorowanie
- STAGE
- standard
- standardy
- początek
- pobyt
- Nadal
- uległość
- udany
- taki
- podpory
- na pewno
- trwa
- niż
- że
- Połączenia
- ich
- Im
- Tam.
- Te
- one
- rzeczy
- to
- tych
- zagrożenia
- czas
- do
- żeton
- Żetony
- także
- Top
- przeprowadzać transakcję
- transakcyjny
- transakcje
- prawdziwy
- typy
- zrozumienie
- niepożądany
- Aktualizacja
- Nowości
- Uaktualnienia
- posługiwać się
- używany
- Użytkownik
- Doświadczenie użytkownika
- Użytkownicy
- UPRAWOMOCNIĆ
- wartość
- początku.
- Zobacz i wysłuchaj
- Odwiedzić
- Luki w zabezpieczeniach
- wrażliwość
- Wrażliwy
- Portfel
- Portfele
- była
- we
- Web3
- Strona internetowa
- DOBRZE
- znane
- były
- Co
- jeśli chodzi o komunikację i motywację
- który
- Podczas
- dlaczego
- będzie
- w
- świadek
- świat
- Źle
- lat
- You
- Twój
- zefirnet