الکساندرو لوپاسکو (Alexandru Lupascu) متخصص امنیت شبکه و همبنیانگذار شرکت امنیتی امنیا (OMNIA) مقالهای در مورد وجود آسیبپذیری امنیتی تهدیدکننده حریم خصوصی کاربران کیف پول متامسک نوشته است که در ادامه ترجمه آن را خواهید خواند. همچنین از دید لوپاسکو، این آسیبپذیری میتواند منجر به حملات DDoS گستردهای با پتانسیل تحت تاثیر گرفتن دهها میلیون دستگاه شود. برای آشنایی بیشتر با آسیبپذیری نشت IP در هنگام بارگذاری اطلاعات توکنهای بی همتا در کیف پول متامسک، با ادامه مقاله همراه باشید.
به خطر افتادن حریم خصوصی با ایردراپ توکنهای NFT
اخیرا مدتی را با تیم تحقیقاتیم گذراندم و به تحقیق سناریوهای مختلف ایردراپ توکنهای NFT پرداختیم و به کاربردهای نامناسبی پی بردیم که میتوانند حریم خصوصی بیش از ۲۱ میلیون نفر یا به عبارت دیگر، تمام کاربران متامسک را به مخاطره بیاندازد.
این سناریو پتانسیل این را دارد تا هشت برابر قویتر و مخربتر از حمله DDoS باشد. این موضوع در شرایطی است که خطر اخیر را با قویترین حملات سال گذشته مقایسه کردهایم.
قبل از مطالعه ادامه مقاله باید بگوییم که این مقاله درباره موضوعات زیر نیست و به آنها نمیپردازد:
- توکن NFT چیست؟
- آدرس URL و URI چیست؟
در این مقاله برای سادگی بیشتر، از URL و URI به جای یکدیگر استفاده کردهایم.
در این مقاله نشان میدهیم که عوامل مخرب چگونه میتوانند یک توکن NFT صادر کنند، آن را به قربانی مدنظر خود ارسال کنند و آدرس IP او را به دست آورند و در نتیجه، حریم خصوصی او را به خطر بیاندازند. این موضوع، یکی از مسائل بسیار مهم مرتبط با حریم خصوصی در اکوسیستم بلاک چین است که هر فردی با پرداخت هزینه ۵۰ دلاری میتواند از آن استفاده کند.
خطر موجود در نشت IP را دستکم نگیرید. اگر عوامل مخرب بتوانند به غیر از آدرس IP، اطلاعات دیگری به دست آورند، ممکن است به خطرات فیزیکی نظیر آدمربایی نیز منجر شود.
تاثیر این آسیبپذیری بسیار بیشتر از به خطر افتادن حریم خصوصی است.
عامل مخربی که انگیزه کافی داشته باشد میتواند تعداد زیادی توکن NFT ایجاد کند و تمام آنها را به یک آدرس URL متصل کند. سپس توکنهای NFT را به میلیونها کاربر ایردراپ کند و بدین ترتیب، حملات DDoS بیسابقهای به آن آدرس URL انجام دهد. ما درباره حملهای به اندازه ۸ برابر باتنت میرای (Mirai) صحبت میکنیم که چندین وبسایت شناختهشده نظیر گیتهاب، ردیت، نتفلیکس، Airbnb و بسیاری از سایتهای دیگر را از دسترس خارج کرد.
اصول اولیه
برای آنکه نحوه عملکرد این حمله را بهتر بشناسید و بدانید که چرا این آسیبپذیری وجود دارد، ابتدا اصول اولیه نحوه عملکرد توکنهای NFT را بیان میکنیم:
آیتم NFT در بلاک چین ذخیره شده است اما از آنجایی که ذخیرهسازی حجم زیادی از اطلاعات در زنجیرههای عمومی بسیار گران است، اقدام رایجی که انجام میشود، ذخیرهسازی تصویر در سرور ریموت و حفظ آدرس URL آن تصویر در زنجیره است.
چرخه عمر و تعامل با توکن NFT به صورت زیر است:
۱- آپلود کردن تصویر آیتم کلکسیونی در سرور
۲- صدور یک توکن NFT در بلاک چین و فقط ذخیرهسازی آدرس دارنده توکن و آدرس URL تصویر مذکور
۳- انتقال توکن NFT به آدرس بلاک چین دیگر (این گزینه اختیاری است)
۴- کیف پول دارنده توکن، بلاک چین را اسکن میکند تا مشخص شود که چه آیتم کلکسیونی در اختیار دارد و توکن NFT موردنظر را پیدا کند
۵- کیف پول، عکس آپلودشده را از آدرس URL موجود در توکن NFT دریافت میکند
اگر سرور تحت کنترل عامل مخرب باشد چه اتفاقی رخ میدهد؟
در این نقطه از خودم پرسیدم که اگر سرور توسط عامل مخرب کنترل شود چه اتفاقی رخ میدهد و چه پیامدهایی به وجود میآید؟
تصویر فوق نشان میدهد اگر سرور میزبان تصویر موردنظر توسط عامل مخرب کنترل شود، هنگامی که کیف پول به دریافت تصویر ریموت آیتم کلکسیونی بپردازد، آدرس IP دارنده NFT توسط تلفن همراه لو میرود.
این موضوع برای کیف پولهایی که بر بستر موبایل نیستند نیز صادق است. هرچند، کیف پولهای موبایل را به عنوان نمونه بیان میکنیم زیرا احتمال استفاده از اینترنت موبایل و همچنین لو رفتن مکان جغرافیایی، اپراتور تلفن همراه و سایر اطلاعات مبتنی بر آدرس IP بیشتر است.
اگر عامل مخرب صرفا آدرس بلاک چین شما را بداند، میتواند توکن NFT با آدرس URL مرتبط با سرور خود صادر کند و مالکیت NFT را به آدرس شما انتقال دهد. در نتیجه، هنگامی که کیف پول شما، تصویر ریموت توکن NFT را از سرور دریافت میکند، حریم خصوصی شما به خطر میافتد.
بسیار ساده به نظر میرسد، اینطور نیست؟ حداقل از لحاظ تئوری ساده به نظر میرسد زیرا بخشی که «کیف پول کریپتوی شما، تصویر ریموت را از سرور دریافت میکند» از اهمیت ویژهای برخوردار است.
در این بین، سوالهای زیر مطرح میشوند:
- آیا هنگامی که کیف پول را باز میکنیم، این اتفاق به طور خودکار رخ میدهد؟
- آیا این موضوع به اجازه صریح کاربر نیاز دارد؟
- دقیقا چگونه و چه زمانی دریافت تصویر از سرور فعال میشود؟
متاسفانه، پاسخ این سوالات را تقریبا سریع متوجه شدم. تنها کاری که لازم بود، بررسی سریع کیف پول محبوب متامسک بود. از کد منبع متامسک در گیتهاب به نظر میرسد که تصویر ریموت به طور خودکار و بدون درخواست اجازه صریح کاربر دریافت میشود. این موضوع در بخش پشتیبانی متامسک نیز تایید و بیان شده است که آیتمهای کلکسیونی به طور خودکار و بر اساس اطلاعات دریافتشده از opensea.io نشان داده خواهد شد.
با توجه به نام جزییاتی که تاکنون به دست آمده است، من نیز تصمیم گرفتم یکبار این موضوع را امتحان کنم و یک توکن NFT در پلتفرم اپنسی ایجاد کنم.
پس از ایجاد توکن NFT، جزییات آدرس URL پیشفرض در بلاک چین برای آیتمهای کلکسیونی ایجادشده از طریق اپنسی را بررسی کردم. بدین منظور، ابتدا آدرس قرارداد هوشمند و ID توکن NFT را بررسی کردم.
اکنون که آدرس قرارداد هوشمند، ID توکن NFT و راهنمای استفاده از استاندارد ERC-1155 را در اختیار داشتم، به Remix Ethereum IDE مراجعه کردم تا تعامل با قرارداد هوشمند را به صورت انعطافپذیرتر آغاز کنم.
تنها چیزی که نیاز داشتم، این ۸ خط کد (تصویر ۵) بود تا رابط کاربری قرارداد هوشمند مبتنی بر استاندارد ERC-1155 را برای تعامل با توکن NFT صادرشده در اپنسی، کامپایل و تولید کنم.
در بخش تراکنشهای بارگذاری و اجرا (تصویر ۶) میتوانید آدرس قرارداد هوشمند را از اپنسی وارد کنید و قرارداد هوشمند از قبل اجراشده را گسترش دهید. اکنون تابع uri دارید تا آدرس URL را بخوانید.
در این مرحله، درباره این موضوع کنجکاو بودم که چگونه میتوانم آدرس URL را بهروزرسانی کنم تا تحت کنترل من به یک سرور مرتبط شود تا با کسب آدرس IP دستگاه خودم، بتوانم این آسیبپذیری را تایید کنم.
پس از اندکی بررسی در تراکنشهایی که به این قرارداد هوشمند ارسال شدهاند، متوجه فراخوانی تابع Set URI (تصویر ۸) شدم که بخشی از استاندارد ERC-1155 نیست. بنابراین آن را اجرا کردم تا امضای تابع را مشاهده کنم (تصویر ۹).
این تابع را به Remix IDE اضافه کردم و قرارداد هوشمند را مجددا کامپایل کردم تا این تابع را در رابط کاربری داشته باشم (تصویر ۱۰). این تابع یک بدنه خالی داشت زیرا قرارداد هوشمند را اجرا نکردم، بلکه از آن به منظور تولید رابط کاربری استفاده کردم که تابع Set URI را در قرارداد هوشمند موجود فراخوانی میکرد.
تنها چیزی که در حال حاضر فراموش کردهام، سروری است که به طور عمومی در اینترنت در دسترس باشد تا بتوانم آدرس URL توکن NFT را تنظیم کنم. بدین منظور، راهکارهای مختلفی نظیر اجاره سرور مجازی در فضای ابری وجود دارد اما خوشبختانه به یاد آوردم که قبلاً از ngrok برای ایجاد آدرسهای URL برای منابع داخلی در شبکه محلی استفاده کردهام. بنابراین تصمیم گرفتم از این راهکار استفاده کنم.
به منظور ایجاد سوکت سرور TCP در رایانه خودم، از Netcat با خط فرمان NC -l 80 استفاده کردم و همچنین ngrok را با خط فرمان ngrok http 80 آغاز کردم.
اکنون URL عمومی در اختیار دارم که تمام ترافیک را به سرور محلی من فوروارد میکند (تصویر ۱۱). ngrok باید یک هدر X-Forwarded-For HTTP به آدرس IP هرکسی که به آن URL خاص دسترسی دارد اضافه کند.
هنگامی که هر فردی به این URL دسترسی پیدا کند باید بتوانم مشاهده کنم که این هدرها به سرور TCP محلی من وارد شدهاند.
با توجه به اینکه همه موارد آماده شدهاند، آدرس URL تصویر ریموت توکن NFT را با آدرسی که با ngrok ایجاد شده بود، بهروزرسانی کردم.
در مرحله پایانی، نسخه ۳.۷.۰ برنامه موبایلی متامسک مخصوص سیستم عامل iOS را نصب و یک حساب پایه ایجاد کردم که مالکیت توکن NFT را از رابط کاربری اپنسی انتقال دهم.
پس از اجرای برنامه موبایلی متامسک، نه تنها میتوانم مشاهده کنم که این توکن NFT ایردراپ شده است (تصویر ۱۳)، بلکه در سرور TCP نتکت نیز میتوانم مشاهده کنم که هدرهای HTTP، آدرس IP موبایل من را نشان میدهند (تصویر ۱۴).
راهکارهای بالقوه کاهش خطر
یکی از راهکارها برای کیف پولهای کریپتو این است که برای دسترسی به دامنه مشخص هنگام دریافت تصویر ریموت توکن NFT ملزم به کسب تایید کاربران باشند و به کاربران اطلاع دهند که این موضوع ممکن است به نشت آدرس IP آنها منجر شود. گزینه دیگر میتواند دریافت تصویر ریموت در بکاند باشد، نه در برنامه موبایلی. اما این راهکار نیز به مسأله حملات DDoS رسیدگی نمیکند.
نتیجهگیری
در این مقاله نشان دادیم که عامل مخرب چگونه میتواند یک توکن NFT با تصویر ریموت بر روی سرور خود صادر کند و سپس آن را به آدرس بلاک چین قربانی ایردراپ کند و آدرس IP او را به دست آورد و در نتیجه، حریم خصوصی او را به خطر بیاندازد.
هرچند، پیامدهای این موضوع فراتر از به خطر افتادن و از بین رفتن حریم خصوصی است.
عامل مخرب با انگیزه قوی میتواند تعداد زیادی توکن NFT ایجاد کند، تمام آنها را به یک آدرس URL مرتبط کند و سپس این توکن را به میلیونها کاربر ایردراپ کند و در نتیجه، حملات DDoS بیسابقهای بر روی آدرس URL مذکور انجام دهد.
البته این موضوع به تعداد کاربران و فاصله زمانی که کاربران کیف پولهای خود را باز میکنند بستگی دارد. در مورد متامسک، ۲۱ میلیون کاربر فعال ماهانه وجود دارد.
چرا این موضوع مهم است؟
نکته مهم این است که باتنتی با ۲۱ میلیون ربات، ۸ برابر بزرگتر از باتنت میرای خواهد بود. اوج حمله میرای بر روی یک ترابیت بر ثانیه بود که تخمین زده میشود در این حمله از ۱۴۵,۰۰۰ دستگاه استفاده شده است. طی این حمله، چندین وبسایت معروف نظیر گیتهاب، توییتر، ردیت، نتفلیکس، Airbnb و بسیاری از سایتهای دیگر از دسترس خارج شدند.
اکنون حملهای با قدرت ۸ برابری حمله میرای را تصور کنید.
وجود مکانیزمی که به حملهکنندگان امکان دهد تا آدرس IP کاربران را بر اساس آدرس بلاک چین آنها افشا کند، جامعه را در معرض خطرات بیسابقه لو رفتن اطلاعات شخصی قرار دهد که این موضوع میتواند خطرات فیزیکی نظیر آدمربایی را به دنبال داشته باشد.
ما این سناریو را در کیف پول متامسک تایید کردیم اما مشخص نیست چه تعداد کیف پول این مشکل را دارند.
آیا تاکنون با NFTهای ناشناس در کیف پول خود مواجه شدهاید؟ حفظ حریم خصوصی چقدر برای شما اهمیت دارد؟