وقت خواندن: 5 دقیقه
دنیای Web3 دنیای پروتکل ها و استانداردها است. مطمئناً باید با چندین استاندارد ERC برخورد کرده باشید. برخی از معروف ترین استانداردهای ERC 20 و 721 هستند که به ترتیب برای توکن ها و NFT هستند. اما Web3 به این محدود نمی شود.
ما شاهد به روز رسانی و ارتقاء منظم در Web3 هستیم. یکی از آخرین بهروزرسانیها ERC 4337 بود که در مارس 2023 در اتریوم Mainnet مستقر شد. در مورد ERC 4337 هم همینطور است. در این وبلاگ با آسیب پذیری های مربوط به بخش عملیات کاربر استاندارد و تأثیر آنها آشنا می شویم. ابتدا اجازه دهید با معرفی مختصری از استاندارد ERC 4337 شروع کنیم.
ERC 4337 چیست؟
برخلاف شبکه بیت کوین، Ethereum از قراردادهای هوشمند در زنجیره پشتیبانی می کند که باعث می شود اتریوم دو نوع حساب مختلف داشته باشد، یکی تراکنشی یا یک حساب عملیاتی. علاوه بر این، قراردادهای هوشمند فضای خاص خود را دارند، تقریباً مانند یک حساب. این دو نوع حساب در اتریوم عملکردهای خاص خود را دارند.
اکثر کیفپولهایی که با اتریوم کار میکنند، EOA هستند که به معنای حسابهای کاربر است، نه حسابهای قرارداد هوشمند. این نوع حساب ها محدودیت های خاص خود را دارند. یک محدودیت شامل اتکای کاربر به کلیدهای خصوصی برای دسترسی به حسابها و نیاز به همه امضاها برای تراکنشها است. این محدودیت ها باعث معرفی ERC 4337 شد.
ERC 4337 تلاش می کند تا با ترکیب بهترین از دو ویژگی نوع حساب، انتزاع حساب را ارائه دهد. بله، EOA و حساب های قرارداد هوشمند. این با یک قرارداد واحد امکان پذیر است که می تواند همزمان توکن ها را انجام دهد و قرارداد ایجاد کند، و ERC 4337 استانداردی است که این پیشرفت عالی جدید را تسهیل می کند.
آسیب پذیری بسته بندی UserOperation؟
همه چیز در مورد این استاندارد و پروژه عالی است، اما چه اشتباهی رخ داد؟ خب، یک مشکل پیادهسازی وجود داشت که منجر به هشهای ناسازگار بر اساس روش مورد استفاده برای امضا شد. این منجر به برخوردهای سفارشی می شود، به ویژه هش های متفاوت برای همان UserOperations و هش های برخوردی برای UserOperations مختلف.
مناطق آسیبدیده به دو آسیبپذیری، آسیبپذیری بستهبندی EntryPoint و آسیبپذیری بستهبندی VerifyingPaymaster محدود شدهاند. بیشتر در مورد آن بعدا. بیایید ابتدا یک درک کلی داشته باشیم و سپس به صورت جداگانه با آنها آشنا خواهیم شد.
بیایید نگاهی به UserOperation.sol بیندازیم:-
می بینید که پارامتر UserOperation، یک Calldata، به عنوان آرگومان به تابع pack ارسال می شود. بیایید ساختار را بررسی کنیم:
اینها فیلدهایی هستند که ساختار UserOperation حمل می کند. برای کپی کردن این بخش بزرگ از Calldata در حافظه، بخش های کد از اسمبلی استفاده می کنند. برخی از روشهای قراردادها قصد دارند تمام فیلدهای UserOperation، از جمله فیلدهای با اندازه متغیر را که در کدگذاری ABI نیز فیلدهای پویا نامیده میشوند، جذب کنند. به عنوان مثال، رمزگذاری پویا در این ساختار 'initCode'، 'callData' و 'paymasterAndData' است.
برخی از روشها نمیتوانند شامل «paymasterAndData» باشند زیرا آن فیلد هنوز تعریف یا اعلام نشده است. روشها از فیلد راحت «offset.» استفاده میکنند که برای انواع دادههای پویا برای این کار ارائه شده است. اما قراردادهایی که از آرگومان های کدگذاری شده با ABI استفاده می کنند ترتیب تعریف فیلدها و اعتبار افست ها را تایید نمی کنند. امکان ساخت یک نمایش معتبر از عملیات کاربر در Calldata با ویژگی های هش غیرمعمول وجود دارد.
آسیب پذیری بسته بندی EntryPoint
مشکل UserOperation برخی از بخشهای دیگر استاندارد را نیز تحت تأثیر قرار میدهد، آسیبپذیری EntryPoint Packing یکی از این موارد است. هنگامی که یک طرح هش متفاوت بین قرارداد EntryPoint و کیف پول استفاده می شود یا از رمزگذاری عملیات کاربر غیر استاندارد استفاده می شود، ما شاهد واگرایی هش هستیم.
سطح ریسک به عنوان EntryPoint ظاهر می شود. اکنون یک عملیات کاربر منفرد می تواند توسط چندین 'user op hash' نمایش داده شود و همان 'user op hash' می تواند چندین عملیات کاربر را نشان دهد. در حال حاضر این می تواند برخی از اثرات ناخواسته ایجاد کند. بیایید در مورد تأثیر آن بحث کنیم.
Erc 4337 هنوز در مراحل اولیه است، زیرا به تازگی در ماه مارس منتشر شد، بنابراین تأثیر این آسیب پذیری ها به طور کامل مشخص نیست. توصیف تاثیر احتمالی از دید پرنده دشوار است. بیش از آن، تأثیر به پیادهسازی باندلرها، نمایهسازها، کاوشگرهای عملیات کاربر و سایر خدمات خارج از زنجیره بستگی دارد. بیایید به چند مورد از مشکلاتی که این آسیب پذیری ایجاد می کند نگاه کنیم.
- این می تواند یک تجربه گیج کننده برای کاربر ایجاد کند زیرا هش عملیات کاربر می تواند بین زمان ارسال و درج تغییر کند. این پدیده برای اکثر کیفپولها ناشناخته است، بنابراین ممکن است این تفاوت را در نظر نگیرند.
- کیف پولها را میتوان تغییر داد و طوری طراحی کرد که عمداً از نمایهسازی با تنظیم همه هشهای عملیات کاربر یکسان جلوگیری شود.
- اگر یک سرویس خارج از زنجیره نظارت بر گنجاندن عملیات کاربر، گنجاندن یک عملیات کاربر معین را از دست بدهد، میتوانیم سوءاستفاده از دادهها و کلیدها را مشاهده کنیم.
VerifyingPaymaster Packing آسیب پذیری
هیچ کس دوست ندارد چیزی را از خرید آنلاین سفارش دهد و محصولی کاملا متفاوت دریافت کند. در Web3 هم همینطور است، اما این آسیبپذیری تجربه کاربر را کاهش میدهد. کاربر ممکن است بین زمان امضا و گنجاندن در زنجیره، محتویات را تغییر داده یا متفاوت باشد. و دلیل این اتفاق این است که دو عملیات مختلف کاربر، هش یکسانی را از تابع VerifyingPaymaster.getHash برمیگردانند.
تابع VerifyingPaymaster.getHash چند آرگومان مانند 'UserOperation' را می گیرد که یک ساختار، 'validUnitl'، یک مقدار uint48 و یک validAfter یک مقدار uint48 دیگر است. موضوع محتویات مختلف بین زمان امضا و زمان درج بر تجربه کاربر و امنیت کلی تأثیر می گذارد. بیایید در مورد چند مورد از نگرانی هایی که ایجاد می کند صحبت کنیم.
- امضاکنندگان غیر زنجیره ای که پس از دریافت عملیات کاربر در قالب کدگذاری شده با ABI ثبت نام می کنند یا امضاکنندگان با یکپارچه سازی قرارداد برای آماده سازی داده ها برای امضا، آسیب پذیر می شوند.
- هش را می توان به گونه ای تغییر داد که عناصر کمتری از حد انتظار را پوشش دهد، که می تواند منجر به حذف برخی از فیلدهای ثابت مانند initCode و غیره از هش شود. این ممکن است به استفاده متفاوتی از آنچه برای امضاهای حمایت مالی در نظر گرفته شده است منجر شود.
- ما می توانیم با تغییر userOp.initCode و userOp.callData پس از گرفتن امضا شاهد نقض و دور زدن قوانین باشیم. این امر به توکن بومی پرداخت کننده اجازه می دهد تا برای اهدافی غیر از ضرب NFT بدون گاز استفاده شود.
نتیجه
با پیشرفت و توسعه مداوم، شاهد چیزهای شگفت انگیز زیادی خواهیم بود که ERC 4337 یکی از آنهاست. در حالی که توسعه و پیشرفت امنیت چیزی است که ما هرگز نمی توانیم آن را به خطر بیاندازیم. جالب است بدانید که با چه سرعتی آسیبپذیریها در استاندارد پیدا شدند و تحقیق و توسعه مستمر برای ایمنسازی آن در حال انجام است.
ذکر این نکته ضروری است که حتی برخی از بزرگترین و شناخته شده ترین سازمان هایی که در Web3 ایجاد می کنند نیز می توانند اشتباهات مربوط به امنیت را مرتکب شوند و مطمئناً سایر پروتکل ها نیز این اشتباهات را مرتکب می شوند. افزایش مداوم در حوادث Web3 در چند سال اخیر مشهود است.
راه حل یک مرحله ای برای محافظت از شما، کاربران و پروتکل شما در برابر این گونه تهدیدات امنیتی در حال بررسی است. ما QuillAudits، یکی از ارائه دهندگان خدمات برتر در ممیزی قراردادهای هوشمند و امنیت بلاک چین هستیم، برای کسب اطلاعات بیشتر و ایمن سازی پروژه خود از وب سایت ما دیدن کنید. و با ما همراه باشید تا از اینگونه وبلاگ های آموزنده لذت ببرید
34 نمایش ها
- محتوای مبتنی بر SEO و توزیع روابط عمومی. امروز تقویت شوید.
- پلاتوبلاک چین. Web3 Metaverse Intelligence. دانش تقویت شده دسترسی به اینجا.
- ضرب کردن آینده با آدرین اشلی. دسترسی به اینجا.
- منبع: https://blog.quillhash.com/2023/04/24/understanding-erc-4337-user-operation-packing-vulnerability/
- :است
- :نه
- 20
- 2023
- a
- درباره ما
- دسترسی
- حساب
- انتزاع حساب
- حساب ها
- در میان
- اضافه
- پیشرفت
- پس از
- معرفی
- همچنین
- تغییر
- an
- و
- دیگر
- هستند
- استدلال
- استدلال
- AS
- مجلس
- At
- تلاشها
- حسابرسی
- حسابرسی
- مستقر
- BE
- زیرا
- شدن
- بودن
- بهترین
- میان
- بزرگترین
- بلاکچین
- امنیت بلوچین
- بلاگ
- شکاف
- بنا
- اما
- by
- نام
- CAN
- نمی توان
- گرفتن
- علت
- علل
- زنجیر
- تغییر دادن
- متغیر
- رمز
- ترکیب
- بیا
- سازش
- نگرانی ها
- گیج کننده
- ساختن
- محتویات
- مداوم
- قرارداد
- قرارداد
- راحتی
- میتوانست
- پوشش
- ایجاد
- داده ها
- مشخص
- بستگی دارد
- مستقر
- توصیف
- طراحی
- در حال توسعه
- پروژه
- تفاوت
- مختلف
- بحث و تبادل نظر
- واگرایی
- do
- پویا
- در اوایل
- مرحله اولیه
- اثرات
- عناصر
- لذت بردن
- به طور کامل
- ERC-4337
- و غیره
- ethereum
- شبکه برق اتریوم
- حتی
- هر
- مثال
- محروم
- انتظار می رود
- تجربه
- اکتشاف
- کاشفان
- چشم
- تسهیل کننده
- معروف
- امکانات
- کمی از
- رشته
- زمینه
- پیدا کردن
- نام خانوادگی
- برای
- قالب
- یافت
- از جانب
- کاملا
- تابع
- ویژگی های
- عملکرد
- سوالات عمومی
- دریافت کنید
- گرفتن
- داده
- Go
- رفتن
- اتفاق می افتد
- سخت
- مخلوط
- حس کردن
- آیا
- چگونه
- HTTPS
- تأثیر
- اثرات
- پیاده سازی
- اجرای
- مهم
- in
- شامل
- شامل
- از جمله
- گنجاندن
- به طور جداگانه
- حاوی اطلاعات مفید
- یکپارچگی
- قصد
- از قصد
- به
- معرفی
- موضوع
- مسائل
- IT
- تنها
- کلید
- شناخته شده
- بزرگ
- نام
- آخرین
- رهبری
- یاد گرفتن
- پسندیدن
- محدودیت
- محدودیت
- محدود شده
- نگاه کنيد
- ساخته
- mainnet
- ساخت
- باعث می شود
- بسیاری
- مارس
- حداکثر عرض
- ممکن است..
- به معنی
- حافظه
- روش
- روش
- قدرت
- ضرب
- بدرفتاری
- از دست رفته
- اشتباهات
- اصلاح شده
- نظارت بر
- بیش
- اکثر
- چندگانه
- بومی
- نشانه بومی
- شبکه
- جدید
- NFT
- اکنون
- of
- on
- ONE
- آنلاین
- خرید آنلاین
- OP
- عمل
- قابل استفاده
- عملیات
- or
- سفارش
- سازمان های
- دیگر
- سایر پروتکل ها
- ما
- روی
- به طور کلی
- خود
- بسته
- پارامتر
- ویژه
- بخش
- گذشت
- پدیده
- افلاطون
- هوش داده افلاطون
- PlatoData
- ممکن
- پتانسیل
- آماده
- خصوصی
- کلیدهای خصوصی
- محصول
- پروژه
- املاک
- محافظت از
- پروتکل
- پروتکل
- ارائه
- ارائه
- ارائه دهندگان
- اهداف
- به سرعت
- کویل هاش
- افزایش
- دلیل
- دریافت
- با توجه
- مناطق
- منظم
- منتشر شد
- اعتماد
- نشان دادن
- نمایندگی
- نمایندگی
- تحقیق
- تحقیق و توسعه
- نتیجه
- برگشت
- طلوع
- خطر
- قوانین
- همان
- طرح
- بخش
- امن
- امن
- تیم امنیت لاتاری
- تهدیدات امنیتی
- دیدن
- بخش ها
- سرویس
- ارائه دهندگان خدمات
- خدمات
- محیط
- چند
- خريد كردن
- امضاء
- امضا
- امضای
- به طور همزمان
- تنها
- هوشمند
- قرارداد هوشمند
- قراردادهای هوشمند
- So
- شیر برقی (سلونوئید)
- راه حل
- برخی از
- چیزی
- فضا
- حمایت
- صحنه
- استاندارد
- استانداردهای
- شروع
- ماندن
- هنوز
- ارسال
- موفق
- چنین
- پشتیبانی از
- مسلما
- طول می کشد
- نسبت به
- که
- La
- شان
- آنها
- آنجا.
- اینها
- آنها
- اشیاء
- این
- کسانی که
- تهدید
- زمان
- به
- رمز
- نشانه
- هم
- بالا
- معامله کردن
- معامله ای
- معاملات
- درست
- انواع
- درک
- ناخواسته
- بروزرسانی
- به روز رسانی
- ارتقاء
- استفاده کنید
- استفاده
- کاربر
- سابقه کاربر
- کاربران
- تصدیق
- ارزش
- بسیار
- چشم انداز
- بازدید
- آسیب پذیری ها
- آسیب پذیری
- آسیب پذیر
- کیف پول
- کیف پول
- بود
- we
- Web3
- سایت اینترنتی
- خوب
- معروف
- بود
- چی
- چه زمانی
- که
- در حین
- چرا
- اراده
- با
- شاهد
- جهان
- اشتباه
- سال
- شما
- شما
- زفیرنت