حملات «سهام جعلی» در زنجیره‌های مبتنی بر اثبات سهام

روش اجماع اثبات سهام دو آسیب‌پذیری خطرناک دارد که به تازگی توسط تیمی از دانشجویان دانشگاه ایلینوی کشف شده است. این آسیب‌پذیری‌ها بر بیش از ۲۶ رمز ارز مبتنی بر این روش اجماع اثر گذاشته‌اند. در این مطلب می‌خواهیم به تشریح علت به وجود آمدن این آسیب‌پذیری‌ها و تشریح شرایط رمز ارزهای تحت تاثیر آن‌ها بپردازیم.

0 94

این مقاله نتیجه‌ مجموعه‌ای از تحقیقات گسترده است که توسط تیمی از دانشجویان دانشگاه ایلینوی در اربانا-شمپین انجام شده است. این تحقیقات با تمرکز بر آسیب‌پذیری‌های سیستم‌های غیرمتمرکز موفق به کشف آسیب‌پذیری‌هایی شده که بر بیش از ۲۶ رمز ارز مبتنی بر روش اثبات سهام اثر گذاشته و به مهاجم اجازه داده‌اند تا با در اختیار داشتن سهام بسیار کمی از شبکه کل سیستم‌هایی که از آن نسخه از نرم‌افزار استفاده می‌کردند را از کار بیندازند. ما در ماه اوت ۲۰۱۸ اطلاع رسانی به تیم‌های مختلف توسعه‌ رمز ارزهای مذکور را شروع کردیم. و حالا اکثر آن‌ها این مشکل را برطرف کرده‌اند.

رمز ارزهای مبتنی بر روش اثبات سهام (PoS)، خصوصا آن‌هایی که از سیستم PoSv3 مبتنی بر زنجیره استفاده می‌کنند، مثل بیت کوین کارشان با مدل UTXO و قوانین اجماع بلندترین زنجیره انجام می‌شود. تنها تفاوت عمده‌ این رمز ارزها با بیت کوین این است که این‌ها به جای اثبات کار از روش اثبات سهام استفاده می‌کنند. مزایای بالقوه‌ رویکرد PoS چیزهای مختلفی از کاهش اثرات زیست‌محیطی تا امنیت بهتر در مقابل حملات ۵۱ درصد را در بر می‌گیرد. خیلی از رمز ارزها در واقع انشعابی از کد پایه‌ بیت کوین هستند که در آن‌ها اثبات کار با اثبات سهام جایگزین شده است. اما برخی ایده‌های بیت کوین را بدون توجه کافی به ایمنی شبیه‌سازی کرده‌اند و در نتیجه آسیب‌پذیری‌هایی به وجود آمده که اثری از آن‌ها در کد اصلی دیده نمی‌شود.

ما به این آسیب‌پذیری‌ها حملات «سهام جعلی» می‌گوییم. علت اصلی پدید آمدن این حملات به خاطر این است که PoSv3 پیش از تخصیص منابع ارزشمند سیستم، به میزان لازم اطلاعات شبکه را بررسی نمی‌کند. متعاقبا مهاجم بدون در اختیار داشتن سهام زیاد (در برخی موارد بدون هیچ سهامی) می‌تواند با اشغال کردن دیسک یا رم سیستم با اطلاعات بیهوده باعث از کار افتادن گره قربانی شود. ما باور داریم که همه‌ رمز ارزهایی که از مدل UTXO و اثبات سهام بلندترین زنجیره استفاده می‌کنند در برابر حملات «سهام جعلی» آسیب‌پذیر هستند. در انتهای مقاله فهرست رمز ارزهایی را قرار داده‌ایم که پس از بررسی به این نتیجه رسیدیم که تحت تاثیر این آسیب‌پذیری بوده‌اند.

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

پس‌زمینه

پیش از ورود به جزئیات بحث آسیب‌پذیری‌ها، می‌خواهیم شما را با بخش‌هایی از عملکرد سیستم اثبات سهام مبتنی بر زنجیره آشنا کنیم که به بحث ما مرتبط است.

استخراج اثبات سهام

مشابه استخراج اثبات کار، استخراج اثبات سهام هم از مقایسه‌ هش بلاک هدر (Header) با سطحی از دشواری شکل می‌گیرد. هدف اصلی اثبات سهام این است که مطمئن شویم شانس هر سهامدار برای استخراج بلاک بعدی متناسب با تعداد کوین‌هایی است که در اختیار فرد قرار دارد. برای دستیابی به این هدف، هش در زنجیره‌های مبتنی بر اثبات سهام نه فقط بر هدر بلاک، بلکه به کمیت کوین‌هایی وابسته است که از طریق تراکنشی موسوم به تراکنش «سهام کوین» توسط سهامدار در بلاک درج گردیده است. در این جا قصد نداریم به جزئیات روش استخراج PoS بپردازیم، ولی آن چه که برای ما اهمیت دارد این است که بررسی اثبات سهام به دو چیز بستگی دارد: ۱) تراکنش سهام کوین و ۲) UTXO-ای که توسط تراکنش سهام کوین خرج می‌شود.

نقش اثبات کار در محافظت از منابع اعتبارسنجی بلاک

همه‌ ما می‌دانیم که اثبات کار نقش مهمی در الگوریتم اجماع بیت کوین بازی می‌کند. ولی این پروتکل نقش دیگری هم دارد که معمولا دست کم گرفته می‌شود، و آن محافظت از دسترسی به منابع محدود گره‌ها مثل دیسک، پهنای باند، حافظه و CPU است. در یک شبکه‌ رمز ارزی بدون مجوز، نیازی به اعتماد وجود ندارد. در نتیجه برای جلوگیری از حمله‌ی اتلاف منابع، گره‌های بیت کوین پیش از تخصیص منابع بیشتر ابتدا باید از طریق PoW به دنبال بلاک‌های دریافتی بگردند. با این حال، این طور که پیداست، بررسی اثبات سهام خیلی پیچیده‌تر و حساس‌تر از اعتبارسنجی اثبات کار است. از این رو، خیلی از پیاده‌سازی‌های اثبات سهام مبتنی بر زنجیره به راحتی از اعتبارسنجی‌های مناسب عبور می‌کنند.

برای این که بدانید این پروسه چگونه باعث به وجود آمدن آسیب‌پذیری اتلاف منابع می‌شود، ابتدا باید به شما بگوییم که بلاک‌ها چطور پیش از تایید شدن ذخیره می‌شوند. یک گره نه تنها باید تاریخچه‌ بلندترین زنجیره را در لحظه حفظ کند، بلکه باید از درخت زنجیره‌های انشعابی نیز محافظت نمایند (چون هر کدام از آن‌ها می‌تواند به بلندترین زنجیره تبدیل شود، و در آن صورت گره مجدداً باید سازماندهی شود تا بتواند به آن زنجیره سوئیچ کند). این اتفاق مثلا می‌تواند در طول یک آپگرید بدون دقت یا حمله‌ی double spending اتفاق بیفتد.

اعتبارسنجی بلاک‌های خارج از زنجیره‌ اصلی دشوار است. برای اعتبارسنجی کامل بلاک به مجموعه‌ی کوین‌های خرج‌نشده (UTXOs) در زمان بلاک قبلی نیاز دارید. بیت کوین مجموعه‌ UTXO را فقط برای بخش انتهایی زنجیره‌ برتر نگه می‌دارد، بنابراین در سایر بلاک‌های قبلی که انشعاب ممکن است از آن‌جا آغاز شده باشد چنین چیزی وجود ندارد. دو رویکرد عمده برای اعتبارسنجی کامل بلاک‌های یک انشعاب وجود دارد:

۱. برگرداندن نمای فعلی (مجموعه‌ی UTXO) به زمانی که هنوز انشعاب شروع نشده بود

۲. ذخیره‌سازی نسخه‌های مجموعه‌ی UTXO برای همه‌ی بلاک‌های قبلی

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

کد پایه‌ بیت کوین پیش از ذخیره‌سازی بلاک در دیسک، چند اعتبارسنجی مقدماتی بر اساس PoW انجام می‌دهد (ولی تراکنش‌ها را نادیده می‌گیرد). این بررسی مقدماتی فقط به هدر بلاک قبلی و هدر فعلی وابسته است، بنابراین گره‌ها به سرعت می‌توانند این کار را انجام دهند. این روش یک سیستم دفاعی موثر است چون ساختن اثبات کار معتبری که این نتیجه را بفرستد هزینه‌ زیادی دارد. برای مثال، هرچند می‌توانید گره‌های بیت کوین را وادار کنید که بلاک‌های نامعتبر را روی دیسک ذخیره کنند، اما انجام یک حمله‌ اتلاف انرژی با این روش بسیار پرهزینه است.

مشابه سیستم قبلی، بررسی مقدماتی در PoS هم برای اعتبارسنجی تراکنش سهام کوین انجام می‌شود و بررسی می‌کند تا ببیند آیا دشواری هدف در هنگام هش شدن کرنل بلاک قبلی انتقال یافته یا نه. پردازش تراکنش سهام کوین آسان است، اما بخش سخت ماجرا این است که ببینیم آیا UTXO ورودی در تراکنش سهام کوین معتبر است یا نه، چون برای انجام این کار باید مجموعه‌ی UTXO را بررسی کنیم و همان طور که قبلا گفتیم این شیوه برای بلاک‌های قبلی موجود نیست. از آن‌جایی که اعتبارسنجی تراکنش سهام کوین سخت است، اکثر سیستم‌های اثبات سهام مبتنی بر زنجیره از بررسی‌های غیرمستدل یا تقریبی استفاده می‌کنند. اما این طور که پیداست این تخمین‌زنی‌ها اغلب اوقات کافی نیست و باعث آسیب‌پذیری می‌شود.

آسیب‌پذیری اول: «باورم نمی‌شود که این سهام نیست»

وقتی برای اولین بار این مشکل را بررسی کردیم، فهمیدیم که پنج رمز ارز به نام‌های Qtum, Particl, Navcoin, HTMLcoin و Emercoin به شکل جزئی از این آسیب‌پذیری رنج می‌برند؛ یعنی پیش از ارسال بلاک به رم یا دیسک، به هیچ عنوان نمی‌توانند تراکنش‌های سهام کوین را بررسی کنند. وجه اشتراک این پنج رمز ارز پذیرش قابلیت «اول هدر» در بیت کوین است که طی آن انتشار بلاک به دو پیغامِ بلاک و هدر تقسیم می‌شود. گره‌ها تنها زمانی به دنبال بلاک می‌گردند که هدر از بررسی PoW عبور کرده باشد و زنجیره‌ حاضر بلندترین زنجیره باشد. با توجه به این که تراکنش سهام کوین نه در هدر بلکه فقط در بلاک حاضر است، یک گره به خودی خود نمی‌تواند هدر را اعتبارسنجی کند. در عوض، هدر به طور مستقیم در یک ساختار اطلاعاتی درون-حافظه‌ای (mapBlockIndex) ذخیره می‌شود. در نتیجه، مهاجم حتی بدون داشتن سهام هم می‌تواند رم گره قربانی را بیهوده اشغال کند.

گونه‌ دوم این حمله مشابه گونه‌ی اول است، اما کمی متفاوت عمل می‌کند و منبع دیگری را هدف قرار می‌دهد. در این حمله به جای رم، حافظه‌ی دستگاه مورد هدف قرار می‌گیرد. اساسا حمله‌ای که به دیسک انجام می‌شود صدمات بیشتری به قربانی وارد می‌کند. چون اگر رم پر شود، کافی است دستگاه را مجدداً راه‌اندازی کنیم تا مشکل حل شود. اما اگر دیسک پر شود، لازم است خودمان دست به عمل شویم (و مثلا اسکریپتی را اجرا کنیم تا بلاک‌های قدیمی از روی دیسک حذف شود).

سایر بررسی‌های مقدماتی به جای این که در هنگام دریافت هدر انجام شود، پس از دریافت بلاک صورت می‌گیرد. در حالت ایده‌آل، از آن‌جایی که بلاک حاوی تراکنش سهام کوین است، نرم‌افزار گره باید پیش از ثبت بلاک در دیسک، تراکنش سهام کوین را بررسی کند. با این حال، همان طور که قبلا گفته شد اگر بلاک در یک انشعاب قرار داشته باشد، هیچ راه ساده‌ای برای دسترسی گره به UTXO-ای که توسط تراکنش سهام کوین خرج شده وجود نخواهد داشت. شاید به همین دلیل است که در این‌جا تراکنشِ سهام کوین دیگر اعتبارسنجی نمی‌شود.

سوء استفاده از این آسیب‌پذیری‌ها بدون در اختیار داشتن سهامی از رمز ارزهای مذکور قابل انجام است. حمله به رم آن قدرها مشکل‌ساز نیست، اما حمله به دیسک، به دلایل فنی، مستلزم مراقب و دقت بیشتری است.

آسیب‌پذیری دوم و حمله سهام خرج‌شده (Spent Stake attack)

با بررسی سابقه‌ی کدها دریافتیم که آسیب‌پذیری اول نخستین بار در هنگام ادغام قابلیت «اول هدر» در کد PoSv3 به وجود آمد. این حمله در نسخه‌های اولیه‌ی رمز ارزها کار نمی‌کند چون پیش از ذخیره‌سازی بلاک‌ها در دیسک، دو بررسی مقدماتی اضافه وجود دارد:

۱. بررسی کن اگر خروجیِ مصرفی در زنجیره‌ی اصلی وجود دارد.

۲. بررسی کن اگر هش کرنل PoS با دشواری هدف مطابقت دارد.

بررسی اول با نگاهی به پایگاه داده‌ی تراکنش (TxDB) انجام می‌شود؛ این پایگاه داده تاریخچه‌ی همه‌ی تراکنش‌های زنجیره‌ی فعلی را نگه می‌دارد. به عبارت دیگر، اعتبارسنجی مقدماتی بهتر از این است که هیچ اعتبارسنجی نداشته باشیم. اگر توضیحات را تا این‌جا دنبال کرده باشید، احتمالا در حال حاضر دو نگران عمده برایتان پیش آمده است:

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

نگرانی دوم: حتی اگر بلاکی را روی انشعابی از زنجیره‌ی اصلی اعتبارسنجی کنیم، تراکنش سهام کوین در مقایسه با TxDB برای خود زنجیره‌ی اصلی تایید می‌شود.

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

فزون‌سازی سهام (Stake Amplification)

مهاجم برای انجام حمله با استفاده از مقدار کمی سهام، باید میزان سهام‌های ظاهری خود را افزایش دهد. منظور از سهام ظاهری همان مجموع خروجی سهام کاندیداست و حتی سهام‌های خرج‌شده را هم در بر می‌گیرد. اگر مهاجم کار خود را با یک UTXO از مقدار k آغاز کند، می‌تواند مثل تصویر زیر چند تراکنش برای مصرف کوین‌ها برای خودش بسازد. در این صورت، فقط n+1)UTXO) قادر به ایجاد سهام است، اما به خاطر وجود بررسی دوم می‌توانیم با همه‌ UTXO از 1 تا n+1 سهام بسازیم، و در نتیجه سهام ظاهری را از طریق n*k افزایش دهیم. این کار به افزایش احتمال یافتن بلاک PoS می‌انجامد، چون مهاجم می‌تواند دائما این کار را انجام دهد تا سهام ظاهری خود را بالا ببرد. این اتفاق تحت عنوان «گام فزون‌سازی سهام» در سمت چپ تصویر زیر نمایش داده شده است:

UTXO

برای مثال، حتی اگر مهاجم تنها ۰.۰۱ درصد سهام داشته باشد، او فقط به ۵۰۰۰ تراکنش نیاز دارد تا با ۵۰ درصد از توان سهام ظاهری خود بتواند بلاک استخراج کند. بعد از این که مهاجم به میزان لازم سهام ظاهری گردآوری کرد، وی حالا با استفاده از خروجی سهام‌های ظاهریِ گردآوری‌شده می‌تواند به استخراج بلاک‌های PoS بپردازد. سرانجام، همان طور که در سمت راست تصویر بالا پیداست، مهاجم دیسک قربانی را با بلاک‌های نامعتبر پر می‌کند. بگذارید مثالی بزنیم: مهاجم می‌تواند از یک صرافی کوین بخرد، بعد همان طور که گفتیم سهام خود را افزایش دهد، و در انتها کوین‌ها را بفروشد و هر زمان که خواست حمله‌اش را انجام دهد. در این صورت، تنها هزینه‌ای که روی دست مهاجم باقی می‌ماند، هزینه‌ی خود تراکنش‌هاست.

افشای آسیب‌پذیری

ما ابتدا آسیب‌پذیری اول را در رمز ارز Particl و Qtum بررسی کردیم. برای تعیین میزان این آسیب‌پذیری، فهرستی از رمز ارزهای معروف را که از اجماع PoS استفاده می‌کنند، به ترتیب ارزش بازار آن‌ها، از وبسایت coinmarketcap.com استخراج کردیم. البته ما فقط رمز ارزهایی را انتخاب کردیم که کد پایه‌ی آن‌ها انشعابی از بیت کوین بود، یعنی به زبان C++ نوشته شده بود. در مجموع، بعد از بررسی ۲۶ رمز ارز مختلف به این نتیجه رسیدیم که فقط پنج رمز ارز Qtum, Navcoin, HTMLcoin, Emercoin و Particl تحت تاثیر این آسیب‌پذیری قرار گرفته‌اند. سپس برای اطمینان سعی کردیم خودمان این حمله را روی پایگاه داده‌ی پنج رمز ارز فوق انجام دهیم. در نتیجه از پکیج‌های آزمایشی موجود برای نرم‌افزار بیت کوین، خصوصاً Regtest، استفاده کردیم تا بتوانیم مهرهای زمانی را شبیه‌سازی کنیم، به راحتی بلاک‌ها را بسازیم، و گرهی مبتنی بر پایتون داشته باشیم که از خصوصیات مهاجمان واقعی برخوردار باشد. ما برای بسته‌بندی این آزمایش‌ها، ابزارهای وابسته به آن‌ها، و هش‌های خاصی که تحت تاثیر این کیت بازتولید قرار گرفته‌اند، از ظرف Docker استفاده کردیم تا به راحتی بتوانیم تیم توسعه‌دهندگان این رمز ارزها را در جریان آسیب‌پذیری پروژه آن‌ها قرار دهیم.

سپس عمیق‌تر شدیم تا دریابیم که چرا سایر رمز ارزها مستعد این حمله نیستند. این‌جا بود که متوجه شدیم آسیب‌پذیری دوم تقریباً به اندازه‌ی آسیب‌پذیری اول خطرناک است، اما فراگیری بسیار بیشتری دارد. در مرحله‌ برنامه‌ریزی برای انتشار مسئولانه‌ این آسیب‌پذیری‌ها، می‌دانستیم که افشای این مسئله بر رمز ارزهایی که فعالیت‌های اقتصادی کمی دارند و از نیروی انسانی فعالی برخوردار نیستند می‌تواند اثر معکوس داشته باشد (ریسک قضیه این بود که اگر این آسیب‌پذیری افشا می‌شد و مهاجم پیش از تیم توسعه‌دهندگان دست به کار می‌شد، ممکن بود اوضاع وخیم‌تر از حال حاضر شود). در نهایت، تصمیم گرفتیم توجه‌مان را به ارتباط با ۱۵ تیم توسعه‌ای معطوف کنیم که در رمز ارزهایی نقش داشتند که به احتمال زیاد تحت تاثیر این حملات قرار گرفته بودند.

یکی از مؤلفه‌های که این مسئله را پیچیده‌تر می‌کرد این بود که اکثر این کدهای پایه از حالت Regtest برخوردار نبودند، در نتیجه به راحتی نمی‌توانستیم این حمله را به آن‌ها نشان دهیم یا برایشان کیت بازتولید فراهم کنیم. پس به نمایش کد پایه‌ی stratisX بسنده کردیم. با توجه شباهت میان کد پایه‌ی این پروژه‌ها، به تیم‌هایی که احساس می‌کردیم تحت تاثیر این آسیب‌پذیری قرار گرفته‌اند خبر دادیم. از این میان، پنج تیم آسیب‌پذیری را پذیرفت، سه تیم هنوز مشغول بررسی است، سه تیم آن را رد کرد (آن‌ها گفتند تغییراتی داشته‌اند که این مشکل را برطرف کرده)، و چهار تیم دیگر هیچ پاسخی به ما ندادند.

اقدامات اصلاحی

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

برخی از رمز ارزها تا نقطه‌ای ثابت فرآیند اضافه‌ای برای اعتبارسنجی به سیستم خود اضافه کرده‌اند. به این صورت که اگر یک گره بلاکی را دریافت کند که از بعد از نقطه‌ی مشخص‌شده از زنجیره‌ی اصلی منشعب شده باشد، آن بلاک از رده خارج می‌شود. از این روش مثلاً در بیت کوین کش استفاده می‌شود که از یک نقطه‌ی بررسی چرخشیِ ۱۰ بلاکی استفاده می‌کند. ایراد این رویکرد این است که در آن احتمال «تقسیم زنجیره» به وجود می‌آید. تقسیم زنجیره زمانی رخ می‌دهد که گره‌های صادق به شاخه‌های مختلف بلاکچین رفته باشند. برای نمونه، این اتفاق زمانی می‌افتد که ارتباطات ضعیف شبکه باعث شود گره‌ها دیگر برای مدتی طولانی با هم سینک نباشند و در نتیجه‌های نقطه‌های بررسی متداخل به وجود بیاید. حتی اگر گره‌ها دوباره ارتباط خود را به دست بیاورند، دیگر نمی‌توانند به زنجیره‌ مشترک و مورد توافق یکدیگر برسند. بر اساس مشاهدات ما، حتی بدون این تغییر هم احتمال جدا شدن زنجیره وجود دارد. اگر نگرانی دوم را به خاطر بیاورید، با توجه به این که تراکنش سهام کوین با استفاده از خروجی تراکنش در زنجیره‌ی فعلی معتبر شناخته شده، اگر یک گره خودش را به صورت موقت روی یک انشعاب ببیند، ممکن است نتواند به زنجیره‌ اصلی برگردد.

تقسیم زنجیره هم مسیرهای جدیدی برای حمله در اختیار گره‌های متخاصم قرار می‌دهد. مهاجم می‌تواند به طور مخفیانه سعی کند یک زنجیره‌ بلند را استخراج نماید و بعد برای تقسیم زنجیره آن را به مجموعه‌ای از گره‌ها بفرستد. گره‌هایIBD,گره‌هایی که تازه بعد از مدت‌ها خاموش بودن شروع به کار کرده‌اند، به طور ویژه در برابر این حمله آسیب‌پذیرند. چنین حملاتی می‌تواند در ترکیب با حملات اکلیپس انجام شود تا گره‌های صادق را به زنجیره‌ی تحت کنترل مهاجم بفرستد.

همه‌ این اصلاحات باعث می‌شود انجام حمله دشوارتر شود، اما همچنان هیچ جایگزینی برای اعتبارسنجی کامل وجود ندارد. بعضی از رمز ارزها مثل Qtum می‌خواهند امکان اعتبارسنجی کامل بلاک‌ها را در آینده فراهم کنند.

کاربرانی که از رمز ارزهای تحت تاثیر این آسیب‌پذیری استفاده می‌کنند باید گره‌های خود را به جدیدترین آپدیت نرم‌افزار شبکه به‌روز کنند و بدانند که اگر این کار را انجام ندهند ممکن است مورد حمله‌ی رم یا دیسک قرار بگیرند و سیستم آن‌ها کرش کند.

جدول پایین رمز ارزهایی را نشان می‌دهد که باور داریم تحت تاثیر یکی از دو آسیب‌پذیری فوق‌الذکر بوده‌اند. ما هنوز همه‌ی رمز ارزها را بررسی نکرده‌ایم، و نمی‌دانیم پروژه‌هایی که ادعای ما را رد کردند چطور به این مشکل دچار نشده‌اند.

کلام آخر

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

اگرچه به تازگی گزارش مشکلاتی را داشتیم (مثلا CVE 2018–17144 در بیت کوین) که حداقل بر روی دو کد پایه اثر می‌گذاشت، ولی تا جایی که می‌دانیم این اولین باری است که یک آسیب‌پذیری در چنین سطحی از اثرگذاری روی رمز ارزها افشا می‌شود. با توجه به گرته‌برداری ایده و استفاده‌ی مشترک از کدها در دنیای رمز ارزها، انتظار داریم در آینده نیز شاهد آسیب‌پذیری‌های بیشتری از این نوع باشیم. نکته جالب اما این است که شمار بسیار کمی از این پروژه‌ها از پروسه‌های امنیتی یکسانی استفاده می‌کنند. مثلاً اکثر آن‌ها هیچ بستر ارتباطی ویژه‌ای برای بخش امنیت خود ندارند. در نتیجه اگر چنین سازوکاری مهیا شود، کل اکوسیستم رمز ارزها می‌تواند از فواید آن بهره‌مند شود.

شاید از این مطالب هم خوشتان بیاید.

ارسال پاسخ

آدرس ایمیل شما منتشر نخواهد شد.