بله، اين بچه واقعاً با دستكاري قراردادهاي هوشمند اتريوم، ۳۰۰ ميليون دلار را از بين برد!

۶ بازديد
بله، اين بچه واقعاً با دستكاري قراردادهاي هوشمند اتريوم، 300 ميليون دلار را از بين برد!Reviewed by حامد صالحيonNov 14Rating: 5.0

سال گذشته، DAO، صندوق سرمايه گذاري مستقل غير متمركز، هك شد و ۵۰ ميليون دلار را از دست داد. در جولاي(تير) ، يك هكر توانست با كشف اشكال(باگ) موجود در كيف پول هاي پاريتي(Parity)، از اتريوم ۳۱ ميليون دلار را به سرقت ببرد.
امروزه، ما هنوز هم دچار بدترين هك ها هستيم، با اين تفاوت كه سهم ها و مبالغ ها بزرگتر شده و دردسر بيشتري به همراه خواهند داشت.
دو روز پيش، كاربري به نام ‘devops199’ در گيت هابِ پاريتي ، موضوعي را مطرح كرد با اين عنوان:

“هر كسي مي تواند قرارداد شما را از بين ببرد”

كه به نظر مي رسد او با اين مطلب مي خواهد به پاريتي(شركتي كه قراردادهاي هوشمند به كاربران در شبكه ي اتريوم ارائه مي دهد) درباره ي وجود آسيب پذيري در قرارداد هوشمندش اطلاع دهد.

قرارداد هوشمندي كه او به آن اشاره دارد، مربوط به يك “قرارداد چند امضائي” مي باشد كه افراد زيادي از آن به عنوان يك “كيف پول ديجيتالي” براي ذخيره ي امن اتريوم هايشان استفاده مي كنند. اينطور كه معلوم است، اين كيف پول يك اشكال(باگ) در كدش داشته. اين باگ يا بهتر است بگوييم آسيب پذيري امنيتي به devops199 اجازه داد تا خودش را به عنوان يكي از صاحبان قرارداد جا بزند. اين آسيب پذيري به او امكان انجام تقريباً هر كاري را مي دهد.

سپس كاري كه Devops199 انجام داد، كه مي تواند يكي از پرهزينه ترين اشتباهات باشد، اين بود:

بله، اين بچه واقعاً با دستكاري قراردادهاي هوشمند اتريوم، 300 ميليون دلار را از بين برد!او قرارداد را از بين برد!
در اصل، او قابليت قرارداد هوشمند كه به مالكان اتريوم اجازه ي انتقال اتريوم هايشان مي داد، را از بين برد. او، اتريوم را در قرارداد محبوس كرد و عملاً براي هميشه آن را بلااستفاده كرد. با اين حال، اينگونه به نظر مي رسد كه او كاملاً متوجه نشده كه چه اتفاقي افتاده است.

 

بله، اين بچه واقعاً با دستكاري قراردادهاي هوشمند اتريوم، 300 ميليون دلار را از بين برد!

آيا انتقال اتريوم توسط صاحبان كار انجام مي شود؟

نه… نه!  تو پول خيلي زيادي را به فنا دادي و از بين بردي!

در اصل، هر كسي كه از اين كيف پول چند امضائي استفاده مي كند از اين به بعد نمي تواند به  اتريوم هايشان دسترسي داشته باشند. برآورد مقدار اتريوم موجود در اين قراردادها از ۱۵۰ ميليون دلار آمريكا تا ۳۰۰ ميليون دلار است.

پاريتي كه كيف پول هاي چند امضائي اش در جولاي هك شده بود، يك بار ديگر “هشدار امنيتي” صادر كرد و گفت:

“بسيار متأسفيم كه اتفاق ديروز، به ويژه با تمام گمانه زني هاي مربوط به اين موضوع، باعث نگراني بسيار و سردرگمي كاربران ما و انجمن شد. ما به رسيدگي به اين وضعيت ادامه مي دهيم و در حال بررسي تمامي راه حل ها و پيامدهاي ممكن هستيم.”

آخرين مطلبي كه از Devops199 ديديم اين بود:

بله، اين بچه واقعاً با دستكاري قراردادهاي هوشمند اتريوم، 300 ميليون دلار را از بين برد!

ارائه ي راه حل

بايد به اين نكته توجه داشت كه در واقع خود اتريوم، به طور كامل حذف نمي شود. اتريوم همچنان وجود دارد اما به سادگي قابل دسترسي نيست.
فرض كنيد ۲۸۰ ميليون دلار در صندوق امانات بانك ذخيره شده است. فردي مي تواند به نحوي وارد بانك شود و بگويد صاحب آن صندوق امانت است. او بدون هيچ مشكلي دسترسي كامل به صندوق خواهد داشت و در نتيجه مي تواند كليد آن صندوق را براي هميشه از بين ببرد. اين كليد، كاملاً منحصر به فرد است و به هيچ طريق نمي تواند مجدد توليد شود.
اما با اين وجود، براي اين مشكل، راه حلي وجود دارد. به لحظه اي برگرديم كه كليد اصلي از دست رفته، آيا مي دانيد كه اين كليد را از دست نداده ايد؟ شوخي نميكنم، با بلاكچين، اين امر واقعاً امكان پذير است.

هنگامي كه DAO، ابزار سرمايه گذاري غير متمركز، در اوايل امسال هك شد، تمامي تراكنش ها بر روي شبكه ي اتريوم برگشت خورد تا زمان هك. به عبارت ديگر تمام افراد موجود در شبكه تصميم گرفتند تا بلاكچين را به قبل از وقوع هك، يعني از آخرين بلوك، هارد فورك كنند كه البته، از لحاظ فني اين موضوع عليه قوانين شبكه اتريوم بود.
اما با انجام اين كار، تمامي تراكنش هايي كه از آن بلوك به بعد اتفاق افتاده بودند، هرگز به سرانجام نمي رسيدند از جمله خود هك. به هر حال، يك تراكنش فقط هنگامي كه در بلاكچين موجود باشد اجرا مي شود.

بله، اين بچه واقعاً با دستكاري قراردادهاي هوشمند اتريوم، 300 ميليون دلار را از بين برد!

با اين وجود هنگامي كه براي به دست آوردن مجدد وجوه از دست رفته در طول هك DAO، تصميم به هارد فورك شبكه ي اتريوم گرفته شد، بخشي از شبكه با اين تصميم موافق نبودند. اين افراد با بازگشت به آخرين بلوك قبل از هك موافق نبودند و ساختمان زنجيره ي اصلي را حفظ كردند. ناگهان، ۲ نسخه از اتريوم به وجود آمد:

اتريوم و اتريوم كلاسيك

بله، اين بچه واقعاً با دستكاري قراردادهاي هوشمند اتريوم، 300 ميليون دلار را از بين برد!

امروز، در زمان نوشتن اين مقاله، اتريوم كلاسيك هنوز هم وجود دارد و ارزش بازار آن حدود ۱٫۳ ميليارد دلار است، در حالي كه ارزش زنجيره ي اتريوم فورك شده(زنجيره اي كه هك را به عقب برگرداند) حدود ۳۰ ميليارد دلار است.
با توجه به بحث هاي اخير، بسيار بعيد به نظر مي رسد كه شبكه ي اتريوم مجدداً براي هارد فورك انتخاب شود. شايد توسعه دهندگان پاريتي بتوانند راه حل سحرآميزي براي اين مشكل بيابند اما من به شخصه ترديد دارم.

انتقاد دوباره از اتريوم

ممكن است هم اكنون زمان آن فرا رسيده باشد كه يك گام به عقب برداشته و طرح قراردادهاي هوشمند را دوباره بررسي كنيم. اين اولين باري نيست كه يك باگ در يكي از اين قراردادها منجر به در معرض خطر قرار گرفتن مبالغ هنگفت مي شود. بنياد اتريوم تمايل دارد اتريوم را بزرگ جلوه دهد، چرا كه يك پلتفرم قرارداد هوشمند، يك تورينگ كامل(turing-complete) است و اين يعني تقريباً هر چيزي را مي توان بر روي آن كدگذاري كرده و به آن اعمال كرد.

بله، اين بچه واقعاً با دستكاري قراردادهاي هوشمند اتريوم، 300 ميليون دلار را از بين برد!

تاكنون، اين انتخاب خاص طراحي باعث شده بيش از نيم ميليارد دلار به هر طريقي به خطر افتد

كامل بودن تورينگ، همواره منجر به آسيب پذيري مي شود، زيرا قدرت يك قرارداد به طور طبيعي به توانايي توسعه دهنده آن بستگي دارد. از هر توسعه‌دهنده اي بپرسيد كه چند وقت يكبار كدهايي كه مي نويسد، دانسته يا ندانسته به طور تصادفي شامل باگ هاي مختلفي است، ممكن است درك كنيد كه چرا كل مفهوم قراردادهاي هوشمند « turing-complete» بدون مميزي به طور وحشتناكي، زماني كه پاي پول هنگفتي در ميان است، خطرناك است.

بله، اين بچه واقعاً با دستكاري قراردادهاي هوشمند اتريوم، 300 ميليون دلار را از بين برد!

گاوين وود (Gavin Wood)

انتخاب هاي طراحي، پيامدهايي به دنبال دارد و در برخي موارد زمان آن است كه آن ها را مجدد ارزيابي كنيم. به عنوان مثال، براي يك پلتفرم عقد قرارداد هوشمند اين منطقي است كه فقط گسترش قراردادهاي هوشمندِ از قبل تست شده را كه شده توسط متخصصان بررسي شده، مجاز بداند.
البته، اين يك فرآيندِ بسيار متمركز در يك سيستم غير متمركز است. و قطعاً معيارهاي بسياري در پسِ طراحي يك پلتفرم قرارداد هوشمند وجود دارد. اين سبك سنگين كردن ها ارزش فكر كردن دارند زيرا اگر هيچ چيز تغيير نكند، اتريوم همواره توسط مسائل امنيتي به دردسر خواهد افتاد.
حاميان اتريوم معتقدند كه نبايد اين پلتفرم را براي اشتباهاتي كه توسعه دهندگان قرارداد هوشمند داشته اند، سرزنش كرد و تا حدودي نيز اين صحبت درست است. با اين حال، فراموش نكنيد كه پاريتي توسط نوجواني ناشناس، نابالغ و فاقد صلاحيت اجرا نشده و اولين قرارداد هوشمند او هم محسوب نمي شود، نه، پاريتي توسط خود گاوين وود (Gavin Wood)، يكي از بنيانگذاران اتريوم، بنا نهاده شده است.
اگر قراردادهاي هوشمند او همواره چنين كاستي هايي دارند پس چگونه ايمن ترين قراردادهاي هوشمند تورينگ كامل در آينده خواهند بود؟

 

 

 

نظر شما درباره اين موضوع چيست؟ آيا اين باگ هاي مهلك آخرين نوع از دست خواهد بود؟ راه حل جلوگيري از اين قبيل حوادث چيست؟ نظرات و ايده هاي خود را با ما در ميان بگذاريد

 

 

منبع: hackernoon

بله، اين بچه واقعاً با دستكاري قراردادهاي هوشمند اتريوم، ۳۰۰ ميليون دلار را از بين برد!

تا كنون نظري ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در مونوبلاگ ثبت نام کرده اید می توانید ابتدا وارد شوید.