چگونه میلیونها دلار اتریوم با حدس زدن کلید خصوصی به سرقت رفت؟
چندی پیش، بازرسان مرکز مشاوره امنیتی ایالات متحده (ISE)، گزارشی درباره کلیدهای خصوصی بلاک چین اتریوم منتشر کردند.
این محققان، یک «هکر بلاک چینی» یافتند که از طریق حدس زدن کلیدهای خصوصی ضعیف، موفق به جمع کردن تقریبا ۴۵,۰۰۰ اتر (ETH) شده است. کوین تلگراف با آدریان بدنارک (Adrian Bednarek)، تحلیلگر ارشد امنیتی در ISE در این باره مصاحبه کرد تا اطلاعات بیشتری درباره آنچه که آنها با عنوان «جستجوی اترها یا etherecombing» از آن یاد میکنند، بدست آورد.
زمینه و دلایل تحقیقات
بدنارک اذعان دارد که او هکر را به صورت تصادفی پیدا کرده است. در آن زمان، وی در حال انجام تحقیقات، برای شرکت بزرگی بود که قصد راهاندازی کیف پولی با یک الگوریتم تولید کلید ادغام شده را داشتند.
بدنارک به کوین تلگراف چنین عنوان کرد:
به عنوان یک تحلیلگر امنیتی، قبل از شروع هر نوع ارزیابی، لازم است تکنولوژیهای اساسی آن را به وضوح درک کرد، میزان این درک باید به اندازهای باشد که انگار خودتان آن تکنولوژیها را ایجاد کردهاید.
وی همچنین افزود:
ایجاد کلید خصوصی یکی از مواردی بود که باید مورد تحقیق و بررسی قرار میگرفت و من به دنبال تحقیق در مورد اینکه کلید خصوصی اتریوم چیست، اندازه آن چقدر است؟ چگونه تولید می شود؟ و چگونه برای بدست آوردن کلید و آدرس عمومی مورد استفاده قرار میگیرد؟ رفتم.
در اتریوم، بیت کوین یا هر بلاک چین اصلی دیگری که از پروتکل الگوریتم امضای دیجیتالی منحنی بیضوی (ECDSA) پشتیبانی میکند، کلیدهای خصوصی به صورت عددهای ۲۵۶ بیتی نمایش داده میشوند. بازرسان امنیتی ISE این عدد ۲۵۶ بیتی را به ۸ زیرناحیه ۳۲ بیتی محدود کردند، زیرا گنجاندن کلید خصوصی در یک محدوده بزرگتر، منجر به بوجود آمدن نتایج آماری غیرمحتمل میشد.
این هشت زیرمجموعه شامل ۳۴ میلیارد کلید ضعیفتر میشدند که ISE به ترتیب آنها را بررسی کرد. بدنارک میگوید بررسی این کلیدهای خصوصی ضعیف یک روز کامل زمان برده است.
لازم به ذکر است که این کلیدها در اثر یک کد نادرست و یک تولید کننده کد (number generator) تصادفی نادرست، ایجاد شده بودند و محققان بطور ویژه کلیدهایی را مورد بررسی قرار دادند که در حالتی، پایینتر از استاندارد هدف مشخصی که برای آنها تعریف شده بود، قرار داشتند.
این تحلیلگر امنیتی، اینگونه در این باره توضیح داد:
کلید خصوصی، بطور همزمان، شناسه کاربری و رمز عبور شماست.
وی همچنین افزود:
این سیستم با سیستم ورود به حساب کاربری بانکی که در آن شما بطور مجزا یک شناسه کاربری و یک رمزعبور دارید، متفاوت است. بنابراین، هنگامی که دو فرد برای ایجاد یک کیفپول ذهنی (Brainwallet) از رمزعبورهای یکسانی استفاده میکنند، مانند «Password ۱۲۳»، هر دو همزمان صاحب یک کیف پول خواهند بود و این شبیه حالتی ست که دو نفر حساب بانکی مشترک دارند.
در ابتدا، متخصصین ISE دریافتند که کلید خصوصی «۱»، که به عنوان کمترین مقدار ممکن برای یک کلید خصوصی انتخاب شده بود، در بلاک چین استفاده میشود. علاوه بر این، این کلید خصوصی در چندین هزار تراکنش نیز دخیل بوده است.
اگر این کلید خصوصی را به صورت یک کد ۲۵۶ بیتی بنویسیم به صورت زیر خواهد شد:
۰x۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱
بدنارک این چنین خاطر نشان میکند:
این یک پرچم قرمز (علامت خطر) بود. چرا مردم از کلید خصوصی ۱ استفاده میکنند؟ چنین چیزی امکانپذیر نیست.
تیم او شروع به بررسی کلیدهای خصوصی بیشتری کرد تا دریابد این مشکل چقدر شایع است؟ اگرچه محققین ISE ثابت کردند که این مشکل بطور خاص در همه جا وجود ندارد، اما آنها ۷۳۲ کلید خصوصی را که در ۴۹۰۶۰ تراکنش دخیل بود، در این زمینه یافتند.
تیم بدنارک چنین ادعا میکند:
تقریباً، در حدود ۵۰ میلیون کلید خصوصی وجود دارد که در بلاک چین اتریوم مورد استفاده قرار گرفته است و ما فقط ۷۳۲ تا از این کلیدهای خصوصی را کشف کردیم.
راهزنان بلاک چین
همانطور که در بالا ذکر شد، در طول این تحقیقات، تیم ISE با روشهای غیرمتعارفی دریافت که چگونه برخی از این کیفپولها با کلیدهای خصوصیای که دارند، تراکنشهای زیادی انجام دادهاند که به یک آدرس مشخص ختم شده و هیچ پولی از آن ادرس برنگشته است. بدنارک این موضوع را در ویدیویی که در وبسایت ISE منتشر شده این چنین توضیح میدهد:
فردی آدرسی داشت که از طریق آن از کلیدهای خصوصیای که ما به آن دسترسی داشتیم، پول جابجا میکرد. ما ۷۳۵ کلید خصوصی را زیر نظر داشتیم و این فرد از ۱۲ تا از این کلیدهای خصوصی که ما نیز به آنها دسترسی داشتیم، پول برداشت میکرد.
از لحاظ علم آمار اینکه این فرد همه این ۱۲ کلید خصوصی را به صورت شانسی حدس زده باشد، غیرمحتمل به نظر میرسید، بنابراین، او احتمالا کاری مشابه کار ما را انجام داده است. او داراییهای افراد را به محض اینکه به کیفپولهای آنها واریز می شد، میدزدید.
در گفتو گویی که بدنارک با رسانه کوینتلگراف داشت، چنین توضیح میدهد که هکر یا گروهی از هکرها یک نود (Node) را راهاندازی کرده بودند که به صورت خودکار داراییهای افراد را از کیفپولهایی با کلیدهای خصوصی ضعیف برباید. برای اثبات این مدعا، محققان از تله شبکه مصنوعی (honeypot) استفاده کردند:
آنها یک دلار را با استفاده از یک کلید خصوصی ضعیفی که میدانستند هکرها نیز آن کلید خصوصی را میدانند، ارسال کردند تا بفهمند چه مدت زمانی طول میکشد تا این یک دلار توسط هکرها به سرقت رود. این پول (یک دلار) در عرض چند ثانیه توسط هکرها دزدیده شد، یکی از کارمندان ISE چنین بیان میکند:
اگر این سرقتها به صورت دستی انجام می شد، شاید یک روز یا بیشتر طول می کشید. اما به محض اینکه ما این یک دلار را ارسال کردیم، به مرورگر بلاک چین (بلاک چین اکسپلورر) رفتیم و دیدیم که این پول در عرض چند ثاینه توسط هکرها انتقال یافت. بنابراین، اساسا آنچه این هکر دارد یک نود بلاک چین است که بخشی از شبکه تراکنشهایی ست که در جایی راهاندازی شده است. به محض اینکه این نود، تراکنشهایی را پیدا میکند که کلیدهای خصوصی آنها را میداند، بلافاصله یک درخواست برای انتقال پول از آن کلید خصوصی ارسال میکند.
باتوجه به دادههای بدست آمده از اتراسکن (Ethersacn) ، درکیف پول این هکر در حدود ۴۵۰۰۰ اتر(که در زمان نوشتن این مقاله، ارزشی در حدود ۷.۳ میلیون دلار دارد) هست. با توجه به محدوده قیمت اتریوم و در واقع بیشترین قیمتی که اتر تا به حال داشته، سرمایه این هکرها میتواند تا بیش از ۵۰ میلیون دلار فروخته شود.
با توجه به نظراتی که در رابطه با آدرس کیف پول این متقلب وجود دارد، او چندین سال است که داراییهای افراد را به سرقت می برد. یکی از نظرات که گفته می شود توسط ارائهکننده کیفپول اصلی اتریوم (MEW) ارائه شده است، با پیوند به یکی از موضوعهای ردیت که در سال ۲۰۱۶ با عنوان «نودهای اتریوم با تنظیمات نا امن RPC که بطور جدی مورد سوء استفاده قرار گرفتهاند» به این موضوع اشاره میکند. (RPC پروتکلی ست که یک برنامه می تواند با استفاده از آن درخواست سرویسی را از برنامه موجود بر روی کامپیوتری دیگر در شبکه داشته باشد.) در ردیت اشاره شده، یکی از کاربران در مورد راهاندازی یک نود اتریوم توضیح میدهد که «با استفاده از پروتکل HTTP RPC API در اینترنت نمایش داده شده» و چند دقیقه پس از راهاندازی آن، مورد حمله واقع شده است.
بدنارک نیز این موضوع را اینگونه تایید میکند که:
اگر آدرس این هکر را در گوگل جستوجو کنید، خواهید دید تعداد افراد زیادی وجود دارند که از او شکایت دارند. باید پذیرفت که شیوه این کلاهبرداران کاملا موفقیتآمیز بوده است.
وی همچنین اضافه میکند:
این فرد (هکر) یک روش چند مرحلهای را برای سرقت پولها انتخاب کرده است.
این تحلیلگر امنیتی سپس روش این کلاهبردار را با جزئیات بیشتری اینگونه توضیح میدهد:
در مرحله اول او به دنبال کلیدهای خصوصی بد (ضعیف) میگردد. در مرحله دوم به دنبال کیفپولهای مبتنی بر رمز عبورهای ضعیف و با RPC هایی که به صورت اشتباه تنظیم شدهاند میگردد. واقعا قرار نیست که شما RPCهای نود اتریوم خود را در معرض نمایش قرار دهید، اما گاهی، برخی افراد این کار را انجام میدهند و اگر رمز عبور را بر روی آن قرار ندهند، هرکسی میتواند کیفپول مرتبط با نود آنها را خالی کند.
اما محقق امنیتی ISE هشدار میدهند که ربودن داراییها مشکلی نیست که فقط منحصر به بلاک چین اتریوم باشد. او همچنین اصول اخلاقی که تیم وی در هنگام انجام این تحقیقات با آن مواجه شده بودند را اینگونه توضیح میدهد:
قبل از اینکه ما این تحقیق را شروع کنیم، با یک معضل اخلاقی روبرو بودیم. اینکه اگر کلید کیفپولی را پیدا کنیم که یک میلیون دلار دارایی در آن باشد، چه میشود؟ آیا آن را به حال خودش رها کنیم؟ اما اگر آن را همانطور به حال خودش رها کنیم، میدانیم که آن کیفپول یک کلید خصوصی ضعیف دارد و احتمال سرقت کردن از آن کیفپول بالاست، بنابراین، ما تا حدودی در برابر دارایی های آن کیفپول مسئولیم زیرا میتوانستیم کسی را از مشکلی که وجود دارد باخبر کنیم. اما مشکل دوم این بود که چه کسی را باید از وجود این مشکل مطلع میکردیم؟ هیچ راه آسانی برای پیدا کردن صاحب یک کلید خصوصی وجود ندارد. شاید میتوانستیم داراییهای موجود در آن کیفپول را به طور موقت و در واقع تا زمانی که کسی پیدا شود که بتواند ثابت کند صاحب آن داراییها بوده، برداریم؟ اما این کار مشکلات قانونی زیادی ایجاد میکرد. بنابراین، مدیر عامل شرکت (شرکتی که آنها این کار تحقیقاتی را برای آن انجام میدادند)، برای گرفتن مشاوره حقوقی با IFS تماس گرفت و آنها گفتند:
اگر چیزی (کلید خصوصی کیفپولی با دارایی زیاد) پیدا کردید، آن را به حال خودش رها کنید. هیچ انتقالی انجام ندهید. به این ترتیب خودتان را درگیر دردسرهای قانونی نخواهید کرد.
توصیهها
بنابراین، بر اساس گفتههای بدنارک، کلیدهای خصوصی به دو دلیل اصلی آسیبپذیر هستند. اولین آن خطاهای برنامهنویسی در نرمافزارهای غیررسمی ست که مسئول تولید این کلیدهای خصوصی ست. دوم، برخی از صاحبان ارزهای دیجیتال تمایل دارند کلیدهای خصوصی یکسانی را، از طریق رمزعبورهای ضعیفی مانند «abc123» و یا حتی خالی گذاشتن رمز عبور، بدست آورند.
به عنوان مثال، گزارش ISE نشان داد که یکی از محبوبترین کلیدهای خصوصی ضعیف، آنهایی هستند که از طریق خالی گذاشتن رمزعبور ریکاوری، به صورت خالی ” “، با استفاده از کیفپول پریتی (Parity) ایجاد شدهاند. ۸۷۷۲ تراکنش انجام شده با این آدرس از طریق جابجایی ۵۲۱۵۵۸۶ اتر، گزارش شده است. (پریتی پیشرفتهترین کلاینت اتریوم است)
بدنارک چنین توضیح میدهد که:
زمانی کلاینت پریتی این اجازه را به شما میداد که از رمزعبور پیشفرض خالی استفاده کنید و این کلاینت بر اساس رمزعبوری که شما به صورت پیش فرض، آن را خالی گذاشته بودید، کلید خصوصی ای برای شما ایجاد میکرد.
بدنارک اضافه میکند:
توسعهدهندگان این کیفپول ادعا کردهاند که این مسئله را تا حدودی حل کردهاند. من فکر میکنم آنها یک حداقل رمزعبوری را از آن زمان به بعد برای این کلاینت تعریف کردهاند. این رمزعبور ممکن است فقط یک کاراکتر باشد اما اگر از آخرین نسخه نرمافزار Parity استفاده کنید، نمیتوانید رمزعبور خالی را بر روی این کلاینت بکار برید.
بر اساس اظهارات بدنارک، هیچ کدام از سازندگان کیفپول تاکنون با آنها تماس نگرفتهاند:
این یک مسئله جالب است، زیرا به سختی میتوان گفت که کدام کیفپول مسئول این اتفاق است، اگر اصلا کیفپولی وجود داشته باشد- ممکن است مسئله فقط افرادی باشند که کلیدهای خصوصی اشتباهی را وارد میکنند، یا ممکن است مشکل از نسخههای اولیه کیفپولهایی باشد که بعدا عیبیابی شدهاند، یا حتی ممکن است خود توسعهدهندگان باشند که این کار را انجام میدهند. کمی سخت است که بگوییم چرا این مسئله وجود دارد و کدام کیفپول مشکل دارد. این مسئلهای ست که من فکر میکنم هیچگاه جواب آن را نمی فهمیم.
توصیه اصلی بدنارک برای کسانی که آشنایی کاملی با کامپیوتر ندارند این است که از کیفپولهای شناخته شده و قابل اعتماد استفاده کنند و یا تا حد ممکن، اگر مقدار داراییهایشان زیاد است، آن را به کیفپولهای سختافزاری یا کاغذی انتقال دهند. او در این باره میگوید:
اگر قصد خرید و فروش و یا نگه داشتن مقدار زیادی ارز دیجیتال را دارید، از یک کیفپول سختافزاری استفاده کنید. در این صورت است که کلید خصوصی شما هرگز جایی نمایش داده نخواهد شد. بسیاری از دوستان من که با هدف نگهداشتن طولانیمدت، این ارزهای دیجیتال را خریداری کردهاند، از کیفپولهای کاغذی استفاده میکنند که یک کلید خصوصی به صورت تصادفی ایجاد کرده و آن را روی یک کاغذ ثبت میکنند، بنابراین هیچگاه برای این کار دست به کامپیوتر نمی زنند.
بدنارک در این باره اینگونه هشدار میدهد:
حتی زمانی که از نرمافزارهای محبوب استفاده میکنید، خطراتی وجود دارد.
او در ادامه مثالی از کیفپول محبوب آیوتا Iota عنوان کرد که توسط یک توسعهدهنده از آکسفورد، که متهم به سرقت ۱۰ میلیون یورو بود و در نهایت دستگیر شد، مورد تهدید و حمله قرار گرفته بود.
باتوجه به اینکه کیفپول آیوتا منبع باز است، کد آن به صورت عمومی در گیتهاب نوشته شده است. در برخی موارد، افراد متقلب، تولید کننده عددهای تصادفی را با اعمال تغییراتی بر روی کد آن، عوض میکنند.
بدنارک عنوان کرد:
این کار با استفاده از یک شیوه بسیار مبهم انجام شده است. حتی اگر تعداد زیادی از مردم بتوانند این کد را بررسی کنند، آنها فقط با فرض بررسی کار کردن کد، این کار را انجام میدهند.
این متخصص ISE همچنین توضیح میدهد:
به همین ترتیب، این هکر توانسته ببیند کلیدهای خصوصی چگونه تولید می شوند و با اعمال کدهای خود، این کلیدهای خصوصی را بازتولید کند.
پس از اینکه تعداد زیادی از مردم، پول زیادی را از دست دادند، برخی افراد با استفاده از مهندسی معکوس تغییراتی را که او به تولید کننده تصادفی اعداد اعمال کرده بود،یافتند و توانستند ببینند او یک سری اعداد متوالی را در یک محدوده خاصی از فضای کلیدهای خصوصی ایجاد کرده است.
این بازرسان امنیتی (ISE) قصد دارند کار نظارت بر روی بلاک چینها و کلیدهای خصوصی ضعیف را در مقیاس وسیعتری در آینده ادامه دهند. بدنارک در این باره به کوین تلگراف اعلام کرد:
ما برای ارتقای روش بررسی خود از پردازندههای گرافیکی (GPU) استفاده خواهیم کرد که در اینصورت قادر خواهیم بود ۳۸ میلیارد کلید خصوصی را در عرض چند ثانیه بررسی کنیم.
او همچنین در این باره افزود:
با کارامدتر کردن روش بررسی، ما میتوانیم کارهای دیوانهواری مانند رفتن به ورای کیفپولهای ذهنی (کیف پول هایی که کلید خصوصی آنها در ذهن افراد است و در جایی ثبت نشده) و یا دیگر الگوریتمهای تولید کلید خصوصی که ممکن است ناقص یا اشتباه باشند، نفوذ کنیم. بنابراین، برای شناسایی کلیدهای خصوصی بیشتر، ما کا خود را در حوزههای مختلف گسترش میدهیم.
علاوه بر این، این گروه تحقیقاتی امنیتی، قصد انتشار اطلاعات بیشتری، شامل کلیدهای عمومی معیوب را برای مردم دارد تا مردم بتوانند خودشان تحقیقات انجام داده و نسبت به نقصهای امنیتی احتمالی، هشدار داده شوند. پیشنهاد بدنارک در این باره این است:
شاید این امر منجر به تلاشهای مشترک افراد مختلف برای یافتن برخی دلایل این مشکل شود.
من نادون هم اتریوم خریدم