Waktu Baca: 5 menit
Dunia Web3 adalah dunia protokol dan standar. Anda pasti pernah menemukan beberapa standar ERC. Beberapa standar ERC yang paling terkenal adalah 20 dan 721, masing-masing untuk token dan NFT. Tapi Web3 tidak terbatas pada itu.
Kami melihat pembaruan dan peningkatan reguler di Web3. Salah satu pemutakhiran terbaru adalah ERC 4337, yang diterapkan di Ethereum Mainnet pada Maret 2023. Tidak setiap pembaruan berhasil sekaligus; hal yang sama berlaku dengan ERC 4337. Di blog ini, kita akan belajar tentang kerentanan terkait bagian Operasi Pengguna standar dan dampaknya. Pertama mari kita mulai dengan pengantar singkat tentang standar ERC 4337.
Apa itu ERC 4337?
Tidak seperti jaringan Bitcoin, Ethereum mendukung kontrak pintar pada rantai, yang membuat Ethereum memiliki dua jenis akun yang berbeda, satu akun transaksional atau operasional. Selain itu, kontrak pintar memiliki ruangnya sendiri, hampir seperti akun. Kedua jenis akun di Ethereum ini memiliki fungsinya masing-masing.
Sebagian besar dompet yang berfungsi dengan Ethereum adalah milik EOA yang berarti akun pengguna, bukan akun kontrak pintar. Jenis akun ini memiliki batasannya sendiri. Salah satu batasan termasuk ketergantungan pengguna pada kunci pribadi untuk mengakses akun dan membutuhkan semua tanda tangan untuk transaksi. Keterbatasan ini mendorong pengenalan ERC 4337.
ERC 4337 berupaya menyediakan abstraksi akun dengan menggabungkan yang terbaik dari dua fitur jenis akun. Ya, akun EOA dan smart contract. Ini dimungkinkan oleh satu kontrak yang dapat mentransaksikan token dan membuat kontrak secara bersamaan, dan ERC 4337 adalah standar yang memfasilitasi kemajuan baru yang luar biasa ini.
Kerentanan pengepakan UserOperation?
Segala sesuatu tentang standar dan proyek ini luar biasa, tetapi apa yang salah? Ya, ada masalah implementasi yang menghasilkan hash yang tidak konsisten berdasarkan metode yang digunakan untuk menandatangani. Hal ini menyebabkan bentrokan pesanan, khususnya hash yang berbeda untuk UserOperations yang sama dan hash yang bertabrakan untuk UserOperations yang berbeda.
Wilayah yang terpengaruh terbatas pada dua kerentanan, Kerentanan Pengemasan EntryPoint dan Kerentanan Pengemasan VerifikasiPaymaster. Lebih lanjut tentang itu nanti. Mari kita pertama-tama memiliki pemahaman umum, dan kemudian kita akan mempelajarinya satu per satu.
Mari kita lihat UserOperation.sol:-
Anda melihat parameter UserOperation, sebuah Calldata, diteruskan sebagai argumen ke fungsi paket. Mari kita jelajahi struct:-
Ini adalah bidang yang dibawa oleh struct UserOperation. Untuk menyalin sebagian besar Calldata ini ke dalam memori, segmen kode menggunakan rakitan. Beberapa metode kontrak bermaksud untuk menangkap semua bidang UserOperation, termasuk bidang ukuran variabel, juga disebut bidang dinamis dalam pengkodean ABI. Misalnya, pengkodean dinamis dalam struct ini adalah 'initCode', 'callData' dan 'paymasterAndData'.
Beberapa metode tidak dapat menyertakan 'paymasterAndData' karena bidang tersebut belum ditentukan atau dideklarasikan. Metode menggunakan bidang kenyamanan '.offset' yang disediakan untuk tipe data dinamis untuk melakukan itu. Namun kontrak yang menggunakan argumen yang disandikan ABI tidak memvalidasi urutan bidang yang ditentukan dan validitas offset. Dimungkinkan untuk membuat representasi yang valid dari operasi pengguna di Calldata dengan properti hash yang tidak biasa.
Kerentanan Pengemasan EntryPoint
Masalah dengan UserOperation juga memengaruhi beberapa bagian lain dari standar, kerentanan Pengepakan EntryPoint adalah salah satunya. Ketika skema hashing yang berbeda digunakan antara EntryPoint dan kontrak dompet atau pengkodean operasi pengguna non-standar digunakan, kita melihat perbedaan hash.
Risiko muncul sebagai EntryPoint. Sekarang satu operasi pengguna dapat diwakili oleh beberapa 'hash op pengguna', dan 'hash op pengguna' yang sama dapat mewakili beberapa operasi pengguna. Sekarang ini dapat membuat beberapa efek yang tidak diinginkan. Mari kita bahas dampaknya.
Erc 4337 masih dalam tahap yang sangat awal, karena baru dirilis pada bulan Maret, sehingga dampak dari kerentanan ini tidak sepenuhnya diketahui. Sulit untuk menggambarkan dampak potensial dari pandangan mata burung. Lebih dari itu, dampaknya bergantung pada penerapan bundler, pengindeks, penjelajah operasi pengguna, dan layanan off-chain lainnya. Mari kita lihat beberapa masalah yang disebabkan oleh kerentanan ini.
- Ini dapat menyebabkan pengalaman yang membingungkan bagi pengguna karena hash operasi pengguna dapat berubah antara waktu pengiriman dan penyertaan. Fenomena ini tidak diketahui oleh sebagian besar dompet, jadi mereka mungkin tidak memperhitungkan perbedaan itu.
- Dompet dapat diubah dan dirancang untuk sengaja menghindari pengindeksan dengan menyetel semua hash operasi pengguna menjadi sama.
- Kita dapat melihat kesalahan penanganan data dan kunci jika layanan off-chain yang memantau penyertaan operasi pengguna melewatkan penyertaan operasi pengguna tertentu.
Memverifikasi Kerentanan Pengemasan Paymaster
Tidak ada yang suka memesan sesuatu dari belanja online dan menerima produk yang sama sekali berbeda. Hal yang sama ada di Web3, tetapi kerentanan ini menurunkan pengalaman pengguna. Pengguna mungkin telah mengubah atau konten yang berbeda antara waktu penandatanganan dan penyertaan pada rantai. Dan alasan mengapa hal ini terjadi adalah karena dua operasi pengguna yang berbeda mengembalikan hash yang sama dari fungsi 'VerifyingPaymaster.getHash()'.
Fungsi VerifyingPaymaster.getHash() mengambil beberapa argumen seperti 'UserOperation', yang merupakan struct, 'validUnitl', nilai uint48 dan validAfter nilai uint48 lainnya. Masalah konten yang berbeda antara waktu penandatanganan dan waktu penyertaan memengaruhi pengalaman pengguna dan keamanan secara keseluruhan. Mari kita bahas beberapa kekhawatiran yang ditimbulkannya.
- Penanda tangan offchain yang masuk dalam format yang disandikan ABI setelah menerima operasi pengguna atau penanda tangan dengan integrasi kontrak untuk menyiapkan data untuk tanda tangan menjadi rentan.
- Hash dapat dimodifikasi untuk mencakup lebih sedikit elemen dari yang diharapkan, yang dapat menyebabkan beberapa bidang statis, seperti initCode, dll., dikecualikan dari hash. Hal ini dapat mengakibatkan penggunaan yang berbeda dari yang dimaksudkan untuk tanda tangan sponsor pemberi pembayaran.
- Kita dapat melihat pelanggaran dan pelanggaran aturan dengan mengubah userOp.initCode dan userOp.callData setelah mendapatkan tanda tangan. Ini akan memungkinkan token asli paymaster digunakan untuk tujuan selain mencetak NFT tanpa gas.
Kesimpulan
Dengan kemajuan dan perkembangan yang terus berlanjut, kita akan menyaksikan banyak hal mengagumkan, dan ERC 4337 adalah salah satunya. Sementara mengembangkan dan memajukan keamanan adalah sesuatu yang tidak pernah bisa kita kompromikan. Sungguh luar biasa untuk mencatat seberapa cepat kerentanan ditemukan dalam standar, dan penelitian dan pengembangan berkelanjutan sedang dilakukan untuk membuatnya aman.
Penting untuk dicatat bahwa bahkan beberapa organisasi terbesar dan paling terkenal yang membangun di Web3 dapat membuat kesalahan terkait keamanan, dan tentunya protokol lain juga melakukannya. Kenaikan terus menerus di Insiden Web3 dalam beberapa tahun terakhir terlihat jelas.
Solusi satu atap untuk melindungi Anda, pengguna Anda, dan protokol Anda dari ancaman keamanan semacam itu akan diaudit. Kami QuillAudits, adalah salah satu penyedia layanan teratas dalam audit kontrak cerdas dan keamanan blockchain, Kunjungi situs web kami untuk mengetahui lebih lanjut dan mengamankan proyek Anda. Dan pantau terus untuk menikmati lebih banyak blog informatif lainnya
34 views
- Konten Bertenaga SEO & Distribusi PR. Dapatkan Amplifikasi Hari Ini.
- Platoblockchain. Intelijen Metaverse Web3. Pengetahuan Diperkuat. Akses Di Sini.
- Mencetak Masa Depan bersama Adryenn Ashley. Akses Di Sini.
- Sumber: https://blog.quillhash.com/2023/04/24/understanding-erc-4337-user-operation-packing-vulnerability/
- :adalah
- :bukan
- 20
- 2023
- a
- Tentang Kami
- mengakses
- Akun
- abstraksi akun
- Akun
- di seluruh
- tambahan
- kemajuan
- Setelah
- Semua
- juga
- diubah
- an
- dan
- Lain
- ADALAH
- argumen
- argumen
- AS
- Majelis
- At
- Mencoba
- Audit
- audit
- berdasarkan
- BE
- karena
- menjadi
- makhluk
- TERBAIK
- antara
- Terbesar
- blockchain
- Keamanan Blockchain
- Blog
- pelanggaran
- Bangunan
- tapi
- by
- bernama
- CAN
- tidak bisa
- menangkap
- Menyebabkan
- penyebab
- rantai
- perubahan
- mengubah
- kode
- menggabungkan
- bagaimana
- kompromi
- Kekhawatiran
- membingungkan
- membangun
- isi
- kontinu
- kontrak
- kontrak
- kenyamanan
- bisa
- menutupi
- membuat
- data
- didefinisikan
- tergantung
- dikerahkan
- menggambarkan
- dirancang
- berkembang
- Pengembangan
- perbedaan
- berbeda
- membahas
- Perbedaan
- do
- dinamis
- Awal
- tahap awal
- efek
- elemen
- menikmati
- sepenuhnya
- ERC-4337
- dll
- ethereum
- MAINNET ETHEREUM
- Bahkan
- Setiap
- contoh
- dikecualikan
- diharapkan
- pengalaman
- menyelidiki
- Penjelajah
- mata
- memfasilitasi
- terkenal
- Fitur
- beberapa
- bidang
- Fields
- Menemukan
- Pertama
- Untuk
- format
- ditemukan
- dari
- sepenuhnya
- fungsi
- fungsionalitas
- berfungsi
- Umum
- mendapatkan
- mendapatkan
- diberikan
- Go
- akan
- Terjadi
- Sulit
- hash
- hashing
- Memiliki
- Seterpercayaapakah Olymp Trade? Kesimpulan
- HTTPS
- Dampak
- dampak
- implementasi
- mengimplementasikan
- penting
- in
- memasukkan
- termasuk
- Termasuk
- penyertaan
- Secara individual
- informatif
- integrasi
- berniat
- dengan sengaja
- ke
- Pengantar
- isu
- masalah
- IT
- hanya
- kunci-kunci
- dikenal
- besar
- Terakhir
- Terbaru
- memimpin
- BELAJAR
- 'like'
- pembatasan
- keterbatasan
- Terbatas
- melihat
- terbuat
- jaringan utama
- membuat
- MEMBUAT
- banyak
- March
- max-width
- Mungkin..
- cara
- Memori
- metode
- metode
- mungkin
- pencetakan
- salah penanganan
- rindu
- kesalahan
- dimodifikasi
- pemantauan
- lebih
- paling
- beberapa
- asli
- Token Asli
- jaringan
- New
- NFT
- sekarang
- of
- on
- ONE
- secara online
- belanja online
- OP
- operasi
- operasional
- Operasi
- or
- urutan
- Organisasi
- Lainnya
- Protokol lainnya
- kami
- lebih
- secara keseluruhan
- sendiri
- pak
- parameter
- khususnya
- bagian
- Lulus
- gejala
- plato
- Kecerdasan Data Plato
- Data Plato
- mungkin
- potensi
- Mempersiapkan
- swasta
- Kunci Pribadi
- Produk
- proyek
- properties
- melindungi
- protokol
- protokol
- memberikan
- disediakan
- penyedia
- tujuan
- segera
- Quillhash
- meningkatkan
- alasan
- menerima
- mengenai
- daerah
- reguler
- dirilis
- kepercayaan
- mewakili
- perwakilan
- diwakili
- penelitian
- penelitian dan pengembangan
- mengakibatkan
- kembali
- Naik
- Risiko
- aturan
- sama
- skema
- Bagian
- aman
- Dijamin
- keamanan
- Ancaman keamanan
- melihat
- segmen
- layanan
- penyedia jasa
- Layanan
- pengaturan
- beberapa
- tas
- menandatangani
- Tanda tangan
- penandatanganan
- serentak
- tunggal
- pintar
- kontrak pintar
- Kontrak Cerdas
- So
- SOL
- larutan
- beberapa
- sesuatu
- Space
- sokongan
- Tahap
- standar
- standar
- awal
- tinggal
- Masih
- pengajuan
- sukses
- seperti itu
- Mendukung
- Pasti
- Dibutuhkan
- dari
- bahwa
- Grafik
- mereka
- Mereka
- Sana.
- Ini
- mereka
- hal
- ini
- itu
- ancaman
- waktu
- untuk
- token
- Token
- terlalu
- puncak
- melakukan transaksi
- transaksional
- Transaksi
- benar
- jenis
- pemahaman
- tidak diinginkan
- Memperbarui
- Pembaruan
- upgrade
- menggunakan
- bekas
- Pengguna
- Pengguna Pengalaman
- Pengguna
- MENGESAHKAN
- nilai
- sangat
- View
- Mengunjungi
- Kerentanan
- kerentanan
- Rentan
- dompet
- Wallet
- adalah
- we
- Web3
- Situs Web
- BAIK
- terkenal
- adalah
- Apa
- ketika
- yang
- sementara
- mengapa
- akan
- dengan
- menyaksikan
- dunia
- Salah
- tahun
- Kamu
- Anda
- zephyrnet.dll