1. مقدمه و مرور کلی
Web3 که بر پایه فناوری بلاکچین غیرمتمرکز ساخته شده، شاهد رشد انفجاری در حوزههایی مانند DeFi، NFTها و گیمینگ بوده و ارزش کل قفلشده در آن به میلیاردها دلار میرسد. یکی از اجزای بنیادین این اکوسیستم، احراز هویت Web3 است؛ یک پروتکل چالش-پاسخ که در آن کاربران توسط کلید عمومی خود (آدرس کیف پول) شناسایی میشوند. برنامهها یک پیام را به کیف پول رمزارز کاربر (مانند MetaMask) ارسال میکنند، کاربر آن را با کلید خصوصی خود امضا میکند و برنامه برای اعطای دسترسی، امضا را تأیید میکند.
علیرغم نقش حیاتی این فرآیند به عنوان دروازهای به سوی برنامهها و داراییهای Web3، امنیت آن تا حد زیادی نادیده گرفته شده است. در حالی که تحقیقات پیشین بر روی باگهای قراردادهای هوشمند و سوءاستفادههای DeFi متمرکز بودند، این مقاله یک آسیبپذیری سیستمی در لایه احراز هویت را شناسایی میکند که آن را "حمله پیام کور" مینامد.
آمارهای کلیدی در یک نگاه
- ۷۵.۸٪ از استقرارهای احراز هویت Web3 آزمایششده آسیبپذیر بودند.
- ۲۲ مورد از ۲۹ برنامه کاربردی واقعی در معرض خطر بودند.
- ۸۰٪ نرخ موفقیت شناسایی حمله با Web3AuthGuard.
- دو شناسه CVE برای آسیبپذیریهای کشفشده اختصاص یافت.
2. حمله پیام کور
2.1 مدل حمله و آسیبپذیری
آسیبپذیری اصلی در ناتوانی کاربر در تأیید منبع واقعی و قصد یک درخواست امضا نهفته است. در یک جریان معمول احراز هویت Web3، یک پنجره بازشو در کیف پول، پیامی (اغلب یک نانس تصادفی) را برای امضای کاربر نمایش میدهد. این حمله از این واقعیت سوءاستفاده میکند که این پیام مبهم است و منشأ آن میتواند جعل شود.
سناریوی حمله: یک مهاجم یک وبسایت مخرب ایجاد میکند که صفحه ورود یک برنامه Web3 قانونی را تقلید میکند. هنگامی که کاربر کیف پول خود را متصل میکند، سایت مخرب درخواست احراز هویت (پیام) را از برنامه قانونی هدف به کیف پول کاربر ارسال میکند. کاربر که یک درخواست امضای عمومی را در رابط کیف پول خود میبیند، به طور کورکورانه آن را امضا میکند. سپس امضا از طریق مهاجم به برنامه قانونی ارسال میشود و به مهاجم دسترسی غیرمجاز به حساب کاربر در آن برنامه را اعطا میکند.
2.2 سازوکار فنی
این حمله شکلی از حمله مرد میانی (MitM) در لایه کاربرد است، اما توسط نقصهای طراحی در پروتکل تعامل کیف پول-برنامه تسهیل میشود. API کیف پول (مانند eth_requestAccounts، personal_sign) برای همه انواع پیام، ابردادههای زمینهای درباره دامنه درخواستکننده را اعمال یا به وضوح نمایش نمیدهد و یک "نقطه کور" برای کاربر ایجاد میکند.
3. شناسایی و مقابله
3.1 ابزار Web3AuthChecker
نویسندگان Web3AuthChecker را توسعه دادند، یک ابزار تحلیل پویا که به طور خودکار با APIهای مرتبط با احراز هویت یک برنامه Web3 تعامل میکند. این ابزار با تلاش برای شبیهسازی بردار حمله پیام کور—راهاندازی و ارسال مجدد درخواستهای امضا—برای آسیبپذیری کاوش میکند و بررسی میکند که آیا مدیریت نشست برنامه میتواند توسط امضایی که از یک مبدأ متفاوت به دست آمده، به خطر بیفتد یا خیر.
3.2 Web3AuthGuard برای MetaMask
به عنوان یک دفاع سمت کاربر، نویسندگان Web3AuthGuard را پیادهسازی کردند، یک نمونه اولیه افزونه مرورگر که با کیف پول متنباز MetaMask یکپارچه میشود. عملکرد آن تحلیل زمینه درخواستهای امضا است. این ابزار دامنه آغازکننده درخواست را با دامنه گیرنده مورد نظر تعبیهشده در پیام یا مرتبط با آن مقایسه میکند. در صورت شناسایی عدم تطابق یا الگوی ارسال مجدد مشکوک، قبل از امضای کاربر به او هشدار میدهد.
4. ارزیابی و نتایج
4.1 تنظیمات آزمایشی
این مطالعه ۲۹ برنامه محبوب Web3 را در دستهبندیهایی شامل پلتفرمهای DeFi (مانند Uniswap، Aave)، بازارهای NFT (مانند OpenSea) و بازیهای Web3 ارزیابی کرد. Web3AuthChecker برای آزمایش خودکار نقاط پایانی احراز هویت آنها مستقر شد.
4.2 یافتهها و آمارهای کلیدی
نتایج هشداردهنده بود: ۲۲ مورد از ۲۹ (۷۵.۸٪) برنامهها در برابر حملات پیام کور آسیبپذیر بودند. این شیوع بالا نشان میدهد که آسیبپذیری سیستمی است و یک مورد حاشیهای نیست. ارزیابی بعدی Web3AuthGuard نشان داد که این ابزار میتواند در ۸۰٪ از جریانهای احراز هویت آسیبپذیر آزمایششده با موفقیت هشدار ایجاد کند که امکانسنجی حفاظت بلادرنگ از کاربر را نشان میدهد.
توضیح نمودار (تصوری): یک نمودار میلهای نشان میدهد که "برنامههای آسیبپذیر (۲۲)" به طور قابل توجهی بلندتر از "برنامههای امن (۷)" است. یک نمودار دوم نشان میدهد که میله "هشدارهای موفق" Web3AuthGuard، ۸۰٪ از میله "جریانهای آسیبپذیر آزمایششده" را پوشش میدهد.
5. بررسی عمیق فنی
5.1 پایه ریاضیاتی
احراز هویت Web3 بر امضاهای دیجیتال با استفاده از رمزنگاری منحنی بیضوی، معمولاً منحنی secp256k1 مورد استفاده اتریوم، متکی است. تأیید اصلی برای یک امضای $(r, s)$ روی پیام $m$ برای کلید عمومی $Q$ (مشتقشده از آدرس) به این صورت است:
$ \text{Verify}(m, (r, s), Q) = \text{true} \quad \text{if} \quad s^{-1} \cdot (eG + rQ)_x \equiv r \ (\text{mod}\ n) $
که در آن $e$ هش پیام $m$ است، $G$ نقطه مولد است و $n$ مرتبه منحنی است. این حمله این رمزنگاری را نمیشکند. در عوض، فرض پروتکل مبنی بر اینکه $m$ به یک مبدأ/زمینه خاص مقید است را میشکند. شکست امنیتی این است که $ \text{Context}(m) \neq \text{PerceivedContext}_{user} $.
5.2 نمونهای از چارچوب تحلیل
مطالعه موردی: تحلیل ورود به داشبورد DeFi.
- مرحله ۱ - شناسایی: از Web3AuthChecker برای فراخوانی نقطه پایانی API ورود داشبورد و ثبت پیام چالش $C_d$ استفاده کنید.
- مرحله ۲ - شبیهسازی ارسال مجدد: $C_d$ را در یک درخواست امضای تولیدشده توسط یک سایت مخرب جعلی $M$ تعبیه کنید.
- مرحله ۳ - ارسال امضا: امضای $\sigma$ را که با امضای $C_d$ در زمینه $M$ تولید شده، به نقطه پایانی تأیید داشبورد اصلی ارسال کنید.
- مرحله ۴ - تأیید آسیبپذیری: اگر داشبورد $\sigma$ را بپذیرد و یک نشست ایجاد کند، حمله پیام کور تأیید میشود. نقص این است که داشبورد فقط $\text{Verify}(C_d, \sigma, Q)$ را تأیید میکند، نه اینکه $\text{Origin}(\sigma) == \text{Dashboard}$.
6. دیدگاه تحلیلگر
بینش اصلی: مقاله یان و همکاران ضربهای محکم به رضایت صنعت Web3 در مورد امنیت تجربه کاربری وارد میکند. این مقاله نشان میدهد که همان مکانیسمی که برای حاکمیت کاربر تبلیغ میشود—امضای رمزنگاری—یک نقص تجربه کاربری مهلک دارد که آن را در یک سناریوی فیشینگ کمتر امن از یک رمز عبور سنتی میکند. یک کاربر میتواند یک فیلد رمز عبور جعلی را تشخیص دهد؛ اما نمیتواند یک درخواست امضای جعلشده را تشخیص دهد. این یک باگ قرارداد هوشمند نیست؛ بلکه یک شکست طراحی اساسی در سطح پروتکل در دستدهی کیف پول-برنامه است که یادآور فقدان TLS و سیاست مبدأ یکسان در وب اولیه است.
جریان منطقی: منطق تحقیق بیعیب است. با یک فرضیه شروع کنید (پیامهای احراز هویت میتوانند به طور مخرب ارسال مجدد شوند)، ابزاری (Web3AuthChecker) برای آزمایش در مقیاس بزرگ بسازید، شیوع حیرتآور (۷۵.۸٪) را کشف کنید، سپس یک راهکار مقابله عملی (Web3AuthGuard) را مهندسی کنید تا امکانسنجی مقابله را اثبات کنید. اختصاص CVEs تهدید را رسمی میکند و آن را از یک مفهوم آکادمیک به یک آسیبپذیری که باید اصلاح شود، تبدیل میکند.
نقاط قوت و ضعف: نقطه قوت در بردار حمله ویرانگرانه ساده، اما پیش از این نادیده گرفته شده، و تأثیر عظیم آن در دنیای واقعی است. دفاع نمونه اولیه عملگرایانه است. نقص، همانند بسیاری از تحقیقات امنیت سیستمها، این است که Web3AuthGuard یک چسب زخم است. این ابزار یک بررسی را در جایی اضافه میکند که خود پروتکل باید امنیت را اعمال کند. راهحل بلندمدت نیازمند این است که ارائهدهندگان کیف پول (مانند MetaMask) و نهادهای استاندارد (مانند EIP-712) مقیدسازی رمزنگاری زمینه دامنه به پیام قابل امضا را اجباری کنند. تکیه بر کاربران برای توجه به هشدارها، همانطور که دههها تحقیق فیشینگ نشان داده، محکوم به شکست است.
بینشهای عملی: برای توسعهدهندگان: بلافاصله جریان احراز هویت خود را ممیزی کنید. فقط امضا را تأیید نکنید؛ مبدأ امضا را از طریق مقیدسازی نشست با دامنه خود مطابقت دهید. برای سازندگان کیف پول: این یک آتشسوزی پنجآلارم است. امضای داده ساختاریافته EIP-712 با جداسازی اجباری دامنه را پیادهسازی کنید و آن را به عنوان پیشفرض برای همه درخواستهای احراز هویت قرار دهید. درخواستهای متنی ساده و غیرقابل اعتماد personal_sign را با رابط کاربری پرچمقرمز و چشمگیر ارائه دهید. برای نهادهای استاندارد: پروتکلهایی را که حملات ارسال مجدد را از نظر رمزنگاری غیرممکن میکنند، نه فقط از نظر بصری هشدار داده شده، سریعتر پیگیری کنید. زمان پیشنهادهای مودبانه به پایان رسیده است؛ اکوسیستم ۵۲ میلیارد دلاری DeFi زیرساختهای امنیتی قوی را طلب میکند.
7. کاربردها و جهتگیریهای آینده
پیامدها فراتر از ورود به سیستم است. هر درخواست امضای Web3—برای تراکنشها، تأیید توکنها، رأیهای DAO—به طور بالقوه در برابر حملات ارسال مجدد کور مشابه آسیبپذیر است. تحقیق و توسعه آینده باید بر موارد زیر متمرکز شود:
- راهحلهای سطح پروتکل: پذیرش و اجرای گسترده EIP-712 و جانشینان آن، که به پیامها اجازه میدهد با پارامترهای دامنه قابل تأیید تایپ و ساختاریافته شوند و آنها را غیرقابل ارسال مجدد کنند.
- یکپارچهسازی کیف پول سختافزاری: گسترش تأیید زمینه به صفحهنمایش کیف پولهای سختافزاری، که در حال حاضر دادههای پیام محدودی را نیز نمایش میدهند.
- تأیید رسمی جریانهای احراز هویت: اعمال روشهای رسمی، مشابه آنهایی که برای قراردادهای هوشمند استفاده میشود (مانند چارچوب KEVM)، برای تأیید ویژگیهای امنیتی خود پروتکل احراز هویت خارج از زنجیره.
- شناساگرهای یادگیری ماشین: ساخت بر روی ابزارهایی مانند Web3AuthChecker برای ایجاد سیستمهای نظارت پیوسته برای فروشگاههای dApp یا ممیزان امنیتی که به طور خودکار پیادهسازیهای آسیبپذیر احراز هویت را علامتگذاری میکنند.
- همگرایی هویت غیرمتمرکز (DID): این کار بر نیاز به استانداردهای احراز هویت DID قویتر (مانند اعتبارنامههای قابل تأیید W3C) تأکید میکند که از ابتدا با در نظر گرفتن این بردارهای حمله طراحی شدهاند.
8. منابع
- Yan, K., Zhang, X., & Diao, W. (2024). Stealing Trust: Unraveling Blind Message Attacks in Web3 Authentication. Proceedings of the 2024 ACM SIGSAC Conference on Computer and Communications Security (CCS’24).
- Nakamoto, S. (2008). Bitcoin: A Peer-to-Peer Electronic Cash System.
- MetaMask. https://metamask.io
- EIP-712: Ethereum Typed Structured Data Hashing and Signing. https://eips.ethereum.org/EIPS/eip-712
- Atzei, N., Bartoletti, M., & Cimoli, T. (2017). A survey of attacks on Ethereum smart contracts (SoK). Principles of Security and Trust.
- Zhuang, Y., et al. (2020). Tools and benchmarks for automated log parsing. IEEE International Conference on Software Engineering (ICSE). (Example of rigorous tool evaluation methodology).
- DeFi Llama. Total Value Locked Statistics. https://defillama.com