بنیاد XRP Ledger و RippleX در تاریخ ۹ اکتبر فاش کردند که یک آسیبپذیری امنیتی حیاتی در این شبکه برطرف شده است. این نقص که به سال ۲۰۱۵ بازمیگردد، میتوانست به مهاجمان اجازه دهد تا با یک تراکنش خاص، مقادیر عظیمی XRP، فراتر از عرضه کل ۱۰۰ میلیاردی آن، ایجاد کنند.
توسعهدهندگان پس از دریافت گزارش، این مشکل را در محیط آزمایشی بازسازی کرده و با انتشار نسخه ۳.۴.۱ آن را برطرف نمودند. تحقیقات آنها نشان داد که هیچ مدرکی دال بر سوءاستفاده از این نقص در شبکههای عمومی وجود ندارد.
آسیبپذیری چگونه کار میکرد؟
این آسیبپذیری در موتور پرداخت XRP Ledger وجود داشت و از یک خطای «سرریز عدد صحیح» (integer overflow) در کدی که در سال ۲۰۱۵ نوشته شده بود، نشأت میگرفت. این خطا زمانی رخ میدهد که یک محاسبه، عددی بزرگتر از ظرفیت ذخیرهسازی سیستم کامپیوتری تولید کند.
در این سناریو، یک مهاجم میتوانست صدها سفارش (offer) با قیمتهای خاص در دفتر سفارشات صرافی غیرمتمرکز شبکه ایجاد کند. سپس با یک تراکنش پرداخت واحد، تمام این سفارشها را مصرف میکرد. هنگامی که مجموع مبلغ بدهی خریدار از حداکثر مقدار قابل محاسبه توسط یک عدد صحیح ۶۴ بیتی فراتر میرفت، عدد به اصطلاح «دور میزد» و به یک مقدار بسیار کوچک تبدیل میشد.
با این حال، سیستم همچنان مبالغ کامل XRP را به فروشندگان واریز میکرد، در حالی که خریدار تنها مبلغ کاهشیافته ناشی از سرریز را پرداخت کرده بود. این تفاوت باعث ایجاد XRP جدیدی میشد که قبلاً وجود نداشت و این توکنهای جدید قابل انتقال، معامله یا ارسال به صرافیها بودند.
به گفته توسعهدهندگان، این آسیبپذیری از طریق معاملات عادی قابل فعالسازی نبود و به یک حمله پیچیده با صدها حساب و تراکنشهای دستکاریشده نیاز داشت.
کشف نقص و پاداش ۲۵۰ هزار دلاری
این آسیبپذیری پس از آنکه محقق امنیتی، کیدن لیائو (Cayden Liao) و شرکت Veria AI نرمافزار متنباز XRP Ledger را آزمایش کردند، مورد توجه توسعهدهندگان قرار گرفت.
شرکت Veria Labs در ۱۰ اکتبر یافتههای خود را منتشر کرد و توضیح داد که چگونه سیستم تست خودکار آنها در ۲۱ سپتامبر این مشکل را کشف کرد. آنها روز بعد یک اثبات مفهوم (proof of concept) کاربردی را در یک شبکه آزمایشی محلی توسعه دادند.
این نمایش نشان داد که میتوان حدود ۱۸ تریلیون XRP را از طریق یک تراکنش خاص ایجاد کرد؛ مقداری معادل ۱۸۴ برابر کل عرضه XRP. البته این رقم تنها نتیجه آزمایشهای کنترلشده بود و به معنای افزایش واقعی عرضه در گردش این ارز دیجیتال نیست. لیائو این آسیبپذیری را در ۲۲ سپتامبر از طریق برنامه رسمی پاداش در ازای کشف باگ (bug bounty) گزارش داد.
پس از تأیید پیامدهای بالقوه، شدت این آسیبپذیری از «عمده» به «حیاتی» ارتقا یافت. به دلیل گزارش مسئولانه این موضوع، حداکثر پاداش برنامه یعنی ۲۵۰ هزار دلار به کیدن لیائو و Veria AI تعلق گرفت.
بهروزرسانی اضطراری خارج از روال معمول
مهندسان RippleX بین ۲۲ و ۲۳ سپتامبر یک اصلاحیه برای این مشکل توسعه دادند. این پچ در نسخه ۳.۴.۱ نرمافزار xrpld گنجانده و در ۲۵ سپتامبر منتشر شد.
توسعهدهندگان تصمیم گرفتند این اصلاحیه را فوراً و بدون طی کردن فرآیند استاندارد تأیید اصلاحیهها (amendment) اعمال کنند. فرآیند معمول نیازمند دو هفته حمایت بیش از ۸۰٪ ولیدیتورها است، اما انتظار در این مدت میتوانست آسیبپذیری را پس از افشا شدن، در معرض خطر سوءاستفاده قرار دهد.
این رویکرد اضطراری با هماهنگی ولیدیتورها و سایر مشارکتکنندگان اکوسیستم انجام شد و تا ۲۵ سپتامبر، بیش از ۸۰٪ ولیدیتورها نرمافزار خود را بهروزرسانی کردند و خطر برطرف شد.
رفع یک نقص دیگر مربوط به ویژگی Batch
در گزارش ۹ اکتبر، به یک آسیبپذیری دیگر نیز اشاره شد که مربوط به ویژگی «Batch» در XRP Ledger بود. این ویژگی به توسعهدهندگان اجازه میدهد تا حداکثر هشت تراکنش را در یک عملیات واحد ترکیب کنند.
محققان یک خطای اعتبارسنجی را کشف کردند که میتوانست باعث اختلاف نظر بین نسخههای مختلف سرورها و در نتیجه توقف موقت شبکه شود. این مشکل قبل از فعالسازی ویژگی Batch بر روی شبکه اصلی شناسایی و با اصلاحیه fixBatchV1_2 برطرف شد. این ویژگی به همراه اصلاحیه آن در ۹ اکتبر با موفقیت فعال شد و هیچ سرمایهای از کاربران در معرض خطر قرار نگرفت.
اطلاعات ارائه شده در این مقاله صرفاً برای اهداف اطلاعاتی و آموزشی است و نباید به عنوان مشاوره مالی، سرمایهگذاری یا حقوقی تلقی شود. ما توصیه میکنیم قبل از انجام هر گونه سرمایهگذاری، تحقیقات مستقل انجام دهید و با یک مشاور مالی یا حقوقی مشورت کنید.