تراکنش ناشناس در کیف پول؛ حمله مسمومسازی آدرس چیست و چطور گول نخوریم؟
در تاریخچه کیف پولتان انتقالی میبینید که خودتان نفرستادهاید، با همان مبلغ پرداخت واقعیتان یا مبلغی خیلی کم، به آدرسی شبیه گیرنده همیشگی؟ این حمله مسمومسازی آدرس است. ببینید چطور کار میکند، چرا انگار از کیف پول خودتان رفته و چطور در دامش نیفتید.
اگر در تاریخچه کیف پولتان تراکنشی میبینید که خودتان انجام ندادهاید، مثلاً انتقالی با دقیقاً همان مبلغ پرداخت قبلیتان یا مبلغی خیلی ناچیز، آن هم با آدرسی که اول و آخرش درست شبیه آدرس یکی از گیرندههای همیشگیتان است، به احتمال زیاد هدف حمله «مسمومسازی آدرس» (Address Poisoning) قرار گرفتهاید. معمولاً کیف پول شما هک نشده و پولی هم از آن کم نشده است. خطر در قدم بعد است: اینکه دفعه بعد آدرس گیرنده را از همین تاریخچه کپی کنید و پول را به آدرس جعلی بفرستید.
این حمله دقیقاً چطور اجرا میشود؟
تراکنشهای بلاکچین عمومیاند. هر کسی میتواند ببیند چه آدرسی به چه آدرسی، چه توکنی و چقدر فرستاده است. کلاهبردارها از همین استفاده میکنند و کل کار را با ربات خودکار انجام میدهند:
- شما یک انتقال واقعی انجام میدهید. مثلاً ۵۰۰ تتر را روی شبکه ترون به آدرس صرافی یا دوستتان میفرستید.
- ربات مهاجم این انتقال را روی شبکه میبیند. آدرس شما و آدرس گیرنده را برمیدارد.
- یک آدرس تقلبی شبیه آدرس گیرنده میسازد. با نرمافزارهای ساخت آدرس دلخواه (Vanity Address) آنقدر آدرس تولید میکند تا یکی پیدا شود که چند کاراکتر اول و آخرش با آدرس گیرنده شما یکی باشد. طبق اتراسکن، چون کیف پولها و مرورگرها معمولاً وسط آدرس را کوتاه میکنند و فقط ابتدا و انتهایش را نشان میدهند، این دو آدرس در نگاه اول یکسان به نظر میرسند.
- یک تراکنش جعلی در تاریخچه شما مینشاند. معمولاً با تتر تقلبی به همان مبلغ، یا با مقدار خیلی کمی از یک توکن واقعی. این تراکنش معمولاً چند دقیقه بعد از انتقال واقعی ثبت میشود، طوری که درست کنار آن در فهرست فعالیتهای شما قرار بگیرد. در پژوهش دانشگاه کارنگی ملون روی شبکههای اتریوم و BSC، این تراکنشها در بازه ۲۰ دقیقه بعد از انتقال اصلی بررسی شدهاند.
- منتظر اشتباه شما میماند. دفعه بعد که میخواهید به همان گیرنده پول بفرستید، ممکن است بهجای گرفتن آدرس از منبع اصلی، به تاریخچه کیف پول بروید و آدرسی را کپی کنید که «آشنا» به نظر میرسد. اگر آدرس تقلبی را بردارید، پول مستقیم به کیف پول مهاجم میرود و انتقال روی بلاکچین برگشتپذیر نیست.
این حمله ارزان است و به همین دلیل در مقیاس خیلی بزرگ اجرا میشود. پژوهش کارنگی ملون فقط در اتریوم و BSC و در فاصله تیر ۱۴۰۱ تا تیر ۱۴۰۳ بیش از ۲۷۰ میلیون تلاش مسمومسازی را شناسایی کرده که حدود ۸۳٫۸ میلیون دلار خسارت به همراه داشته است. TRM Labs هم همین الگو را در شبکه ترون گزارش کرده، جایی که کارمزد پایین ارسال این تراکنشهای ریز را برای مهاجم بهصرفهتر میکند.
یک مثال با آدرسهای ساختگی
فرض کنید آدرس واقعی گیرنده شما این است:
`TQ7mMASi45ub7Qe4ZE36UT5G6cU4u8fXk2`
و مهاجم این آدرس را ساخته است:
`TQ7md8Fhhe4deS4F3cw9KTAb8dLcu8fXk2`
هر دو با `TQ7m` شروع و با `8fXk2` تمام میشوند. در کیف پولی که وسط آدرس را کوتاه میکند، هر دو شبیه `TQ7m...8fXk2` نمایش داده میشوند. فقط وقتی وسط آدرس را کامل بخوانید تفاوت معلوم میشود. (این دو آدرس فقط برای مثال ساخته شدهاند و متعلق به کسی نیستند.)
دو شکلی که این تراکنشها در کیف پول شما دیده میشوند
چیزی که در تاریخچه میبینید | در واقع چه اتفاقی افتاده | چه کار کنید |
|---|---|---|
یک «ارسال USDT» دیگر از کیف پول شما، با دقیقاً همان مبلغ پرداخت واقعیتان (مثلاً ۵۰۰ تتر)، چند دقیقه بعد از آن و به آدرسی شبیه گیرنده؛ ممکن است بعد از هر پرداخت تکرار شود | تتر تقلبی: توکنی که مهاجم خودش ساخته و نام و نمادش را USDT گذاشته، اما قراردادش با قرارداد رسمی تتر یکی نیست و هیچ ارزشی ندارد؛ از موجودی واقعی شما چیزی کم نشده | آدرس قرارداد توکن را با قرارداد رسمی تتر مقایسه کنید (پایینتر توضیح دادهایم)؛ توکن را پنهان کنید و آدرس این ردیف را هرگز کپی نکنید |
دریافت مقدار خیلی کمی تتر یا توکن واقعی دیگر (مثلاً کسری از یک دلار) از آدرسی شبیه گیرندهتان | مهاجم واقعاً این مقدار ناچیز را از آدرس جعلیاش برایتان فرستاده تا آن آدرس در تاریخچه شما بنشیند | به آن دست نزنید و چیزی برنگردانید |
اتراسکن و پژوهش کارنگی ملون هر دو این روشها را توصیف کردهاند. هدف هر دو یکی است: آدرس جعلی را جلوی چشم شما بگذارند.
تتر تقلبی با همان مبلغ: چرا فکر میکنید تراکنش خودتان است؟
فریبندهترین شکل این حمله همین است. فرض کنید ۵۰۰ تتر برای کسی فرستادهاید. چند دقیقه بعد، در تاریخچه کیف پولتان دو ردیف «ارسال ۵۰۰ USDT» پشت سر هم میبینید که یکی را خودتان فرستادهاید و دیگری را مهاجم ساخته است. مبلغ همان است، نام و نماد توکن همان است، زمان تقریباً همان است و آدرس مقصد هم با همان چند کاراکتر اول و آخر شروع و تمام میشود. چون ربات به هر انتقال شما واکنش نشان میدهد، این کار میتواند بعد از هر پرداخت تکرار شود و کنار هر انتقال واقعی یک «کپی» تقلبی بنشیند.
طبیعی است آن ردیف را با تراکنش خودتان اشتباه بگیرید و دفعه بعد آدرسش را کپی کنید. اما آن ۵۰۰ «تتر» از قرارداد دیگری آمده و ارزشی ندارد. از موجودی واقعی شما هم چیزی کم نکرده است.
راه تشخیص، آدرس قرارداد توکن است، نه اسم یا لوگوی آن. تراکنش را در مرورگر بلاکچین باز کنید و ببینید توکن به کدام قرارداد وصل است. تتر در صفحه رسمی خود این قراردادها را برای USDT اعلام کرده است:
- شبکه ترون (TRC20): `TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t`
- شبکه اتریوم (ERC20): `0xdAC17F958D2ee523a2206206994597C13D831ec7`
اگر قرارداد توکن در تراکنش چیز دیگری است، آن «تتر» جعلی است، حتی اگر نام، نماد و مبلغش کاملاً درست باشد. مستندات ترون هم همین را توصیه میکند: قرارداد توکن را در تروناسکن با قرارداد اعلامشده مقایسه کنید. در شبکههای دیگر هم آدرس قرارداد را از سایت رسمی صادرکننده توکن بگیرید.
چطور تراکنشی از کیف پول من ثبت شده، وقتی من چیزی نفرستادهام؟
این نگرانکنندهترین بخش ماجراست و جوابش به طرز کار توکنها برمیگردد.
تترِ روی شبکههایی مثل ترون، اتریوم یا آربیتروم یک «توکن» است. موجودی توکن در خود کیف پول شما نگه داشته نمیشود، بلکه هر توکن یک قرارداد هوشمند (Smart Contract) دارد که دفتر حساب همان توکن را نگه میدارد. هر بار انتقالی انجام میشود، قرارداد یک «رویداد انتقال» (Transfer) در گزارش خودش ثبت میکند: از این آدرس، به آن آدرس، این مقدار. کیف پولها و مرورگرهای بلاکچین تاریخچه توکن شما را از روی همین رویدادها میسازند.
قرارداد رسمی تتر فقط وقتی انتقالی از حساب شما ثبت میکند که خودتان آن را امضا کرده باشید. اما توکن تقلبی را مهاجم خودش نوشته و قوانینش دست خود اوست. او میتواند قراردادش را طوری بسازد که یک رویداد انتقال با این مشخصات ثبت کند: «فرستنده: آدرس شما، گیرنده: آدرس جعلی، مبلغ: ۵۰۰ USDT». قرارداد مال خودش است و این رویداد را بدون هیچ امضایی از طرف شما ثبت میکند. کیف پول شما هم این رویداد را میخواند و آن را بهصورت «ارسال ۵۰۰ USDT» در تاریخچهتان نشان میدهد. اتراسکن به این روش «جعل توکن» (Token Spoofing) میگوید و در پژوهش کارنگی ملون هم همین الگو دیده شده: انتقال توکن تقلبی از آدرس قربانی به آدرس جعلی، با همان مبلغی که قربانی به گیرنده واقعی فرستاده بود.
همین اتفاق در آربیتروم هم دیده شده است. دیکریپت گزارش داده که بعد از ایردراپ توکن ARB، یک قرارداد جعلی با هر ارسال کاربران یک «تراکنش» اضافه میساخت که انگار از کیف پول خود آنها فرستاده شده بود.
نتیجه برای شما:
- برای ثبت این تراکنشها به کلید خصوصی یا عبارت بازیابی شما نیازی نبوده و شما هم چیزی امضا نکردهاید.
- موجودی تتر واقعی شما تغییری نکرده است.
- تنها کارکرد این تراکنش، گذاشتن آدرس جعلی در تاریخچه شماست.
چه زمانی ماجرا جدیتر است؟
اگر مبلغی از تتر واقعی شما کم شده و خودتان آن را نفرستادهاید، دیگر با مسمومسازی آدرس طرف نیستید. یا کلید خصوصی و عبارت بازیابی شما لو رفته، یا قبلاً به یک قرارداد یا سایت مشکوک اجازه برداشت دادهاید. در این حالت باقی داراییتان را فوراً به یک کیف پول تازه با عبارت بازیابی جدید منتقل کنید. مستندات امنیتی ترون هم توصیه میکند اجازههای برداشت TRC-20 را که دیگر استفاده نمیکنید باطل کنید.
برای اینکه بفهمید تراکنش واقعی بوده یا نه، آن را در مرورگر بلاکچین باز کنید: مبلغ، آدرس قرارداد توکن و آدرسها را ببینید. خواندن این صفحه را در راهنمای TXID و پیگیری تراکنش قدمبهقدم توضیح دادهایم.
چطور در دام مسمومسازی آدرس نیفتیم؟
مهاجم فقط یک راه برای موفقیت دارد: اینکه شما آدرس را از جای اشتباه بردارید. پس بیشتر این توصیهها درباره این است که آدرس را از کجا میآورید.
آدرس را هیچوقت از تاریخچه تراکنشها کپی نکنید
این مهمترین قانون است. آدرس گیرنده را هر بار از منبع اصلی بگیرید: صفحه واریز صرافی مقصد، پیامی که خود گیرنده فرستاده، یا فهرست آدرسهایی که قبلاً خودتان ذخیره کردهاید. تاریخچه کیف پول جای امنی برای برداشتن آدرس نیست، چون هر کسی میتواند چیزی در آن ثبت کند.
آدرسهای پرتکرار را یکبار ذخیره کنید
اگر به یک آدرس زیاد پول میفرستید، یکبار با دقت کامل آن را بررسی کنید و در دفترچه آدرس یا فهرست مخاطبان کیف پول ذخیره کنید. از آن به بعد آدرس را از همانجا انتخاب کنید. اتراسکن هم استفاده از فهرست مخاطبان، لیست سفید (Whitelist) و برچسبگذاری آدرسها را پیشنهاد میکند.
کل آدرس را چک کنید، نه فقط اول و آخرش را
عادت رایجِ «چهار کاراکتر اول و آخر را نگاه کن» دقیقاً همان چیزی است که مهاجم برایش آدرس ساخته. در پژوهش کارنگی ملون، آدرسهای جعلی دستکم در ۳ کاراکتر اول و ۴ کاراکتر آخر با آدرس اصلی یکی بودهاند. بخشی از وسط آدرس را هم مقایسه کنید. اگر آدرس را از جایی پیست کردهاید، آن را با منبع اصلی کنار هم بگذارید و تکهبهتکه بخوانید.
انتقال آزمایشی کمک میکند، اما فقط اگر درست انجامش دهید
فرستادن مبلغ کم برای آزمایش عادت خوبی است، به شرطی که انتقال اصلی را به همان آدرسی بفرستید که آزمایش را به آن فرستادید. نوبیتکس پروندهای را گزارش کرده که قربانی حدود ۵۰ میلیون دلار تتر از دست داد. او اول مبلغ آزمایشی را درست فرستاده بود، اما در همین فاصله مهاجم آدرس جعلی را در تاریخچهاش گذاشت و قربانی برای انتقال اصلی آدرس را از تاریخچه برداشت. پس بعد از آزمایش، اول از گیرنده بپرسید که مبلغ رسیده یا نه، بعد انتقال اصلی را با همان آدرس ذخیرهشده انجام دهید.
با توکنها و مبالغ ناشناس کاری نکنید
توکنهایی را که خودتان نخریدهاید پنهان کنید و سعی نکنید آنها را بفروشید یا جابهجا کنید. مستندات ترون هشدار میدهد که توکنهای همنام توکنهای معروف تقریباً همیشه کلاهبرداریاند و بعضی ایردراپهای ناخواسته طوری طراحی شدهاند که شما را به تعامل با یک قرارداد مخرب بکشانند. قبل از هر کاری، آدرس قرارداد توکن را با قرارداد رسمی در مرورگر بلاکچین مقایسه کنید. اگر کیف پولتان گزینهای برای پنهانکردن توکنهای ناشناس یا کماعتبار دارد، آن را روشن کنید.
اگر گیرنده در سواپولت است، اصلاً آدرس کپی نکنید
وقتی گیرنده هم کاربر سواپولت است، انتقال به مخاطبین با شماره موبایل یا نام کاربری تلگرام او انجام میشود و نیازی به وارد کردن آدرس کیف پول یا انتخاب شبکه ندارد. قبل از تأیید فقط نام و نام کاربری گیرنده را با دقت نگاه کنید.
اگر به آدرس جعلی پول فرستادم چه کار کنم؟
انتقال روی بلاکچین برگشتپذیر نیست و نه سواپولت، نه هیچ کیف پول یا صرافی دیگری نمیتواند آن را لغو کند. با این حال این کارها را انجام دهید:
- TXID تراکنش و هر دو آدرس، یعنی آدرس درست و آدرس جعلی، را نگه دارید.
- اگر از یک صرافی یا سرویس برداشت کردهاید، ماجرا را با همین اطلاعات به پشتیبانی آن گزارش دهید.
- دیگر هیچ مبلغی به آن آدرس نفرستید و آدرس درست را دوباره از منبع اصلی بگیرید.
- به کسانی که قول «بازگرداندن رمزارز» در ازای کارمزد میدهند اعتماد نکنید. این وعده خودش یکی از کلاهبرداریهای رایج بعد از این حمله است.
پرسشهای رایج
آیا میتوانم این تراکنشها را از کیف پولم پاک کنم؟
نه. این تراکنشها روی بلاکچین ثبت شدهاند و کسی نمیتواند آنها را حذف کند. بعضی کیف پولها و مرورگرها امکان پنهانکردن توکنهای ناشناس را دارند. پنهانکردن فقط نمایش را تمیزتر میکند؛ مهم این است که آدرس را از تاریخچه برندارید.
آیا کسی به کیف پول من دسترسی پیدا کرده است؟
برای ثبت انتقال توکن تقلبی یا فرستادن مبلغ ناچیز به شما، مهاجم به کلید خصوصی شما نیاز ندارد. اگر موجودی تتر واقعیتان کم نشده، این تراکنشها بهتنهایی نشانه هکشدن کیف پول نیستند. اگر مبلغ واقعی کم شده، بخش «چه زمانی ماجرا جدیتر است؟» را بخوانید.
مبلغ کمی که برایم آمده را برگردانم یا خرج کنم؟
نه. برگرداندن آن یعنی آدرس جعلی را در فهرست گیرندههای خودتان هم ثبت کنید. به آن دست نزنید.
این حمله فقط روی شبکه ترون اتفاق میافتد؟
نه. این حمله در اتریوم، BSC، آربیتروم و ترون گزارش شده است و روی هر شبکهای که تاریخچه تراکنشها عمومی باشد قابل اجراست. در شبکههای کمکارمزد، هزینه اجرای آن برای مهاجم پایینتر است.
دفعه بعد که خواستید رمزارز بفرستید، آدرس را از منبع اصلی یا دفترچه آدرس ذخیرهشدهتان بردارید. اگر انتقالی به مقصد نرسید، سراغ راهنمای «تتر فرستادم ولی نرسیده» بروید.