شرکت تحقیقاتی ISE به تازگی متوجه شده است که هکرها میتوانند با سوء استفاده کردن از کلیدهای خصوصی ضعیف در شبکه اتریوم، از کیف پولهای کاربران، اتر سرقت کنند.
اوایل این هفته، شرکت (Independent Security Evaluators (ISE، یک شرکت مشاور امنیتی در آمریکا، گزارشی در مورد کلیدهای خصوصی بلاکچین اتریوم ارائه کرد.
پژوهشگران این شرکت حدود ۷۰۰ کلید خصوصی ضعیف پیدا کردند که افراد زیادی از آنها استفاده میکنند ولی نکته جالبتر این بود که آنها هکری را پیدا کردند که شبیه به راهزنها توانسته با حدس زدن کلیدهای خصوصی ضعیف، تقریبا ۴۵۰۰۰ اتر (ETH) سرقت کند. Cointelegraph با آدریان بدنارک، تحلیلگر ارشد امنیتی ISE، مصاحبه کرد تا اطلاعات بیشتری درباره آنچه که آنها به عنوان «ethercombing» توصیف میکنند، پیدا کند.
سابقه تحقیقات و یافتههای اصلی
بدنارک میگوید او این هکر را به شکل تصادفی کشف کردهاست. در آن زمان، او در حال انجام تحقیقاتی برای یکی از مشتریهای شرکت بوده است که میخواست کیف پولی احتصاصی با یک الگوریتم تولید کلید داشته باشد.
او به Cointelegraph گفت:
«به عنوان یک تحلیلگر امنیتی قبل از اینکه ارزیابی را شروع کنید، باید فناوریهای اساسی را به وضوح درک کنید، در حدی که انگار خودتان خالق آنها هستید. تولید کلید خصوصی یکی از قسمتهایی بود که باید در موردش تحقیق میکردیم و من اصول اولیه کلید خصوصی در اتریوم را بررسی میکردم: چقدر بزرگ است؟ چگونه تولید میشود؟ و چگونه از کلید عمومی و آدرس عمومی به دست میآید؟»
در اتریوم، بیتکوین (BTC) یا هر بلاکچین دیگری که از ECDSA (پروتکل امضای دیجیتالی منحنی بیضوی) پشتیبانی میکند، کلیدهای خصوصی به صورت اعداد ۲۵۶ بیتی نمایش داده میشوند. ISE این 256 را به 8 ناحیه ۳۲ بیتی تقسیم کرد زیرا حمله brute force در فضای کلیدی ۲۵۶ بیتی از لحاظ آماری تقریباً غیرممکن است.
این هشت ناحیه شامل ۳۴ میلیارد کلید ضعیف بودند که بعدا توسط ISE اسکن شدند؛ این کار یک روز کامل طول کشید.
لازم به ذکر است که این کلیدها به دلیل نامناسب بودن کد تولیدکننده کلید یا کد تولیدکننده اعداد تصادفی به وجود میآیند و پژوهشگرها نیز دقیقاً همین کلیدهای ضعیف را هدف گرفته بودند.
این تحلیلگر امنیتی در حالی که اصول اولیه را توضیح میداد، گفت:
«کلید خصوصی در واقع همزمان نقش شناسه کاربری و گذرواژه را بازی میکند. این حالت برخلاف حساب بانکی است که یک شناسه کاربری دارد و یک رمز عبور. بنابراین، وقتی دو نفر از عبارت اولیه یکسانی برای ساختن کلید خصوصی خود استفاده کنند (برخی کیف پولها از کاربر میخواهند عبارت اولیهای برای ساختن کلید خصوصیاش وارد کند که به عنوان seed در الگوریتم تولیدکننده عدد تصادفی استفاده میشود)، کلید خصوصی کاملاً یکسانی دریافت میکنند. مثلا اگر هر دو نفر عبارت password123 را انتخاب کنند، کلید خصوصی آنها دقیقاً مثل هم خواهد شد. شبیه به این است که دو نفر را به یک حساب بانکی واحد متصل کنیم.»
در ابتدا متخصصان ISE متوجه شدند کلید خصوصی 1 (یعنی 31 عدد 0 و یک عدد 1) در بلاکچین اتریوم استفاده میشود و چند صد هزار تراکنش هم با آن ثبت شده است.
بنداریک به خاطر دارد:
«این موضوع از نظر ما خیلی خطرناک بود و از خودمان پرسیدیم چرا کسی باید بتواند از کلید خصوصی 1 استفاده کند؟»
تیم او شروع به بررسی بیشتر کلیدها کرد تا میزان شیوع این مسئله را مشخص کند. هرچند نتایج تحقیق آنها نشان داد که این مسئله خیلی شایع نیست، توانستند 732 کلید خصوصی پیدا کنند که 49060 تراکنش توسط آنها انجام شده بود.
راهزن بلاک چین
همانطور که در بالا ذکر شد، تیم ISE در طی تحقیقات خود متوجه شد که برخی کیف پولهای مرتبط با کلیدهای خصوصی ، تراکنشهای واریز اتر به حساب خاصی داشتند ولی هیچ پولی از این حساب خارج نمیشد. بندارک در یک ویدئوی توضیحی که در وب سایت ISE منتشر شد، گفت:
فردی وجود داشت که به حسابهای مختلف سر میزد و به دلیل ضعیف بودن کلید خصوصیشان میتوانست از آنها پول برداشت کند. ما ۷۳۵ کلید خصوصی را پیدا کردیم و او توانسته بود از 12 مورد از آنها پول برداشت کند. از نظر اماری بعید است که او آن کلیدها را به صورت شانسی حدس زده باشد، بنابراین احتمالا همین کار را میکرده است. [ … ] او به محض اینکه وارد کیف پول کاربران میشد، میتوانست از آنها پول بدزدد.
بدنارک در مکالمهای با Cointelegraph توضیح داد که این هکر (یا گروهی از هکرها) یک نود را راهاندازی کرده تا به طور خودکار از آدرسهای دارای کلیدهای خصوصی ضعیف، پول برداشت کند. تیم ISE برای تایید این موضوع دامی طراحی کرد: آنها یک دلار را با استفاده از یک کلید خصوصی ضعیف ارسال کردند و میدانستند که هکر از این انتقال آگاه خواهد شد. هدف از این کار این بود که ببینند آن هکر با چه سرعتی اقدام به دزدیدن آن یک دلار خواهد کرد. جای شگفتی نداشت که آن یک دلار در عرض چند ثانیه ناپدید شد.
به گفته بدنارک:
«اگر این کار دستی بود، شاید یک یا چند روز طول میکشید تا آن یک دلار برداشته شود ولی به محض اینکه آن را فرستادیم، به کاوشگر بلاکچین رفتیم و دیدیم که بلافاصله بعد از چند ثانیه، آن پول به حساب دیگری منتقل شده است. بنابراین هکر یک نود بلاکچین در اختیار دارد که بخشی از شبکه تراکنش است. به محض اینکه پولی به یکی از حسابهایی وارد میشود که او کلید خصوصیاش را در اختیار دارد، فورا درخواست انتقال پول را ارسال میکند».
طبق دادههای بهدستآمده از Etherscan، کیف پول این هکر حاوی حدود ۴۵،۰۰۰ ETH (به ارزش ۷.۳ میلیون دلار) است. تخمین زده میشود زمانی که قیمت اتر در اوج خود قرار داست، چپاول این راهزن بیش از ۵۰ میلیون دلار بوده است.
با خواندن کامنتهایی که سایر کاربران در مورد این هکر نوشتهاند، مشخص میشود که او چند سالی مشغول به دزدی بوده است. یکی از این کامنتها را یکی از شرکتهای ارائهدهنده کیف پول اتر به نام (MyEtherWallet (MEW ثبت کرده است. این کامنت به پستی در سایت Reddit اشاره میکند که در آن ذکر شده است که گرههای اتریومی که تنظیمات RPC ضعیفی داشته باشند، مورد حمله قرار میگیرند. این مقاله که مربوط به سال 2016 است، در ادامه توضیح داده است که یک نود اتریوم راهاندازی کرده و به HTTP RPC API آن دسترسی عمومی داده است و تنها پس از چند دقیقه به آن نود حمله شده است.
بدنارک نیز این موضوع را تأیید میکند و میگوید با گوگل کردن آدرس این هکر میتوان کامنتهای مختلفی را دید که از او گلایه و شکایت میکنند.
به گفته بدنارک:
«این هکر رویکردی دو مرحلهای اتخاذ کرده است. اول از همه به دنبال کلید خصوصیهای ضعیف رفته است و در مرحله دوم کیف پولهایی را پیدا کرده که رمز عبورهای ضعیفی دارند و تنظیمات RPC آنها درست نیست. رویکرد اصولی این است که نباید RPC نود اتریوم عمومی باشد ولی بعضی وقتها افراد آن را عمومی میکنند و اگر رمز عبور مناسبی هم برای کیف پول خود استفاده نکنند، هکرها میتوانند کیف پولشان را در چند ثانیه خالی کنند».
اما این نوع دزدی، مسئلهای نیست که محدود به بلاکچین اتریوم باشد. بلاکچین به همان روشی که باید کار کند، کار میکند؛ مهم افرادی هستند که به اشتباه از آن استفاده میکنند.
تیم بدنارک با مشکلات اخلاقی نیز در پژوهش خود مواجه شد. او در این رابطه میگوید:
«پیش از شروع این تحقیق، یک معضل اخلاقی داشتیم: چه میشود اگر کیف پولی را پیدا کنیم که حاوی یک میلیون دلار باشد؟ آیا آن را همان جا میگذاریم؟ اما اگر این کار را بکنیم میدانیم که پشت کلید خصوصی ضعیفی قرار دارد و احتمالا پول موجود در آن دزدیه میشود. بنابراین ما تا حدی مسئول این دزدی هستیم، چرا که میتوانیم این موضوع را به صاحب کیف پول اطلاع دهیم. اما مشکل دوم این است که به چه کسی اطلاع دهیم؟ هیچ راه آسانی برای شناسایی مالک یک کلید خصوصی وجود ندارد. شاید بتوانیم پول را به طور موقت برداریم و نزد خودمان نگه تا اینکه کسی بتواند ثابت کند صاحب آن پول است اما این کار مسائل قانونی زیادی ایجاد میکند. بنابراین مدیر عامل شرکتی که برایش تحقیقات را انجام میدادیم تماس گرفت و از آنها مشاوره حقوقی گرفت. آنها اساسا گفتند: اگر چیزی پیدا کردید، آن را همانجا رها کنید. هیچ گونه نقل و انتقالی انجام ندهید. به این ترتیب دچار هیچ نوع مشکل قانونی نخواهید شد».
توصیههای امنیتی و تحقیقات بیشتر
بنابراین، طبق گفته بدنارک، دو دلیل اصلی برای آسیبپذیر شدن کلیدهای خصوصی وجود دارد. دلیل اول ضعیف بودن کدهای نرمافزاریای است که این کلیدها را تولید میکنند و دلیل دوم این است که برخی کاربرها از رمزهای ضعیف استفاده میکنند.
به عنوان مثال، گزارش ISE مشخص کرد که یکی از محبوبترین کلیدهای خصوصی ضعیف، کلیدی است که به خاطر خالی بودن عبارت بازیابی (recovery phrase) به دست میآید. گزارشها حاکی از آن است که ۸،۷۷۲ تراکنش با مبلغ 5،215،586 اتر در ParityWallet روی این آدرس انجام شده است.
بدنارک در این رابطه توضیح میدهد:
«Parity مدتی به کاربرها اجازه میداد رمز عبور خود را خالی بگذارند. البته فکر میکنم این مشکل رفع شده است و اکنون کاربرها باید حداقل یک کارکتر به عنوان رمز عبور خود استفاده کنند.»
به گفته بدنارک، هیچ یک از شرکتهای توسعهدهنده کیف پول تاکنون با ISE تماس نگرفتهاند. او در ادامه میگوید:
این مساله جالب است چرا که نمیتوان گفت کدام کیف پول مقصر این مشکل است. شاید حتی هیچ کیف پولی مقصر نباشد و صرفاً خود کاربرها از کلیدهای خصوصی نامناسب استفاده کرده باشند. شاید هم این ایراد مربوط به مراحل اولیه توسعه کیف پول باشد و برنامهنویسها آن را تغییر داده باشند. واقعیت این است که به احتمال زیاد هیچ وقت دلیل به وجود آمدن این شرایط را نخواهیم فهمید. »
توصیه اصلی بدنارک برای افرادی که تخصص زیادی در زمینه کامپیوتر ندارند، این است که از کیف پولهای معروف و قابلاعتماد استفاده کنند و در صورتی که بخواهند مقدار زیادی رمزارز جابهجا کنند بهتر است از کیف پولهای مبتنی بر کاغذ یا سختافزار استفاده کنند.
با این وجود، بدنارک هشدار داد که حتی هنگامی که از نرمافزارهای محبوب هم استفاده شود، ریسکهایی وجود دارد. برای نمونه، ماه گذشته هکری انگلیسی توانسته بود حدود 10 میلیون یورو از کیف پولهای Iota سرقت کند.
با توجه به اینکه کیف پول Iota منبع باز است، کد آن به طور عمومی روی Github وجود دارد. این هکر توانسته بود با ثبت کردن تغییرات مدنظر خود، کد تولیدکننده عدد تصادفی را به نفع خودش تغییر دهد.
بدنارک در این رابطه گفت: «با وجود اینکه افراد زیادی میتوانستند این کدها را بررسی کنند، آنها فرض کردند که کد موردنظر درست جواب میدهد. بهاینترتیب، هکر توانست نحوه تولید شدن کلیدهای خصوصی را تغییر دهد و از آن به نفع خود استفاده کند. پس از اینکه افراد زیادی مبالغ زیادی از دست دادند، در نهایت یک برنامهنویس توانست با مهندسی معکوس تغییراتی که هکر ایجاد کرده بود، متوجه شود که او کاری کرده است که نرمافزار فقط عددهایی در بازهای خاص ایجاد کند.»
ISE در آینده قصد دارد به نظارت بر بلاکچینها و کلیدهای خصوصی در مقیاس بزرگتر ادامه دهد. آنها روش اسکن کردن خود را تغییر خواهند داد و از GPU برای انجام پردازشها استفاده خواهند کرد. بهاینترتیب، آنها میتوانند 38 میلیارد کلید خصوصی را طی چند ثانیه اسکن کنند و اقدامات بسیار مؤثرتری انجام دهند.
به علاوه، این گروه تحقیقاتی قصد دارد اطلاعات بیشتری از جمله کلیدهای خصوصی ضعیف را در اختیار همه قرار دهد تا دیگران نیز بتوانند تحقیقات خود را روی این دادهها انجام دهند و ایرادهای امنیتی بیشتری کشف شوند.
منبع : cointelegraph