بریج (Bridge) یا پل بلاکچینی پروتکلی است که ۲ بلاک چین مختلف را به هم وصل کرده و امکان تعامل بین آنها را فراهم میکند.
مثلا اگر شما بیت کوین داشته باشید، میتوانید از طریق یک پل بلاکچینی و بدون فروش بیت کوینهای خود در رویدادهای دیفای (DeFi) در شبکه اتریوم مشارکت کنید.
در فضای بلاکچین، بریجها نقش مهمی در ایجاد قابلیت همکاری دارند. پلها از طریق اعتبارسنجیهای آنچین و آفچین کار میکنند و در نتیجه آسیبپذیریهای امنیتی مختلفی در آنها نهفته است.
تو صرافی اکسران میتونی فقط با 500 هزار تومان، همه ارزهای دیجیتال رو معامله کنی!
شروع
در این مقاله از اکسران، رایجترین باگ ها و مشکلات امنیتی پل های بلاکچینی را با هم بررسی خواهیم کرد تا بیشتر با مخاطرات احتمالی این فناوری آشنا شویم.
نکات مهم مقاله: ❗ پلهای بلاکچینی نقش مهمی در ایجاد قابلیت همکاری بین بلاکچینها دارند. بنابراین، حفظ امنیت این بریجها اهمیت ویژهای دارد. ❗ اعتبارسنجی ضعیف در آنچین و آفچین، مدیریت نامناسب توکنها و پیکربندی نادرست، تعدادی از رایجترین باگ های امنیتی پل های بلاکچینی هستند. ❗ برای اطمینان از سطح امنیت، لازم است که پل در برابر حملات احتمالی آزمایش شود. |
چرا حفظ امنیت پل بلاکچینی مهم است؟
پل بلاکچینی توکنی را که کاربر میخواهد به بلاکچین دیگر منتقل کند، نگهداری میکند.
پلها معمولا به صورت قرارداد هوشمند اجرا میشوند. با افزایش تعداد نقل و انتقالات بین بلاکچینی، مقدار زیادی توکن در این پلها انباشته میشود.
وجود این تعداد بالا، باعث جلب توجه هکرها میشود و آنها بریجهای بلاکچینی را مورد حمله قرار میدهند. از این رو بررسی امنیت پل بلاکچینی از اهمیت ویژهای برخوردار است.
علاوه بر این مسئله، میزان حملات سایبری به پلهای بلاکچینی زیاد است؛ چون بریجها از اجزا و بخشهای متعددی تشکیل شدهاند. به همین دلیل مجرمان انگیزه پیدا میکنند که به برنامههای میانزنجیرهای یا کراسچین (Cross-chain) حمله کرده و سرمایههای موجود در آنها را سرقت کنند.
طبق دادههای پلتفرم CertiK، در سال ۲۰۲۲ بیش از ۱.۳ میلیارد دلار از پلهای بلاکچینی سرقت شده است که ۳۶ درصد از کل سرمایه سرقتشده در این سال محسوب میشود.
رایج ترین مشکلات امنیتی پل بلاکچینی
برای تقویت امنیت بریجها، باید درک جامعی از باگهای امنیتی رایج آنها داشته باشیم و پلها را قبل از راهاندازی تست کنیم. آسیب پذیری های امنیتی پل بلاکچینی را میتوانیم در ۴ زمینه اصلی زیر دستهبندی کنیم.
۱. ضعف در اعتبارسنجی آنچین
در بریجهای ساده، مخصوصا آنهایی که برای برنامههای غیرمتمرکز (Dapp) خاص طراحی شدهاند، از اعتبارسنجی آنچین یا درونزنجیرهای بسیار کم استفاده میشود. این پلها برای اجرای عملیات اساسی مثل ضرب کردن، سوزاندن و انتقال توکنها به یک بک اند (Backend) متمرکز متکی هستند و کل اعتبارسنجیها به صورت آفچین یا خارج از شبکه انجام میشود.
بر خلاف بریجهای ساده، برخی دیگر از پلهای بلاکچینی با استفاده از قراردادهای هوشمند اعتبارسنجی پیامها را بهصورت On-Chain انجام میدهند. در این شرایط وقتی کاربر پول خود را به یک بلاک چین واریز میکند، قرارداد هوشمند یک پیام امضاشده ایجاد میکند و امضا را در تراکنش برمیگرداند. این امضا نوعی اثبات برای مبلغ واریزی است و از آن برای تایید درخواست انتقال وجه به بلاک چین دیگر استفاده میشود. این فرایند معمولا از حملههای امنیتی مثل حمله اجرای مجدد (Replay attack) و ساخت سوابق سپرده جعلی جلوگیری میکند.
اما اگر در فرایند اعتبارسنجی آنچین یک باگ وجود داشته باشد، هکر میتواند از آن استفاده کرده و آسیب بزرگی به پل وارد کند. مثلا اگر یک پل برای اعتبارسنجی سوابق تراکنش، از درخت مرکل (Merkle tree) استفاده کند، هکر میتواند اثباتهای جعلی بسازد. یعنی اگر فرایند تایید تراکنش آسیبپذیر باشد، هکر میتواند مرحله تایید اثبات را رد کرده و در حساب خود توکنهای جدید ضرب کند.
برخی از پلهای بلاکچینی از مفهوم رپد توکن (Wrapped Token) استفاده میکنند.
مثلا وقتی یک کاربر استیبل کوین DAI را از شبکه اتریوم به BNB Chain منتقل میکند، توکنهای دای از قرارداد اتریوم برداشته میشود و معادل آن مقدار، توکن رپد دای (Wrapped DAI) در BNB Chain عرضه میشود.
اگر این تراکنش بهدرستی اعتبارسنجی نشود، هکر میتواند با اجرای یک قرارداد هوشمند مخرب، تابع را دستکاری کرده و توکنهای رپد را از بریج به یک آدرس دیگر منتقل کند.
البته مجرمان به قربانیهایی نیاز دارند که قرارداد انتقال توکن از بریج را تایید کنند تا بتوانند با استفاده از تابع “transferFrom” داراییها را از قرارداد پل سرقت کنند. این همان باگ پلهای بلاکچینی است که تاکنون هکرها از آن برای سرقت داراییها استفاده کردهاند.
متاسفانه اکثر بریجها از کاربران DAppها درخواست میکنند که دسترسی به مقدار نامحدودی از توکنها را تایید کنند و این شرایط را بدتر میکند.
این روش کارمزد را کم میکند اما ریسکهای بیشتری در بر دارد؛ چون به قرارداد هوشمند اجازه میدهد که به مقدار نامحدودی از توکنهای کیف پول کاربر دسترسی داشته باشد.
هکرها از این دسترسی نامحدود و اعتبارسنجی ناکافی سوءاستفاده میکنند و توکنهای کاربر را به کیف پول ارز دیجیتال خود انتقال میدهند.
۲. ضعف در اعتبارسنجی آفچین
در برخی از پلهای بلاکچینی، سرور بک اند آفچین نقش مهمی در تایید صحت پیامهای ارسالشده از بلاک چین دارد. برای مثال، فرایند تایید تراکنش واریز را در نظر میگیریم. نحوه کار یک پل بلاکچینی که اعتبارسنجی آفچین دارد، به شکل زیر است:
- کاربر با استفاده از DApp، توکنهای خود را به قرارداد هوشمند زنجیره مبدا واریز میکند.
- برنامه غیرمتمرکز از طریق یک API، هش تراکنش واریز را به سرور بک اند ارسال میکند.
- هش تراکنش چند بار توسط سرور اعتبارسنجی میشود. اگر مجاز باشد، یک امضاکننده پیام را امضا کرده و امضا را از طریق API دوباره به رابط کاربری ارسال میکند.
- برنامه غیرمتمرکز پس از دریافت و تایید امضا به کاربر اجازه میدهد که توکنهای خود را از زنجیره مقصد برداشت کند.
سرور بک اند باید مطمئن شود تراکنش واریزی که پردازش میکند واقعا رخ داده و جعلی نیست. سرور بک اند تعیین میکند که کاربر میتواند توکنها را از زنجیره مقصد برداشت کند یا نه؛ به همین دلیل زیاد مورد حمله هکرها قرار میگیرد.
سرور بک اند باید ساختار وقوع تراکنش و آدرس قراردادی که رویداد را اجرا کرده است، اعتبارسنجی کند. اگر غفلتی در مورد دوم صورت بگیرد، هکر میتواند با اجرای قراردادی مخرب، یک رویداد واریز جعلی بسازد که ساختار مشابهی با رویداد واریز قانونی دارد.
اگر سرور بک اند آدرس اجراکننده رویداد را بررسی نکند، تراکنش جعلی را یک تراکنش معتبر در نظر میگیرد و پیام را امضا میکند. در این صورت مجرم میتواند با ارسال هش تراکنش به بک اند، مرحله اعتبارسنجی را رد کرده و توکنها را از زنجیره مقصد برداشت کند.
۳. مدیریت نامناسب توکنها
بریجها رویکردهای متفاوتی در مدیریت توکنهای بومی و توکنهای کاربردی خود دارند. برای مثال، توکن بومی شبکه اتریوم ETH است و اکثر توکنهای کاربردی بر اساس استاندارد ERC-20 ساخته میشوند. وقتی یک کاربر میخواهد اتریومهای خود را به زنجیره دیگری منتقل کند، باید آنها را اول به قرارداد پل واریز کند. برای این کار، کاربر اترها را به تراکنش پیوست میکند و مقدار اتریومها را میتواند از قسمت “msg.value” تراکنش تنظیم کند.
نحوه واریز توکنهای ERC-20 با واریز اتریوم کاملا متفاوت است. برای واریز توکنهای ERC-20، کاربر باید اجازه خرج کردن توکنهای خود را به قرارداد پل بدهد. پس از تایید این دسترسی و واریز توکنها به قرارداد، بریج یا با استفاده از تابع “()burnFrom” توکنهای کاربر را میسوزاند و یا با تابع “()transferFrom” توکنها را به قرارداد منتقل میکند.
یک رویکرد متفاوت در این روش، استفاده از دستور If-else در همان تابع است. رویکرد دیگر این است که برای هر سناریو، یک تابع مجزا ایجاد شود. تلاش برای واریز اتریوم با تابع واریز ERC-20 ممکن است به از دست رفتن توکنها منجر شود.
در مدیریت درخواستهای واریز ERC-20، کاربر معمولا آدرس توکن را بهعنوان ورودی به تابع واریز ارائه میدهد. این اقدام ریسک بزرگی به همراه دارد؛ چون ممکن است در طول تراکنش دستورهای خارجی غیرقابل اعتماد اجرا شوند.
یکی از روشهای مقابله با این ریسک، تهیه یک لیست سفید از توکنهایی است که توسط بریج پشتیبانی میشود. فقط آدرسهای این لیست بهعنوان ورودی تصویب میشوند. از آنجایی که آدرس توکنها از قبل توسط تیم پروژه مشخص شدهاند، این کار از اجرای دستورهای خارجی جلوگیری میکند.
البته از آنجایی که توکن بومی آدرس ندارد، بریجها گاهی در مدیریت انتقالات بینزنجیرهای توکن بومی دچار مشکل میشوند.
آدرس صفر (0x000…0) نشاندهنده یک توکن بومی است.
این مسئله در برخی مواقع میتواند مشکلساز شود؛ چون ارائه آدرس صفر به تابع، حتی در صورت اجرای اشتباه هم میتواند مرحله تایید لیست سفید را دور بزند. این همان جایی است که با یکی دیگر از مشکلات بریجهای بلاکچینی مواجه میشویم.
وقتی قرارداد بریج دستور “transferFrom” را اجرا میکند تا داراییهای کاربر را به قرارداد منتقل کند، هرگونه دستور خارجی برای اجرای آدرس صفر رد میشود.
چون هیچ تابع “transferFrom” در آدرس صفر اجرا نشده است. با این حال، اگر قرارداد مقدار بازگشتی را درست تنظیم نکند، همچنان ممکن است تراکنش انجام شود. این امر فرصتی برای هکر ایجاد میکند که بدون انتقال هیچ توکنی به قرارداد، تراکنش را اجرا کند.
۴. پیکربندی اشتباه
در اکثر پلهای بلاکچینی، یک شخص دارای حق امتیاز وظیفه دارد که لیست سفید یا سیاهی از توکنها و آدرسها تهیه، امضاکنندهها را انتخاب یا جایگزین کند و سایر پیکربندیهای مهم را انجام دهد. بسیار مهم است که از دقیق بودن و صحت تمام پیکربندیها اطمینان حاصل شود؛ چون حتی نادیده گرفتن موارد بهظاهر پیشپاافتاده میتواند به ضررهای بزرگی منجر شود.
در واقع چنین اتفاقی قبلا رخ داده است و به دلیل یک پیکربندی اشتباه، هکر توانست با موفقیت مرحله تایید سابقه تراکنش را دور بزند. چند روز قبل از حمله، تیم پروژه یک بروزرسانی در پروتکل اجرا کرده و یک متغیر را تغییر داده بودند. این متغیر برای نشان دادن مقدار پیشفرض پیام مورداعتماد استفاده میشد. تغییر اعمالشده باعث شد که تمام پیامها بهصورت خودکار تاییدشده تلقی شوند و در نتیجه هکر توانست با ثبت یک پیام دلخواه، فرایند بازبینی و تایید را رد کند.
چگونه میتوان امنیت پل بلاکچینی را افزایش داد؟
مشکلات امنیتی پل های بلاکچینی که در بالا معرفی شد، نشاندهنده چالشهای موجود در حفظ امنیت یک اکوسیستم بلاکچینی بههمپیوسته هستند. روشهای کنترل و رفع این مشکلات و باگها با هم متفاوت است و هیچ راهنمای جامعی که برای تمام آنها صدق کند وجود ندارد.
برای مثال، نمیتوان یک دستورالعمل کلی برای نحوه اجرای صحیح فرایند تایید ارائه داد؛ چون هر بریج روش منحصربهفردی برای بازبینی دارد. بهترین روش برای جلوگیری از دور زدن تایید، تست کردن پل در برابر تمام انواع بردارهای حمله و از جنبههای مختلف است. بهطور خلاصه، باید آزمایشهای دقیقی برای مقابله با حملات احتمالی انجام بگیرد و به آسیبپذیریهای رایج در پلهای بلاکچینی توجه شود.
پرسش و پاسخ (FAQ)
- رایج ترین مشکلات پل بلاکچینی کداماند؟
بیشترین مشکلاتی که در بریجها رخ میدهد شامل اعتبارسنجیهای آنچین و آفچین، مدیریت نامناسب توکنها و پیکربندی اشتباه است. - راهکار جلوگیری از آسیب پذیری پلهای بلاکچینی چیست؟
انجام تستها و آزمونهای مختلف میتواند منجر به شناسایی حملات احتمالی به پلها شود.
جمعبندی
بریج یا پلهای بلاکچینی بسیار ارزشمندند و نقش مهمی در دنیای ارزهای دیجیتال دارند و بههمین دلیل زیاد مورد حمله هکرها و مجرمان سایبری قرار میگیرند. در طی سالهای اخیر، هکهای بزرگی در پلهای بلاکچینی صورت گرفته است. قبل از راهاندازی بریج، توسعهدهندگان میتوانند با انجام تستهای دقیق و استفاده از سرویسهای بازبینی، امنیت را افزایش دهند و ریسک حملات هکری را به حداقل برسانند. در دنیای چندزنجیرهای (Multichain)، بریجها یک عنصر مهم و حیاتی هستند. در ساخت و طراحی زیرساختهای وب ۳، مسئله امنیت باید همیشه در اولویت باشد و توجه ویژهای به آن شود. در این مقاله، رایج ترین مشکلات امنیتی پل بلاکچینی را بررسی کردیم. نظر شما درباره امنیت پلهای بلاکچینی و آسیبپذیری آنها چیست؟ شما چه باگهای دیگری را در پلها مشاهده کردهاید؟ لطفا دیدگاه خود را با ما به اشتراک بگذارید.