
چگونه درینرهای کیف پول کار میکنند: تأییدیهها و امضاهایی که حسابها را خالی میکنند
دستگاههای تخلیه کیف پول با برداشت مجوزهای قابل استفاده مجدد از کیف پول یک قربانی کار میکنند و سپس از آن اجازه برای جابجایی توکنها، NFTها و گاهی اوقات سکههای بومی بدون درخواست مجدد استفاده میکنند. زنجیره این تأییدیههای امضا شده و مجوزهای دادهای تایپ شده را به عنوان دستورالعملهای معتبر اجرا میکند، بنابراین سرقت معمولاً به عنوان فعالیت عادی DeFi خوانده میشود نه یک "هک".
نکات کلیدی
- یک دستگاه تخلیه کیف پول معمولاً بدون یک عبارت دانه با متقاعد کردن قربانی به امضای یک تأییدیه ERC-20، یک تأییدیه اپراتور NFT، یا یک امضای دادهای تایپ شده به سبک مجوز موفق میشود.
- این کلاهبرداری معمولاً دو مرحلهای است: ابتدا برداشت مجوز، سپس یک جاروکش خودکار بلافاصله یا بعداً با استفاده از توابعی مانند transferFrom یا setApprovalForAll.
- فیشینگ امضا معمولاً خطرناکتر از آنچه به نظر میرسد است زیرا امضاهای دادهای تایپ شده میتوانند پس از واقعیت به تأییدیههای زنجیرهای تبدیل شوند.
- تخلیهکنندهها معمولاً از روترهای DEX قانونی عبور میکنند تا ردیابی زنجیرهای شبیه به یک مبادله عادی باشد، که تشخیص و پاسخ را به تأخیر میاندازد.مبانی تخلیه کیف پول و فیشینگ تأییدیهحقه اصلی ساده است: حملهکننده نیازی به شکستن رمزنگاری کیف پول ندارد اگر قربانی بتواند متقاعد شود که حملهکننده را به عنوان یک خرجکننده مجاز کند. به همین دلیل یک دستگاه تخلیه کیف پول درون تجربه کاربری عادی DeFi قرار دارد، نه خارج از آن.
- قربانی یک کیف پول متصل میکند، یک پیام آشنا میبیند و چیزی را امضا میکند که به نظر روتین میرسد. سپس بلاکچین دقیقاً همانطور که امضا شده است، مجوز را اجرا میکند.
به همین دلیل است که
فیشینگ تأییدیه
مدل ذهنی درستی است. حملهکننده به عنوان قربانی "وارد" نمیشود. حملهکننده یک مجوز را که پروتکل آن را شناسایی میکند، به دست میآورد و سپس از آن مانند یک خط اعتباری دائمی استفاده میکند.
گزارش کمپین تخلیه کیف پول FinanceFeeds به وضوح بیان میکند که این جریانها میتوانند کیف پولها را "به محض اینکه کاربر روی تأیید کلیک کند" خالی کنند و مکانیکها استفاده قانونی از DeFi را منعکس میکنند نه بدافزار یا یک سوءاستفاده.یک تمایز مفید برای خوانندگانی که از امنیت Web2 میآیند این است که یک کیف پول میتواند "به خطر بیفتد" به این معنا که قابل تخلیه است بدون اینکه کلید خصوصی
هرگز از دستگاه خارج شود. CryptoAdventure این را به عنوان رضایت توصیف میکند: کاربر امضا میکند، زنجیره تأیید میکند، حملهکننده انتقال میدهد. به همین دلیل است که "من از یک کیف پول سختافزاری" استفاده میکنم" یک دفاع کامل نیست.
FinanceFeeds اشاره میکند که کیف پولهای سختافزاریریسک سرقت کلید خصوصی را کاهش میدهند، اما از تخلیههای تأیید شده توسط کاربر جلوگیری نمیکنند اگر کاربر تأییدیه نادرست را امضا کند.این توضیح درون موضوع گستردهتری از کلاهبرداریهای کیف پول کریپتو و چگونگی اجتناب از آنها قرار دارد زیرا دفاع عمدتاً بهداشت مجوز است، نه آنتیویروس.جریان حمله اتصال و تأیید
مسیر تخلیه با احتمال بالاتر ابتدا یک مشکل توزیع و سپس یک مشکل
قرارداد هوشمند
است. FinanceFeeds یک کتاب بازی پنج مرحلهای را توصیف میکند که به مشاوره سایبری ملی هند TAU/ADV/013 مرتبط است: جعل هویت DM در تلگرام، دیسکورد یا X، یک سایت کلاهبرداری، یک پیام اتصال کیف پول از طریق WalletConnect یا یک مرورگر درون کیف پول، یک تأییدیه واحد، سپس یک جاروکش خودکار.
تجزیه و تحلیل Blockaid یک بردار توزیع دیگر را اضافه میکند که برای معاملهگران سریع مهم است: ربودن جلویی، جایی که UI یک سایت قانونی با نسخه مخرب جایگزین میشود.به طور کلی، جریان معمولاً اینگونه است:1. کاربر را به یک دامنه شبیه به دامنه واقعی یا جلوی ربوده شده جذب کنید. دامنه معمولاً "تأیید کنید"، "ادعا کنید" یا "ایردراپ" است و برای ایجاد فوریت طراحی شده است. 2. اتصال کیف پول را زودتر مجبور کنید.
Blockaid صفحهای را مشاهده کرد که هر دکمهای گفتگوی اتصال را فعال میکرد، که یک نشانه رفتاری رایج است. 3. زمینه کیف پول را جمعآوری کنید. Blockaid نشان میدهد که تخلیهکننده با زیرساخت فرمان و کنترل ارتباط برقرار میکند و از خواندنهای JSON-RPC مانند eth_call برای یادگیری اینکه چه داراییها و وضعیت nonce را میتواند هدف قرار دهد، استفاده میکند. 4. مجوز را برداشت کنید.
این لحظهای است که قربانی فکر میکند که در حال انجام کاری بیضرر است، مانند تأیید یک توکن برای مبادله یا "امضای یک پیام". 5. جاروکش را اجرا کنید. FinanceFeeds توصیف میکند که "همه چیز را در چند ثانیه جارو میکند" و Coca تأکید میکند که تخلیه میتواند به تأخیر بیفتد، که به همین دلیل قربانیان در مورد اینکه چه عملی باعث از دست دادن شده است، گیج میشوند.
زاویه "تخلیهکننده به عنوان یک سرویس" مهم است زیرا توضیح میدهد که چرا این جریانها شبیه الگو هستند. Coca تخلیهکنندهها را به عنوان کیتهایی توصیف میکند که به کلاهبرداران فروخته میشوند و این بستهبندی به همین دلیل است که الگوهای UX مشابه در زنجیرهها و کیف پولها تکرار میشوند.
تخلیهکنندهها از مجوزها در زنجیره سوءاستفاده میکنند
مجوزهای ERC-20 کار اساسی هستند. یک dApp عادی از کاربر تأیید میخواهد تا بتواند توکنها را به نمایندگی از کاربر در حین مبادله یا واریز جابجا کند. یک تخلیهکننده کریپتو همان تأیید را میخواهد، اما خرجکننده را به یک قرارداد یا آدرس تحت کنترل حملهکننده اشاره میکند و معمولاً یک سقف نامحدود را فشار میدهد.
هنگامی که آن تأیید وجود دارد، حملهکننده میتواند بعداً برگردد و توکنها را با استفاده از transferFrom بدون هیچ درخواست جدیدی از قربانی جابجا کند. FinanceFeeds و Coca هر دو تأییدهای نامحدود را به عنوان اهرمی که این کار را مقیاسپذیر میکند، ذکر میکنند.
الگوی تخلیه تأخیری جایی است که مردم آنچه را که اتفاق افتاده است، اشتباه تشخیص میدهند. Coca توالیای را توصیف میکند که در آن کاربر امروز تأیید میکند، هیچ حرکتی فوری نمیبیند، سپس بعداً کیف پول را پر میکند و در عرض چند ثانیه تخلیه میشود زیرا تأییدیه ایستاده قبلاً در محل بوده است. به همین دلیل است که راه درست برای خواندن یک تأیید این نیست که "آیا پول همین حالا خارج شد؟" بلکه "من چه کسی را به تازگی مجاز کردم که بعداً پول را بکشند؟"
NFTها نسخه خود را از همین تله دارند. FinanceFeeds و Coca هر دو به setApprovalForAll اشاره میکنند که به یک اپراتور اجازه میدهد تمام NFTها را در یک مجموعه برای آن کیف پول جابجا کند. کاربران معمولاً این را به عنوان یک مرحله یکباره برای لیست کردن یا ضرب کردن در نظر میگیرند. برای یک تخلیهکننده، این یک کلید اصلی برای آن مجموعه است.
دو پیامد عملی از این نتیجه میشود:
1. مزیت حملهکننده پایداری است. یک تأییدیه واحد میتواند تا زمانی که لغو نشود، معتبر باقی بماند. 2. مزیت قربانی قابلیت برگشتپذیری مجوزها است. FinanceFeeds و Coca هر دو به ابزارهایی مانند Revoke.cash و بررسی تأیید توکن Etherscan اشاره میکنند تا مجوزها و تأییدهای اپراتور را مرور و لغو کنند.
این همچنین جایی است که اصطلاح تخلیهکننده کیف پول باید توضیح داده شود: این یک قرارداد جادویی نیست که "کیف پولها را بشکند". این اتوماسیونی است که از ریلهای مجوز دقیقی که DeFi به آن وابسته است، سوءاستفاده میکند.
تخلیهکنندههای مبتنی بر امضا و تلههای مجوز
گرانترین پاپآپها معمولاً آنهایی هستند که به عنوان تراکنش به نظر نمیرسند. تجزیه و تحلیل Blockaid در تاریخ 2024-10-13 نشان میدهد که یک تخلیهکننده از eth_signTypedData_v4 برای ضبط یک امضای دادهای تایپ شده EIP-712 که یک مجوز EIP-2612 را رمزگذاری میکند، استفاده میکند.
تخلیهکننده ابتدا اطلاعات nonce و متاداده توکن را از طریق eth_call جمعآوری کرد، سپس قربانی را به امضای دادههای ساختاری که یک خرجکننده را برای یک مقدار بسیار بزرگ مجاز میکرد، ترغیب کرد. نکته کلیدی این است که امضا در لحظهای که قربانی آن را امضا میکند، خارج از زنجیره است، اما میتواند بعداً از طریق تابع مجوز توکن به زنجیره ارسال شود.
این فیشینگ امضا در پاکترین شکل خود است. قربانی فکر میکند "من تراکنشی ارسال نکردم." حملهکننده فکر میکند "من فقط یک تأییدیه گرفتم که میتوانم هر زمان که بخواهم اجرا کنم." Coca خطرات امضاهای مجوز و سبک Permit2 را به عنوان بخشی از کیتهای مدرن تخلیهکنندهها علامتگذاری میکند و CryptoAdventure اینها را به عنوان تخلیهکنندههای مبتنی بر امضا که از تخلیهکنندههای تأیید زنجیرهای کلاسیک متمایز هستند، گروهبندی میکند.
Blockaid همچنین در همان جریان مشاهده کرد که wallet_switchEthereumChain به یک تغییر به Arbitrum One مجبور میشود، حتی اگر صفحه به عنوان یک ایردراپ زنجیره BNB ظاهر شود. این درخواست تغییر زنجیره فقط ظاهری نیست. این یک راه برای هدف قرار دادن شبکهای است که قربانی واقعاً داراییهایی در آن دارد.
دو پیامد برای کاربران مهم است:
1. امضاهای دادهای تایپ شده میتوانند دشوارتر از یک درخواست تأیید زنجیرهای برای درک باشند زیرا به عنوان "امضای یک پیام" ارائه میشوند. Blockaid استدلال میکند که بیشتر کیف پولها نمیتوانند این امضاهای خارج از زنجیره را به روشی شبیه به شبیهسازی تراکنشهای زنجیرهای شبیهسازی کنند. 2. حملهکننده میتواند برداشت مجوز را از اجرا جدا کند.
این انعطافپذیری زمانی است که به تخلیهکنندهها اجازه میدهد برای لحظات با هزینه کم یا برای پر شدن کیف پول منتظر بمانند.
این همچنین دلیل این است که امضای کور یک حالت شکست مکرر است. اگر UI کیف پول به وضوح نشان ندهد که دادههای تایپ شده چه مجوزی میدهند، کاربر در واقع در تاریکی امضا میکند.
چرا درینها شبیه فعالیتهای عادی به نظر میرسند
یک اپراتور درین میخواهد زنجیره شبیه به یک فعالیت خستهکننده به نظر برسد. Blockaid یک درین دارایی بومی را نشان میدهد که از طریق یک قرارداد روتر معتبر SushiSwap هدایت میشود و تابع swapETHForExactTokens را فراخوانی میکند، نه یک انتقال مستقیم ETH به آدرس یک مهاجم. نکته این نیست که SushiSwap به خطر افتاده است. نکته این است که هدایت از طریق یک روتر پرکاربرد باعث میشود که تراکنش شبیه به رفتار عادی مبادله به نظر برسد.
FinanceFeeds همان مشاهده را از دیدگاه قربانی انجام میدهد: Darktrace یک واریانت را ردیابی کرد که ۴۷۰,۰۰۰ دلار از یک قربانی در دو دقیقه درین کرد و تراکنش زنجیرهای "هیچ تفاوتی با یک مبادله عادی Uniswap ندارد." این لایه استتار است. اگر سرقت شبیه به یک مبادله به نظر برسد، ناظران عادی و حتی برخی از الگوریتمهای خودکار زمان را از دست میدهند.
این جایی است که فرضیه به کار میآید: مجوز محصول است. هنگامی که مهاجم یک مجوز معتبر، تأیید اپراتور یا امضای مجوز داشته باشد، بلاکچین آن را بهطور وفادار بعداً، سریع و به روشی که میتواند از طریق قراردادهای معتبر هدایت شود، اجرا خواهد کرد.
برای معاملهگران و کاربران حرفهای، نکته عملی این است که "شناسایی سرقت در زنجیره" یک دفاع ضعیف است. تا زمانی که یک درین شبیه به مبادله قابل مشاهده باشد، داراییها قبلاً منتقل شده و اغلب به توکنهای با نقدینگی بیشتر تبدیل شدهاند. لحظه با سیگنال بالاتر، زودتر در مرز مجوز است: درخواستهای غیرمنتظره تغییر زنجیره، دیالوگهای متصل مکرر و سایتی که قبل از انجام هر کار مفیدی، تأییدها را فشار میدهد.
چگونه ریسک درین را کاهش دهیم
دفاع عمدتاً در مورد کاهش میزان اختیاری است که هر کلیک واحد میتواند اعطا کند و کاهش میزان ارزشی که پشت آن اختیار قرار دارد. FinanceFeeds پیشنهاد میکند که با پنل "سایتهای متصل" یا "مجوزها" خود کیف پول شروع کنید تا هر چیزی که بهطور فعال استفاده نمیشود را لغو کنید، سپس تأییدهای توکن را با Revoke.cash بررسی کنید. Coca لغو را به عنوان یک روند عادی، نه یک وضعیت اضطراری، معرفی میکند زیرا درین میتواند به تأخیر بیفتد.
یک جریان کاری تمیز به این شکل است:
۱. نقشها را در کیف پولها جدا کنید. یک کیف پول "خزانه" نگهدارید که هرگز به dApps متصل نمیشود و یک کیف پول خرج یا سوزان برای مینتها، ایردراپها و پروتکلهای جدید. Coca بهطور صریح این ساختار را برای محدود کردن شعاع انفجار توصیه میکند. ۲. هر تأیید یا امضا را به عنوان یک خط اعتبار دائمی در نظر بگیرید. اگر پیام نشاندهنده نامحدود باشد، فرض کنید که خرجکننده میتواند موجودی کامل را بعداً برداشت کند مگر اینکه dApp محدودیت تنگتری ارائه دهد. ۳.
به پرچمهای قرمز UX که با درینها همبستگی دارند، توجه کنید. مثال Blockaid شامل درخواستهای متصل مداوم و درخواست wallet_switchEthereumChain است که با زنجیره اعلام شده سایت تناقض دارد. ۴. بهطور منظم بررسی و لغو کنید. FinanceFeeds و Coca هر دو به Revoke.cash و چککننده تأیید توکن Etherscan برای بررسی مجوزها و لغو آنها اشاره میکنند. ۵. اگر هدف قرار گرفتید، ابتدا بر روی مجوزها عمل کنید.
سایتهای متصل را قطع کنید، تأییدها و مجوزهای اپراتور NFT را لغو کنید و وجوه باقیمانده را به یک آدرس جدید منتقل کنید. FinanceFeeds تأکید میکند که درین به خود Trust Wallet سوءاستفاده نمیکند و همان ریسک در کیف پولهای داغ مانند MetaMask و Phantom نیز وجود دارد.
این بخشی از کلاهبرداریهای کیف پول کریپتو و نحوه جلوگیری از آنها است که واقعاً تحت فشار دوام میآورد: فرض کنید کیف پول خرج در نهایت چیزی احمقانه امضا خواهد کرد و سیستم را طوری طراحی کنید که آن اشتباه قابل تحمل باشد.
نتیجهگیری
من شاهد بودهام که افراد زیادی یک درین را به عنوان یک "هک" معرفی میکنند و سپس ساعت اول را به دنبال بدافزار میگذرانند در حالی که مشکل واقعی به عنوان مجوزی که آنها اعطا کردهاند، در زنجیره نشسته است. تغییر ذهنی پرهزینه این است که تأییدها و امضاهای دادهای تایپشده را مانند باز کردن یک خط اعتبار دائمی در نظر بگیریم. هنگامی که آن خط وجود دارد، مهاجم نیازی به درخواست دوباره ندارد. آنها فقط بعداً با transferFrom یا یک انتقال اپراتور ظاهر میشوند و زنجیره آن را اجرا میکند.
حالت شکست که مکرراً تکرار میشود، امضای کور است که به عنوان یک کلیک بیخطر پوشش داده شده است. تجزیه و تحلیل Blockaid در تاریخ ۲۰۲۴-۱۰-۱۳ مثال تمیزی است: eth_signTypedData_v4 یک مجوز برداشت میکند، سپس درین میتواند از طریق یک روتر واقعی هدایت شود تا شبیه به یک مبادله عادی به نظر برسد. کیف پولهای سختافزاری کلیدها را ایمن نگه میدارند، اما قضاوت را نجات نمیدهند. بهداشت مجوز این کار را انجام میدهد.
منابع
FinanceFeeds
Blockaid
پرسشهای متداول
آیا دزدهای کیف پول به عبارت دانه من نیاز دارند تا ارز دیجیتال من را سرقت کنند؟
معمولاً نه. بسیاری از کمپینهای دزد کیف پول به امضای شما برای تأیید یا امضای مجوزی که انتقالات را مجاز میکند، وابستهاند. هنگامی که آن تأیید وجود دارد، مهاجم میتواند داراییها را بدون داشتن کلید خصوصی شما منتقل کند.
چگونه دزدها پس از اینکه روی تأیید کلیک کردم، ارز دیجیتال را سرقت میکنند؟
یک تأیید ERC-20 یک مجوز برای یک خرجکننده خاص ایجاد میکند و آن خرجکننده میتواند بعداً با استفاده از transferFrom بدون درخواست مجدد، توکنها را منتقل کند. اگر تأیید نامحدود باشد، سقف به طور مؤثر موجودی کامل شماست. برخی کمپینها تا زمانی که کیف پول را دوباره شارژ نکنید، سرقت را به تأخیر میاندازند.
فیشینگ امضا چیست و چرا خطرناک است؟
فیشینگ امضا شما را فریب میدهد تا دادههای ساختاریافتهای مانند یک پیام دادهای نوع EIP-712 را امضا کنید که میتواند برای مجاز کردن اقدامات بعدی استفاده شود. Blockaid نشان میدهد که دزدها امضاهای eth_signTypedData_v4 را برای به دست آوردن تأییدهای مجوز EIP-2612 ضبط میکنند. قربانیان ممکن است فکر کنند که فقط "یک پیام را امضا کردهاند"، اما امضا میتواند بعداً در زنجیره ارسال شود.
چرا یک تراکنش دزد کیف پول مانند یک مبادله عادی در زنجیره به نظر میرسد؟
دزدها میتوانند سرقت را از طریق قراردادهای مشروع مانند روترهای DEX هدایت کنند، بنابراین تراکنش شبیه رفتار مبادلهای روتین به نظر میرسد. Blockaid نشان میدهد که یک سرقت دارایی بومی از طریق روتر SushiSwap هدایت شده است و FinanceFeeds به مواردی اشاره میکند که ردیابی شبیه یک مبادله معمولی Uniswap به نظر میرسد. آن استتار میتواند تشخیص را به تأخیر بیندازد.
چگونه میتوانم تأییدها را بررسی و لغو کنم تا دزد را متوقف کنم؟
سایتها و مجوزهای متصل را در داخل کیف پول خود بررسی کنید، سپس مجوزهای توکن و تأییدهای اپراتور NFT را با ابزارهایی مانند Revoke.cash یا بررسیکننده تأیید توکن Etherscan حسابرسی کنید. اگر خرجکنندههای ناشناخته یا سقفهای نامحدود مشاهده کردید، آنها را لغو کنید. لغو قبل از اینکه کیف پول دوباره شارژ شود، مؤثرتر است.