- طبق گزارشاتی که اوایل هفتهی جاری توسط کمپانی مشاورهی خدمات امنیتی Independent Security Evaluators(یا ISE) منتشر شده است، علیرغم ایجاد حدود ۷۰۰ کلید خصوصی ضعیف که به طور مرتب توسط چندین فرد مورد استفاده قرار میگیرد، محققان توانستند یک «راهزن بلاکچینی» را پیدا کنند که توانسته با حدس زدن این کلیدهای خصوصی ضعیف، حدود ۴۵ هزار واحد رمزارز اتریوم(با نماد ETH) بدست آورد.
اوایل هفتهی جاری کمپانی مشاورهی خدمات امنیتی Independent Security Evaluators(یا ISE) که مقر آن در ایالات متحده واقع شده است، یک گزارش در خصوص کلیدهای خصوصی بلاکچین اتریوم منتشر کرد. علیرغم ایجاد حدود ۷۰۰ کلید خصوصی ضعیف که به طور مرتب توسط چندین فرد مورد استفاده قرار میگیرد، محققان توانستند یک «راهزن بلاکچینی» را پیدا کنند که توانسته با حدس زدن این کلیدهای خصوصی ضعیف، حدود ۴۵ هزار واحد رمزارز اتریوم(با نماد ETH) بدست آورد.
آقای آدریان بدنارک(Adrian Bednarek) یکی از تحلیلگران ارشد امنیت در کمپانی ISE اعلام نموده که به صورت کاملا تصادفی توانسته این هکر را شناسایی کند. وی در آن زمان در حال انجام تحقیقات برای یک کمپانی بوده که قصد راهاندازی کیفپول بومی با استفاده از یک الگوریتم تولید کلید یکپارچه را داشته است.
وی در ادامه اظهار داشت:
به عنوان یک تحلیلگر امنیتی قبل از شروع هرگونه ارزیابی باید از فناوریهای زیرساختی درک درستی داشته باشیم، اساسا اگر میخواهید که خودتان آنها را بسازید. تولید کلیدهای خصوصی نیز یکی از اجزای مورد نیازی بود که ما نیاز داشتیم در رابطه با آن تحقیقاتی انجام دهیم، و من به دنبال فهم این موضوع اساسی بودم که کلید خصوصی بر روی اتریوم به چه معناست، چقدر بزرگ است، چطور ساخته میشود و برای بدست آوردن کلید عمومی و آدرسی عمومی چطور مورد استفاده قرار میگیرد؟ Adrian Bednarek
در اتریوم، بیتکوین یا هر پروژهی بلاکچینی بزرگ دیگری که از پروتکل ECDSA پشتیبانی میکند(الگوریتم امضاء منحنی القایی دیجیتال)، کلیدهای خصوصی توسط اعداد ۲۵۶بیتی نمایش داده میشوند. در حین تحقیقات، کمپانی ISE در فضای کلید ۲۵۶بیتی این اعداد را به هشت «زیرمجموعه» ۳۲بیتی تقسیم کرد، زیرا بررسی کلید خصوصی به صورت brute force(یک روش آزمون و خطا برای بدست آوردن اطلاعاتی از قبیل رمز عبور) در یک فضای بزرگتر به معنی کسب آمار غیرمنتظره و نادرست خواهد بود.
این هشت زیرمجموعه در کل شامل ۳۴ میلیون کلید ضعیف بود که ISE بعدا به اسکن و بررسی آنها پرداخت. آقای بدنارک گفت که «اینکار یک روز کامل زمان برد».
لازم به ذکر است که این کلیدها به علت تقص کدها و اشتباه در تولید کنندگان اعداد تصادفی به وجود آمده بودند و محققان نیز به طور خاص همان کلیدهای زیرمجموعه یا بیکیفیت را هدف قرار داده بودند.
این تحلیلگر امنیتی در ادامه توضیح داد:
کلید خصوصی در واقع به صورت همزمان شناسهی کاربری و رمزارز عبور شما است. استفاده از این کلیدها با ورود به سیستمهای بانکی که نام کاربری و رمزعبور ارائه میدهید بسیار متفاوت است. بنابراین زمانی که دو شخص مجزا از یک رمزعبور یکسان مانند «Password123» برای ساخت کیفپول Brainwallet ایجاد میکنند(کیفپولهایی که به عنوان بخشی از کلید خصوصی از کلمات بازیابی حساب استفاده میکنند)، هردو دقیقا مالک یک کیفپول هستند. این بدان معناست که شما دو نفر را به یک حساب بانکی متصل کنید. Adrian Bednarek
در ابتدا متخصصین ISE دریافتند که کلید «۱» در واقع در بلاکچین استفاده شده است. علاوه بر این، کلید مذکور در چندین هزار تراکنش نیز مورد استفاده قرار گرفته است.(انتخاب این عدد به این دلیل بوده که پایینترین حد ممکن برای یک کلید خصوصی در بلاکچین محسوب میشود).
کلید مذکور در حال کد ۲۵۶بیتی به این شکل بود:
0x0000000000000000000000000000000000000000000000000000000000000001
آقای بدنارک در ادامه افزود:«اما یک مشکل وجود داشت. چرا مردم باید از کلید خصوصی شمارهی ۱ برای انجام تراکنش استفاده میکنند.»
تیم آقای بدنارک در ادامه به اسکن کلیدهای بیشتری پرداخت تا ببینند این مشکل به چه میزان گسترده است. گرچه محققین ISE ثابت کردند که این مشکل به طور خاص در همه جا وجود ندارد، اما توانستند ۷۳۲ کلید خصوصی ضعیف را شناسایی کنند که مجموعا در ۴۹۰۶۰ تراکنش حضور داشتهاند.
آقای بدنارک توضیح داد:
تقریبا حدود ۵۰ میلیون کلید بر روی بلاکچین اتریوم مورد استفاده قرار گرفته است، و ما تنها ۷۳۲ مورد از آنها را شناسایی کردیم. Adrian Bednarek
راهزن بلاکچینی
همانطور که قبلا ذکر شده، تیم امنیتی ISE در طور تحقیقات خود متوجه شدند که چطور برخی کیفپولهای مرتبط با کلیدهای خصوصی(که با روشهای غیرمتعارفی شناسایی شدند) تعداد زیادی تراکنش خروجی به آدرسهای خاص داشته و هیچ تراکنش ورودی نداشتهاند.
طبق صحبتهای آقای بدنارک در یک پست ویدئویی در وبسایت رسمی ISE:
یک نفر در این میاد وجود دارد که از بعضی کلیدهایی که ما به آنها دسترسی داشیم پول دریافت کرده است. ما ۷۳۵ کلید خصوصی پیدا کردیم، و او توانسته از ۱۲ کلید که به ما هم دسترسی کامل داشتهایم، پول برداشت کند. از لحاظ آماری غیرمحتمل اس که این راهزن توانسته باشد این کلیدها را به صورت تصادفی حدس بزند، بنابراین احتمالا او همین کار را انجام داده است، و ساسا به محض ورود پول به کیفپول مردم، اقدام به سرقت و جابجایی آنها کرده است. Adrian Bednarek
در مصاحبهای که با آقای بدنارک انجام گرفته او توضیح داده است که این هکر(یا گروه هکرها) یک گرهی خودکار راه اندازه کردهاند که داراییهای موجود بر روی این آدرسهای مجهز به کلید ضعیف را انتقال داده است. برای تایید این گفتهها، محققان از یک Honeypot(تله) استفاده کردند: آنها با استفاده از کلید خصوصی ضعیف اقدام به ارسال یک دلار کردند تا ببنند به چه سرعتی جابجایی پول و سرفت انجام میشود. این محققین اطلاع داشتند که هکر از این کار آگاه است. گفته شده که پول در عرض کمتر از چند ثانیه از حساب برداشت شده است. یکی از کارمندان ISE در رابطه با این موضوع گفت:
اگر این کار به صورت دستی انجام میشد، شاید در طول یک روز یا بیشتر صورت میگرفت. اما به محض اینکه ما پول را ارسال کردیم و بر روی جستجوگر بلاکچین به ثبت رسید، ما متوجه شدیم که بلافاصله یک تراکنش خروجی نیز شکل گرفته است. بنابراین میتوان گفت که هکر در واقع یک گرهی بلاکچینی ایجاد نموده که بخشی از تراکنش شبکه است. به محض اینکه یک تراکنش به واسطهی کلید خصوصی شناخته شده توسط هکر انجام میشود، این گره سریعا یک درخواست برای انتقال پول ارسال میکند. Adrian Bednarek
طبق دادههای بدست آمده از پلتفرم Etherscan، کیفپول هکر در حال حاضر حاوی بیش از ۴۵ هزار اتریوم است(که ارزشی بالغ بر ۷/۳ میلیون دلار دارد). با در نظر گرفتن بالاترین محدودهی قیمت تر، تخمین زده میشود که این راهزن توانسته داراییهای غارت شده را در ازای بیش از ۵۰ میلیون دلار فروخته باشد.
با توجه به بخش نظرات کیفپولهای مورد سرقت قرار گرفته، این هکر به مدت چندین سال است که این کار را انجام میدهد. یکی از نظراتی که احتمالا توسط ارائه دهندهی کیفپول اتریوم با نام MyEtherWallet(یا MEW) به ثبت رسیده، حاوی یک لینک به یک پست توییتری با عنوان «گرههای اتریوم با تنظیمات RPC ناامن به طور جدی مورد سوء استفاده قرار گرفتهاند» است که در سال ۲۰۱۶ منتشر شده است. در این پست یک کاربر توضیح میدهد که چطور با یک گرهی اتریوم را «با استفاده از HTTP RPC API در اینترنت منتشر کرده» و پس از مدت کوتاهی مورد حمله قرار گرفته است.
آقای بدنارک تاکید کرد که اگر آدرس کیفپول این هکر را در گوگل جستجو کنید، خواهید دید که شکایتهای زیادی از او شده است. وی همچنین اعتراف کرد که این هکرها در انجام کار خود کاملا موفق بودهاند:
این هکر از روش چند وجهی برای سرقت پولها استفاده کرده است. Adrian Bednarek
این تحلیلگر امنیتی در ادامه جزئیات دقیق روش هک را شرح داد:
ابتدا او به دنبال کلیدهای خصوصی بد و ضعیف میگردد. سپس به دنبال کیفپولهایی که کلمات بازیابی ضعیفی دارند و RPCهایی که تنظیمات غلط و نامناسبی دارند، میگردد. شما واقعا نباید RPC گرههای اتریوم خودتان را به دیگران اعلام کنید، اما گاهی اوقات مردم این کار را میکنند، و اگر برای گرهی خود یک رمز عبور تعریف نکرده باشید، هرکسی میتواند به راحتی کیفپول پیشفرض تعریف شده برای گرهی شما را خالی کند. Adrian Bednarek
این تحلیلگر امنیتی ISE در ادامه هشدار داد که چنین روش سرقتی تنها مختص بلاکچین اتریوم نمیباشد، وی همچنین در رابطه با یک مشکل اخلاقی که تیم او در هنگام تحقیقات با آن مواجه شده صحبت کرد:
بلاکچین اتریوم همانطور که انتظار میرفت کار میکند، این موضوع تنها به روش استفادهی مردم مربوط میشود. قبل از شروع این تحقیقات، ما یک معضل اخلاقی داشتیم. چه خواهد شد اگر ما یک کیفپول حاوی یک میلیون دلار پول پیدا کنیم؟ آیا فقط باید همانطور که بوده رهایش کنیم؟ اما اگر دست نخورده آن را رها کنیم، با وجود کلید خصوصی ضعیف این کیف پول احتمال به سرقت رفتن تمام داراییهایش وجود دارد، از این رو ما به نوعی در برابر به سرقت رفتن این پول مسئولیت خواهیم داشت زیرا ما میتوانستیم به شخصی در رابطه با این موضوع خبر بدهیم. اما سپس با مشکل دوم برخورد میکردیم، ما باید به چه کسی در رابطه با این موضوع هشدار بدهیم؟ هیچ راه سادهای برای شناسایی مالک کلید خصوصی وجود ندارد. آیا باید پول را به صورت موقت از حساب خارج میکردیم تا شخصی اعلام گمشدن کند؟ اما انجام اینکار باعث ایجاد مشکلات قانونی زیادی میشد. بنابراین مدیرعامل شرکت(که برای آنها در حال انجام تحقیقات بودیم) برای دریافت مشاورهی حقوقی با IFS تماس گرفت و گفت: اگر چیزی پیدا کردید، بگذارید همانجا بماند. هیچ تراکنشی انجام ندهید. به این ترتیب شما دچار هیچ مشکلی نخواهید شد. Adrian Bednarek
مشاورههای امنیتی و تحقیقات بیشتر
با تمام این تفاسیر طبق گفتههای آقای بدنارک، کلیدهای خصوصی به واسطهی دو عاملی اصلی آسیبپذیر خواهند بود. اول مورد وجود یک خطای برنامهنویسی در نرمافزار تولید کنندهی آنهاست؛ و دوم اینکه برخی مالکان رمزارز تمایل دارند تا از طریق کلمات بازیابی حساب ضعیف خود کلیدهای خصوصی ضعیفی همچون abc123 تعریف کرده و یا حتی آن بخش را خالی بگذارند.
به عنوان مثال گزارشات ISE نشان میدهد که یکی از کلیدهای خصوصی ضعیف محبوب میان کاربران با استفاده از خالی بودن بخش کلمات بازیابی حساب در کیفپولهای Parity بدست میآید. گزارش شده که بیش از ۸۷۷۲ تراکنش با مجموع ۶۲۱۵۵۸۶ اتریوم بر روی این آدرسهای صورت گرفته است.
آقای بدنارک در رابطه با این موضوع توضیح داد:
Parity به شما اجازه میدهد که برای مدتی بدون تعریف رمزارز عبور از کیفپول استفاده کنید، و براساس همین فضای خالی برای شما یک کلید خصوصی ایجاد میکند. Adrian Bednarek
وی در ادامه افزود که توسعهدهندگان این کیفپول مدتی پیش این آسیبپذیری را رفع کردهاند:
من فکر میکند که این توسعهدهندگان یک حداقل رمزارز عبور مورد نیاز برای کیفپولهای خود معرفی کردهاند. شاید تنها وارد کردن یک حرف کافی باشد، اما در حال حاضر اگر از آخرین نسخهی نرمافزار آنها استفاده کنید، دیگر نمیتوانید بخش رمزارز عبور را خالی بگذارید. Adrian Bednarek
براساس گفتههای او هیچ یک اس سازندگان کیفپولهای رمزارزی تا به امروز با ISE تماس نگرفتهاند:
این یک مسئلهی جالب است زیرا به سختی میتوان گفت که کدام کیفپول رمزارزی مسئولیت آن را بر عهده دارد، البته اگر در کل کیفپول وجود داشته باشد. ممکن است که مردم فقط کلید خصوصی اشتباه وارد کرده باشند، ممکن است که نسخههای اولیه و آزمایشی کیفپول باشند، یا حتی ممکن است که خود توسعهدهندگان باشند. گفتن اینکه چرا چنین چیزی وجود دارد و کدام کیفپول به آن دچار شده، بسیار سخت است. این چیزی است که به نظرم هرگز نخواهیم فهمید. Adrian Bednarek
اقای بدنارک به کسانی که دانش رایانهای کافی ندارند توصیه میکند که برای ذخیرهسازی حجم زیاد رمزارز، از یک کیفپول رمزارزی شناخته شده و قابل اعتماد مانند کیفپولهای سختافزاری و یا حتی کیفپولهای کاغذی استفاده کنند. وی در رابطه با این موضوع گفت:
اگر قرار است حجم زیادی رمزارز نگهداری یا مبادله کنید، بهتر است از یک کیفپول سختافزاری استفاده کنید تا کلید خصوصی شما هرگز افشا نشود. بسیاری از دوستان من نگهدارندگان رمزارز هستند و از کیفپولهای کاغدی استفاده میکنند و کلید خصوصی کاملا تصادفی خود را بر روی کاغذ یادداشت میکنند، بنابراین هرگز حتی کامپیوتری در کار نبوده است. Adrian Bednarek
با این حال او در ادامه هشدار داد که حتی در زمان استفاده از نرمافزارهای بسیار محبوب و معتبر نیز همیشه خطراتی وجود دارد. وی در ادامه به موضوع کیفپولهای آیوتا(IOTA) و سرقت از آنها توسط یکی از توسعهدهندگان دانشگاه آکسفورد اشاره کرد. طی این واقعه که ماه گذشته رخ داده، این توسعهدهنده بیش از ۱۰ میلیون یورو رمزارز آیوتا به سرقت برده است. وی اکنون اتهام سرقت دستگیر شده است.
با توجه به اینکه کیفپول آیوتا منبع باز میباشد، کدهای پایهای آن به صورت عمومی در پلتفرم Github در دسترس قرار دارد. در برخی موارد، هکرها و تبهکاران تولید کنندهی اعداد تصادفی را با ارسال یک کد، تغییر میدهند.
آقای بدنارک در رابطه با این موضوع گفت که «این کار به شیوههای بسیار مبهمی انجام میشود». به گفتهی او «با وجود اینکه تعداد زیادی از مردم میتوانند کدهای منبع باز را بررسی کنند»، این هکرها باز هم توانستهاند یک نقض امنیتی پیدا کنند.
این متخصص فعال در ISE توضیح داد که هکر میتواند ببیند که کلیدهای خصوصی چطور تولید میشوند با استفاده از کدهای تزریقی خود، در این روند یک اختلال ایجاد کند:
پس از اینکه تعداد زیادی از مردم مقدار زیادی پول از دست دادند، نهایتا یک نفر این روند دستکاری را مهندسی معکوس کرد و متوجه شدند که هکر در محدودهی خاصی از فضای کلیدی اعداد پیدرپی و متوالی ساخته است. Adrian Bednarek
کمپانی امنیتی ISE در نظر دارد تا در آینده به شکل وسیعتری بر بلاکچین و کلیدهای خصوصی ضعیف نظرات داشته باشد. آقای بدنارک در مصاحبهی خود اظهار داشت:
ما روشهای اسکن و بررسی خود را با استفاده از کارتهای گرافیک ادامه خواهیم داد، به این ترتیب ۳۸ میلیارد کلید در کسری از ثانیه اسکن خواهد شد. همانطور که روند اسکن کلیدها را کارآمدتر میکنیم، قادر خواهیم بود برخی به کارهای عجیب و قریبی مانند جستجوی کیفپولهای brainwallets و دیگر الگوریتمهای تولید کلید معیوب نیز بپردازیم بنابراین برای شناسایی کلیدهای بیشتر فعالیتهای خود را گسترش خواهیم داد. Adrian Bednarek
علاوه براین، اعلام شده که این گروه تحقیقات امنیتی قرار است برای کسانی که تحقیقات خود را انجام میدهند اطلاعات بیشتری(از جمله کلیدهای عمومی معیوب) منتشر کرده تا از نقضهای امنیتی احتمالی باخبر باشند. وی در نهایت پیشنهاد کرد که «شاید این کار به یک تلاش مشترک برای کمک به پیداکردن برخی علل این مشکلات، تبدیل شود».
نظر شما در رابطه با این تحقیقات و نتایج آن چیست؟ چه راهکارهایی برای جلوگیری از وقوع چنین مشکلاتی وجود دارد؟ نظرات خود را با ما به اشتراک بگذارید.