ICP·Devآی‌سی‌پی‌·دِو
بازگشت به مقالات
رایانه اینترنتی۶ تیر ۱۴۰۵3 دقیقه مطالعه

باگ «جمعه سیزدهم»: کالبدشکافی رویداد ضرب مضاعف ckBTC

در طول جلسه تحقیق و توسعه جهانی مارس ۲۰۲۶، مهندسان بنیاد دیفینیتی علت اصلی یک باگ زمان‌بندی نادر در کانیستر مینتر ckBTC را فاش کردند. یک وضعیت رقابتی در حافظه پنهان (Cache Race Condition) که به دلیل به‌روزرسانی تجمیع UTXO رخ داده بود، پیش از وصله شدن سریع، موقتاً اجازه یک رویداد ضرب مضاعف را داد.

نکات کلیدی

  • در طول جلسه تحقیق و توسعه جهانی مارس ۲۰۲۶، مهندسان بنیاد دیفینیتی علت اصلی یک باگ زمان‌بندی نادر در کانیستر مینتر ckBTC را فاش کردند
  • یک وضعیت رقابتی در حافظه پنهان (Cache Race Condition) که به دلیل به‌روزرسانی تجمیع UTXO رخ داده بود، پیش از وصله شدن سریع، موقتاً اجازه یک رویداد ضرب مضاعف را داد
اشتراک‌گذاری
باگ «جمعه سیزدهم»: کالبدشکافی رویداد ضرب مضاعف ckBTC

باگ «جمعه سیزدهم»: کالبدشکافی رویداد ضرب مضاعف ckBTC

در امور مالی غیرمتمرکز (DeFi)، پل زدن بین دارایی‌های بومی در بلاک‌چین‌های مستقل، یک دستاورد مهندسی بسیار حساس و پرمخاطره است. در رایانه اینترنتی (ICP)، استاندارد بیت‌کوین زنجیره‌کلید (ckBTC) با تعامل مستقیم با شبکه بیت‌کوین، از نیاز به پل‌های متمرکز جلوگیری می‌کند. با این حال، در طول جلسه تحقیق و توسعه جهانی مارس ۲۰۲۶، مهندسان دیفینیتی کالبدشکافی جذابی از یک وضعیت رقابتی ظریف در حافظه پنهان (Cache) را به اشتراک گذاشتند که منجر به یک رویداد نادر ضرب مضاعف در یک جمعه سیزدهم اخیر شده بود.

در ادامه، نحوه بروز این باگ، چگونگی حل آن و درس‌هایی که درباره ماشین‌های حالت با throughput بالا به ما می‌آموزد را با هم مرور می‌کنیم.


نحوه شکست حافظه پنهان مینتر (Minter)

برای درک این باگ، ابتدا باید چرخه عمر عادی ضرب ckBTC را درک کنید:

  1. کاربر بیت‌کوین بومی را به یک آدرس منحصربه‌فرد تحت کنترل کانیستر مینتر ckBTC (ckBTC Minter Canister) ارسال می‌کند.
  2. کانیستر مینتر، کانیستر بیت‌کوین بومی ICP را برای دریافت لیست به‌روزرسانی‌شده از خروجی‌های خرج‌نشده تراکنش (UTXO) پرس‌وجو (Query) می‌کند.
  3. در صورت کشف یک UTXO جدید، مینتر معادل آن مقدار ckBTC را برای کاربر ضرب می‌کند.

به منظور به حداقل رساندن انباشت حالت و کاهش کارمزد تراکنش‌ها، دیفینیتی پیش از این قابلیت تجمیع UTXO را معرفی کرده بود که هزاران UTXO پراکنده را در خروجی‌های بزرگتر و تجمیع‌شده ادغام می‌کند. از قضا، همین تجمیع، بستر را برای یک تداخل زمان‌بندی فراهم کرد.

در جریان این حادثه در جمعه سیزدهم، یک UTXO خاص شناسایی شد، ckBTC ضرب گردید و کاربر بلافاصله بیت‌کوین خود را برداشت کرد و آن UTXO را به مصرف رساند. در شرایط عادی، این خروجی باید از حالت ردیابی مینتر حذف می‌شد. با این حال، کمتر از ۶۰ ثانیه بعد، یک پرس‌وجو باعث فعال شدن یک کش هیت (Cache Hit) از یک حافظه پنهان محلی قدیمی شد. از آنجا که مینتر UTXO تازه مصرف‌شده را در حافظه فعال خود «فراموش» کرده بود اما دوباره آن را از حافظه پنهان قدیمی دریافت کرد، آن را به عنوان یک واریز کاملاً جدید در نظر گرفت و برای بار دوم اقدام به ضرب ckBTC نمود.

A detailed technical infographic illustrating a bl...


راهکار و تدابیر امنیتی آینده

خوشبختانه، تیم مهندسی دیفینیتی بلافاصله پس از شناسایی این ناهنجاری وارد عمل شد. عدم تطابق حافظه پنهان با هماهنگ‌سازی دقیق وضعیت چرخه عمر UTXOهای پرس‌وجوشده با دفتر کل فعال مینتر اصلاح شد؛ این کار تضمین می‌کند که وقتی یک UTXO مصرف می‌شود، دیگر هرگز نمی‌تواند به عنوان یک ورودی «تازه» تلقی شود، حتی اگر توسط یک کوئری کش‌شده بازگردانده شود.

علاوه بر این، دیفینیتی اقدامات زیر را پیاده‌سازی کرد:

  • پروتکل‌های هشدار پیشرفته: محرک‌های خودکاری که در صورت شناسایی ناهنجاری‌های عدم تطابق روی زنجیره، فرآیند ضرب را متوقف می‌کنند.
  • قوانین اعتبارسنجی سخت‌گیرانه‌تر: تایید خطوط زمانی انتقال حالت پیش از صدور درخواست‌های ضرب.

نکته بسیار مهم این است که پشتوانه ۱:۱ برای ckBTC حفظ شد و هیچ‌یک از دارایی‌های کاربران از دست نرفت. برای جامعه گسترده‌تر توسعه‌دهندگان وب۳، این کالبدشکافی نشان می‌دهد که ویژگی‌های بهینه‌سازی (مانند تجمیع UTXO) می‌توانند عوارض جانبی ظریفی در زمان‌بندی ایجاد کنند؛ موضوعی که بار دیگر ثابت می‌کند در دنیای ماشین‌های حالت بدون نیاز به اعتماد (Trustless State Machines)، قاعده «ابتدا تأیید، سپس ذخیره در حافظه پنهان» امن‌ترین مسیر رو به جلو است.

لیست منابع را برای مشاهده تجزیه و تحلیل ویدیویی کامل به‌روزرسانی‌های تحقیق و توسعه مارس ۲۰۲۶ بررسی کنید.

برچسب‌ها

#ckBTC#دیفینیتی#بلاک‌چین#اکسپلویت#توکنومیکس

منابع و ارجاعات مستند

پیشنهاد مطالعه بعدی

خوشتان آمد؟ مقاله بعدی را بگیرید

در خبرنامه عضو شوید تا راهنمای بعدی در ایمیلتان باشد — بدون مزاحمت، لغو عضویت در هر زمان.