1 سال پیش
زمان مطالعه : 8 دقیقه
مشکلات امنیتی رایج در پلهای بلاکچینی
پل های بلاک چینی نقش بسیار مهمی در فضای بلاک چین دارند و حفظ امنیت این پل ها بسیار حیاتی است. برخی از مشکلات امنیتی رایجی که پلهای بلاکچینی با آنها مواجه هستند عبارتند از اعتبار سنجی ضعیف درون زنجیره ای و برون زنجیره ای، مدیریت نامناسب توکنهای بومی و تنظیمات نادرست.
پل های بلاکچینی نقش بسیار مهمی در فضای بلاک چین دارند و حفظ امنیت این پل ها بسیار حیاتی است. برخی از مشکلات امنیتی رایجی که پلهای بلاکچینی با آنها مواجه هستند عبارتند از اعتبار سنجی ضعیف درون زنجیره ای و برون زنجیره ای، مدیریت نامناسب توکنهای بومی و تنظیمات نادرست.
مقدمه
پل بلاک چین با اتصال دو بلاک چین، امکان ارتباط بین آنها را فراهم میکند. اگر دارایی بیت کوین دارید اما می خواهید در فعالیت های DeFi شبکه اتریوم شرکت کنید، یک پل بلاک چین به شما امکان می دهد بدون فروش بیت کوین خود این کار را انجام دهید.
پل های بلاکچینی برای برقراری ارتباط در فضای بلاک چین بسیار حیاتی هستند. آنها با استفاده از اعتبارسنجی های مختلف درون زنجیره ای و برون زنجیره ای عمل می کنند، در نتیجه با مشکلات امنیتی متفاوتی مواجه هستند.
در این رابطه بخوانید : کیف پول قرارداد هوشمند چیست؟
دلیل اهمیت امنیت پل بلاکچین
یک پل بلاکچینی معمولاً توکنی را که کاربر میخواهد از یک زنجیره به زنجیره دیگر منتقل کند، نگه میدارد. پلها که اغلب بهعنوان قراردادهای هوشمند مستقر میشوند، با افزایش نقل و انتقالات میان زنجیرهای مقدار قابل توجهی از توکنها را در خود نگه میدارند و بدین ترتیب مورد هدف هکرها قرار میگیرند.
علاوه بر این، پل های بلاکچینی سطح مستعد حمله بزرگی دارند. با در نظر گرفتن این موضوع، عوامل مخرب انگیزه زیادی برای حمله به برنامه های کاربردی میان زنجیره ای و سرقت منابع مالی آنها دارند.
طبق داده های CertiK، حملات به پل های بلاکچینی در سال 2022 بیش از 1.3 میلیارد دلار خسارت در پی داشته است.
مشکلات امنیتی رایج در پل های بلاکچینی
برای افزایش امنیت پلها، آگاهی از آسیبپذیریهای امنیتی پلها و تست آنها قبل از راهاندازی، اهمیت دارد است. این آسیبپذیریها را میتوان در چهار حوزه زیر دستهبندی کرد:
اعتبارسنجی درون زنجیرهای ضعیف
در پلهای معمولی، بهویژه پلهایی که برای DAppهای خاص طراحی شدهاند، اعتبارسنجی درون زنجیرهای کمتری انجام میشود. این پلها برای اجرای عملیاتهای مهم مانند مینت کردن، سوزاندن و انتقال توکنها در حالی که تمام تأییدیهها خارج از زنجیره انجام میشوند، به یک پشتیبان متمرکز متکی هستند.
در مقابل، سایر پل ها از قراردادهای هوشمند برای اعتبارسنجی پیام ها و اجرای تأییدیه های درون زنجیرهای استفاده می کنند. در این سناریو، زمانی که کاربر وجوهی را به یک زنجیره واریز میکند، قرارداد هوشمند یک پیام امضا شده ایجاد میکند و امضا را در تراکنش برمیگرداند. این امضا واریز را اثبات میکند و برای تأیید درخواست برداشت کاربر در زنجیره دیگر استفاده می شود. این فرآیند باید بتواند از حملات امنیتی مختلف، از جمله حملات مکرر و سوابق واریز جعلی جلوگیری کند.
با این حال، اگر در طول فرآیند اعتبار سنجی درون زنجیرهای مشکلی وجود داشته باشد، مهاجم میتواند آسیب شدید ایجاد کند. به عنوان مثال، اگر یک پل از درخت Merkle برای اعتبار سنجی سوابق تراکنش استفاده کند، مهاجم می تواند مدرک جعلی ایجاد کند. یعنی اگر فرآیند اعتبارسنجی آسیب پذیر باشد آنها می توانند تایید تراکنش را دور بزنند و توکن های جدیدی را در حساب خود ضرب کنند.
برخی از پل ها از مفهوم «رپد توکن ها» استفاده می کنند. به عنوان مثال، اگر کاربری تصمیم بگیرد توکن DAI را از اتریوم به زنجیره BNB منتقل کند، توکن DAI او از قرارداد اتریوم کسر می شود و معادل آن رپد دای روی زنجیره BNB صادر می شود.
همچنین بخوانید : بلوم (Blum) چیست : ترکیبی از اکسچنج متمرکز و غیرمتمرکز
با این حال، اگر این تراکنش به درستی تأیید نشده باشد، مهاجم میتواند با دستکاری یک قرارداد مخرب ایجاد کند و رپدتوکنها را از پل به یک آدرس نادرست انتقال دهد.
مهاجمان همچنین به سراغ قربانیانی میروند که قرارداد پل را تایید کنند تا بتوانند با استفاده از تابع “transferFrom” دارایی ها از قرارداد پل سرقت کنند.
متأسفانه، بسیاری از پل ها از کاربران DApp درخواست میکنند تا توکن های نامحدودی را تایید کنند و این شرایط را وخیم تر کرده است. این یک روش معمول برای کاهش گس فی است اما دسترسی یک قرارداد هوشمند به تعداد نامحدودی از توکن های موجود در کیف پول کاربر، خطرات بیشتری ایجاد می کند. مهاجمان می توانند از عدم تایید اعتبار و تایید بیش از حد برای انتقال توکن های کاربران به خود استفاده کنند.
اعتبارسنجی برون ذنجیرهای ضعیف
در برخی از سیستم های پل بلاکچینی، سرور پشتیبان برون زنجیرهای نقش مهمی در تأیید مشروعیت پیام های ارسال شده از زنجیره بلوکی، ایفا می کند. در این مثال، ما بر تأیید معاملات واریز تمرکز می کنیم.
یک پل بلاک چین با اعتبار سنجی برون زنجیرهای به شرح زیر عمل می کند:
- کاربران با استفاده از DApp توکن ها را به قرارداد هوشمند در زنجیره مبدا واریز میکنند.
- سپس DApp، از طریق یک API، هش تراکنش واریز را به سرور پشتیبان ارسال می کند.
- هش تراکنش چندین مرتبه توسط سرور اعتبارسنجی میشود. اگر تایید شود، امضاکننده پیامی را امضا میکند و امضا را از طریق API به رابط کاربر میفرستد.
- پس از دریافت امضا، DApp آن را تأیید می کند و به کاربر اجازه می دهد تا توکن های خود را از زنجیره مبدا خارج کند.
سرور پشتیبان باید مطئن شود که تراکنش واقعاً رخ داده است و جعلی نبوده است. سرور پشتیبان هدف با ارزشی برای مهاجمان است، زیرا این سرور به کاربران اجازه میدهد توکنها را از زنجیره مقصد برداشت کنند.
سرور پشتیبان باید ساختار تراکنش انجام شده و همچنین آدرس قراردادی که رویداد را اجرا کرده است را تأیید کند. اگر مشکلی در مورد دوم وجود داشته باشد، مهاجم می تواند یک قرارداد واریز جعلی که ساختار مشابه ای با یک قرارداد واریز قانونی دارد، ایجاد کند.
اگر سرور پشتیبان تأیید نکند که کدام آدرس رویداد را اجرا کرده است، این را یک تراکنش معتبر در نظر می گیرد و پیام را امضا می کند. سپس مهاجم میتواند هش تراکنش را به سرور پشتیان ارسال کند و تأیید را دور بزند و توکنها را از زنجیره مقصد خارج کنند.
مدیریت نامناسب توکنهای بومی
پل ها رویکردهای متفاوتی را برای مدیریت توکن های بومی و توکن های کاربردی دارند. به عنوان مثال، توکن بومی شبکه اتریوم اتر ETH است و اکثر توکن های کاربردی بر اساس استاندارد ERC-20 ساخته میشوند.
زمانی که کاربر قصد دارد اتر خود را به زنجیره دیگری منتقل کند، ابتدا باید آن را به قرارداد پل واریز کند. برای اینکار، کاربر اتر را به تراکنش پیوست می کند و مقدار اتر را از قسمت “msg.value” تراکنش تعیین میکند.
واریز توکن های ERC-20 شدیدا با واریز ETH تفاوت دارد. برای واریز توکن ERC-20، کاربر ابتدا باید به قرارداد پل اجازه دهد تا توکن های او را خرج کند. پس از تایید این موضوع و واریز توکن ها به قرارداد پل، قرارداد یا توکنهای کاربر را با استفاده از تابع “burnFrom” میسوزاند یا با استفاده از تابع “transferFrom” به قرارداد منتقل میکند.
یک روش برای متمایز کردن این مورد، استفاده از عبارت if-else در همان تابع است. روش دیگر، ایجاد دو تابع مجزا برای مدیریت هر سناریو است. تلاش برای واریز ETH با استفاده از تابع سپرده ERC-20 می تواند منجر به از دست رفتن این وجوه شود.
در هنگام رسیدگی به درخواستهای واریز ERC-20، کاربر معمولاً آدرس توکن را به عنوان ورودی به تابع واریز ارائه میکند. این کار خطر زیادی به همراه دارد، زیرا ممکن است در طول تراکنش دستورهای خارجی غیرقابل اعتمادی رخ دهد. برای کاهش ریسک میتوان وایت لیستی اجرا کرد که فقط حاوی توکن های مورد تایید پل باشد. فقط آدرس های وایت لیست مجاز هستند به عنوان آرگومان عبور کنند. در این حالت تیم پروژه از قبل آدرس توکن را فیلتر کرده اند بنابراین از دستورهای خارجی جلوگیری می کند.
با این حال، ممکن است هنگامی که پل ها در حال انتقال درون زنجیره ای توکن بومی هستند، مشکلاتی رخ دهد، زیرا توکن بومی آدرسی ندارد. توکن بومی با آدرس صفر (0x000…0) نمایش داده میشود که این موضوع می تواند مشکل ساز باشد زیرا ارسال آدرس صفر به تابع می تواند اعتبار سنجی وایت لیست را دور بزند حتی اگر به درستی اجرا نشده باشد.
هنگامی که قرارداد پل برای انتقال دارایی های کاربر به قرارداد دستور “transferFrom” را صادر می کند، هرگونه دستور خارجی برای اجرای آدرس صفر رد میشود زیرا هیچ تابع “transferFrom” در آدرس صفر پیاده سازی نشده است. با این حال، اگر قرارداد دارایی بازگشتی را به درستی انجام ندهد، ممکن است معامله همچنان رخ دهد. این فرصتی به مهاجمان میدهد تا تراکنش را بدون انتقال هیچ توکنی به قرارداد اجرا کنند.
تنظیمات نادرست
در بیشتر پل های بلاکچینی، یک فرد منتخب مسئول قرار دادن توکنها و آدرسها در وایت لیست یا بلک لیست، تخصیص یا تغییر امضاکنندگان و سایر تنظیمات حیاتی است. تمام این تنظیمات باید کامل و به درستی انجام شوند، زیرا حتی جزئیترین سهل انگاری میتواند زیانهای قابل توجهی در پی داشته باشد.
چگونه امنیت پل بلاکچین را بهبود دهیم؟
چهار باگ امنیتی رایج که پیش تر راجبش صحبت کردیم، چالشهای امنیتی یک اکوسیستم بلاک چین به هم پیوسته را نشان میدهند. برای هر یک از این باگ ها راه حلی وجود دارد اما هیچ تکنیکی را نمیتوان برای همه آنها اعمال کرد.
برای مثال، اجرای یک دستورالعملهای کلی برای حفظ امنیت فرآیند اعتبارسنجی، چالش برانگیز است زیرا هر پل الزامات متفاوتی برای اعتبارسنجی دارد. مؤثرترین روش برای جلوگیری از دور زدن اعتبارسنجی، تست کردن پل در برابر همه حمله های احتمالی است.
به طور خلاصه، انجام آزمایش های دقیق در برابر حملات احتمالی و توجه ویژه به رایج ترین آسیب پذیری های امنیتی در پل ها ضروری است.
ترجمه شده توسط نیپوتو
برای خرید و فروش مانا به مارکت نیپوتو مراجعه کنید
خرید و فروش ارزهای دیجیتال از امروز شروع کنید
ممکن است علاقه مند باشید
ثبت دیدگاه
لیست نظرات (0)
انتخاب سردبیر
مفاهیم پایه
بیشتر بخوانید