چرا کیف پول شما انتقالی را نشان میدهد که هرگز نفرستادهاید: تراکنشهای با ارزش صفر و مسمومسازی آدرس
یک تراکنش خروجی ناشناس لزوماً به معنای هک شدن کیف پول شما نیست. بیاموزید که سوابق با ارزش صفر، آدرسهای مشابه و جابهجایی واقعی داراییها دقیقاً چه چیزی را ثابت میکنند.
این سابقه درباره کیف پول من چه چیزی را ثابت میکند؟
اگر تاریخچه شما ناگهان نشان دهد که 0 USDT به آدرسی ناآشنا فرستادهاید، این سابقه بهتنهایی ثابت نمیکند کسی به کلید خصوصی شما دسترسی پیدا کرده است. شخص ثالث میتواند برخی سوابق انتقالِ صفر توکن را با ذکر آدرس شما، بدون امضای شما یا اجازه خرجکردن مبلغی بزرگتر از صفر ایجاد کند. چنین سابقهای ممکن است در بلاکچین وجود داشته باشد، با اینکه شما هرگز آن را آغاز نکردهاید.
پرسشهای مفید دقیقترند: این چه داراییای است؟ واقعاً چه مقدار جابهجا شده است؟ چه کسی تراکنش را ثبت کرده است؟ چه چیزی هرگونه خرجکرد واقعی را مجاز کرده است؟
- رویداد توکنی با مقدار صفر ثابت نمیکند که چیزی را امضا یا خرج کردهاید. برای توکن واقعی، مقدار دقیقاً صفر یعنی آن انتقال مشخص هیچ توکنی را جابهجا نکرده است.
- انتقال با نام یک توکن آشنا هویت دارایی را تعیین نمیکند. قراردادی بیارتباط میتواند همان نام و نماد را استفاده کند.
- پرداخت ورودی بسیار کوچک میتواند واقعی باشد و همزمان آدرس فرستندهای گمراهکننده را در تاریخچه شما قرار دهد.
- خروج تأییدشده و توضیحدادهنشده داراییهای واقعی نیازمند بررسی است. صرفاً چون فیلد دیگری صفر نشان میدهد، آن را نادیده نگیرید.
این راهنما درباره Ethereum، BNB Smart Chain (BSC) و شبکههای مشابهی است که از قراردادهای توکن به سبک Ethereum استفاده میکنند. مثالها عمداً سادهسازیشده و ساختگی هستند، نه تصویر صفحه یا یافتهای درباره کیف پولی مشخص.
نخست مشخص کنید کدام فیلد صفر است
افراد اصطلاح تراکنش با ارزش صفر را برای چند مفهوم متفاوت به کار میبرند. تنها یکی از این نمایشها میگوید مقدار توکن صفر است:
- مقدار توکن: 0 USDC. در قرارداد واقعی USDC، مقدار دقیقاً صفر یعنی آن انتقال هیچ USDC جابهجا نمیکند.
- ارزش تراکنش: 0 ETH. هیچ ETH به تراکنش اصلی پیوست نشده است. بااینحال ممکن است توکنها منتقل شوند و عملیات قرارداد اجرا شود.
- ارزش تخمینی: $0.00. رابط کاربری ارزشگذاری با پول رایج را نشان میدهد. این مقدار، تعداد توکنها را مشخص نمیکند.
در BSC، فیلد ارز بومی معمولاً بهجای ETH از BNB استفاده میکند. تعامل با قرارداد با ارزش بومی صفر میتواند توکن منتقل کند، مجوزهای خرجکرد را تغییر دهد یا عملیات دیگری را فعال کند. ارزش بومی از دادههای ورودی تراکنش جداست.
مقدار مثبت کوچک ممکن است به $0.00 گرد شود. داراییای که قیمتگذاری قابلاعتماد ندارد نیز ممکن است نمایش ارزش پولی نامفیدی داشته باشد. مقدار توکن را با تمام ارقام اعشار باز کنید؛ حتی نمایش 0.00 برای تعداد توکنها میتواند مقداری مثبت و کوچکتر را پنهان کند. تغییر ارزش سبد دارایی، سابقه قابلاعتمادی از واحدهای واردشده یا خارجشده از حساب نیست.
صفر یک مقدار مجاز برای توکن است، بنابراین صفر بهتنهایی حمله را ثابت نمیکند. آدرسهای مشابه و جزئیات پرداخت کپیشده نشانههایی برای بررسیاند.
چرا دو فیلد From ممکن است متفاوت باشند
تاریخچه کیف پول ممکن است اطلاعات چند لایه را با هم ترکیب کند:
- تراکنش: دستور امضاشدهای که به شبکه ارسال میشود. در یک تراکنش معمول Ethereum، فیلد اصلی From حساب امضاکننده را مشخص میکند.
- رویداد توکن: سابقهای که قرارداد هنگام اجرا منتشر میکند. رویداد Transfer فیلدهای From، To و مقدار خودش را دارد.
- ردیف تاریخچه: شیوه نمایش این اطلاعات توسط کیف پول یا کاوشگر. ممکن است رویدادی را OUT بنامد چون رویداد آدرس شما را فرستنده معرفی کرده است.
این دو فیلد From جایگزین یکدیگر نیستند. ظاهرشدن آدرس شما در یک رویداد، امضایی از کیف پولتان نیست. قرارداد مخرب میتواند آدرس شما را در دادههای رویداد بنویسد، اما این کار به معنای آن نیست که گزارش آن از قرارداد واقعی توکن صادر شده است. پس قرارداد منتشرکننده بخش اساسی شواهد است.
به همین ترتیب، هش تراکنش فقط تراکنش را شناسایی میکند و رضایت شما را ثابت نمیکند. تراکنش ثبتشده با وضعیت Success نشان میدهد اجرای بیرونی آن بازگردانده نشده است. این وضعیت تأیید توکن، گیرنده یا هدف تراکنش نیست.
پنج مثال توضیحدار از تاریخچه تراکنشها
مثال 1: انتقال خروجی صفر توکن که هرگز امضا نکردهاید
سابقه تاریخچه: OUT · 0 USDC · از آدرس شما به آدرسی ناآشنا و مشابه.
- فیلد From تراکنش: حسابی بیارتباط تراکنش را ارسال کرده است.
- فیلد From رویداد توکن: رویداد آدرس شما را ذکر میکند.
- قرارداد منتشرکننده توکن: قرارداد واقعی USDC در این شبکه.
- مقدار دقیق توکن: صفر.
این چه چیزی را ثابت میکند: قرارداد واقعی توکن، انتقالی با صفر توکن را با ذکر آدرس شما ثبت کرده است. آن انتقال هیچ USDC جابهجا نکرد. این امر ثابت نمیکند کیف پول شما تراکنش را امضا کرده، فراخواننده مجوز خرجکرد مقدار مثبت را دارد یا کلیدتان دزدیده شده است.
چگونه رخ میدهد: استاندارد رایج توکن ERC-20 ایجاب میکند انتقالهای با مقدار صفر رویداد Transfer منتشر کنند. در پیادهسازیهای رایج، تابع انتقال واگذارشده transferFrom بررسی میکند مقدار درخواستی از سقف مجوز فراخواننده بیشتر نباشد. صفر از مجوز صفر بیشتر نیست. با رعایت سایر قواعد قرارداد، فراخوانی میتواند بدون تأیید قبلی موفق شود.
این وعدهای عمومی درباره همه توکنها نیست. قراردادهای مختلف ممکن است محدودیتهای اضافی داشته باشند.
در ادامه چه چیزی را بررسی کنید: باقی تراکنش را وارسی کنید. ردیف صفر فقط همان ردیف را توصیف میکند؛ عملیات دیگری ممکن است اثر متفاوتی داشته باشد. اگر این فقط سابقهای منفرد از مسمومسازی است و خرجکرد مشکوک یا تغییر مجوزی وجود ندارد، واکنش مناسب پرهیز از آدرس کاشتهشده است، نه فرض بر لزوم تعویض کیف پول.
مثال 2: تراکنش جعلی که مقدار زیادی توکن نشان میدهد
سابقه تاریخچه: OUT · 2,500 USDC · از آدرس شما به آدرسی ناآشنا.
- نماد توکن نمایشدادهشده: USDC.
- قرارداد منتشرکننده: قراردادی بیارتباط، نه USDC واقعی.
- مقدار گزارششده رویداد: 2,500.
- جابهجایی USDC واقعی در این تراکنش: هیچ.
این چه چیزی را ثابت میکند: قرارداد دیگری سابقهای منتشر کرده که با برچسب USDC نمایش داده شده است. این ثابت نمیکند 2,500 USDC واقعی از حساب شما خارج شده باشد.
یک تراکنش جعلی در کیف پول میتواند داده واقعی بلاکچین با تفسیری گمراهکننده باشد. مهاجمان میتوانند نام و نماد توکن را کپی کنند و رویدادهایی مشابه پرداختهای پیشین شما، ازجمله مبالغ آنها، منتشر کنند. قراردادهای غیراستاندارد همچنین میتوانند سوابق انتقالی منتشر کنند که با تغییر موجودی خودشان مطابقت ندارد.
در ادامه چه چیزی را بررسی کنید: شبکه و نشانی دقیق قراردادی را که رویداد را منتشر کرده شناسایی کنید. آن آدرس را با اطلاعات قرارداد صادرکننده برای همان شبکه که مستقل به دست آوردهاید مقایسه کنید. نماد، لوگو یا برچسب تأیید کد منبعِ آشنا برای اثبات هویت صادرکننده کافی نیست.
مثال 3: پرداخت واقعی بسیار کوچک از آدرسی مشابه
سابقه تاریخچه: IN · 0.000001 USDC · از آدرسی ناآشنا به آدرس شما.
فرض کنید قرارداد واقعی توکن انتقال را تأیید کرده و موجودی توکن شما به همان مقدار ناچیز افزایش یافته است. در این حالت توکن واقعی دریافت شده است. دریافت آن نیازی به تأیید فرستنده نداشته و به فرستنده اجازه خرجکرد نمیدهد.
دام در آدرس است. این مثالهای ساختگی با فاصله گروهبندی شدهاند تا همه نویسهها دیده شوند. آدرسهای واقعی فاصله ندارند؛ گروههای میانی پررنگ با هم فرق دارند:
گیرنده تأییدشده: 0x7a2f 1111 2222 3333 4444 5555 6666 7777 8888 9c4d
آدرس کاشتهشده: 0x7a2f aaaa bbbb cccc dddd eeee ffff 0000 1111 9c4d
رابطی که فقط آغاز و پایان را نشان میدهد ممکن است هر دو را به شکل 0x7a2f...9c4d نمایش دهد.
این چه چیزی را ثابت میکند: کسی از آن آدرس مبلغ اندکی برایتان فرستاده است. ثابت نمیکند فرستنده گیرنده معمول شما یا حسابی تحت کنترل شماست. یکسانبودن نویسههای قابلدیدن مالکیت را ثابت نمیکند.
در ادامه چه چیزی را بررسی کنید: مقصد موردنظر را از مخاطبی که جداگانه تأیید کردهاید یا صفحه حساب معتبر گیرنده دریافت کنید. کل آدرس را مقایسه کنید. مسمومسازی آدرس میکوشد سابقه کاشتهشده در تاریخچه را به آدرسی تبدیل کند که برای پرداخت بعدی برمیگزینید. زیان ممکن است بعداً رخ دهد، وقتی انتقالی کاملاً معتبر را به مقصد اشتباه مجاز میکنید.
مثال 4: صفر ETH، اما 2,500 توکن واقعی خارج میشود
سربرگ تراکنش: Value · 0 ETH.
- ارزش بومی پیوستشده به فراخوانی: 0 ETH.
- انتقال توکن واقعی: 2,500 USDC از آدرس شما.
- تغییر موجودی USDC ناشی از این تراکنش: کاهش 2,500 USDC.
- وضعیت اجرا: Success.
این چه چیزی را ثابت میکند: در این مثال USDC واقعی خارج شده است. صفر مقدار ETH پیوستشده به فراخوانی را نشان میدهد؛ نه انتقال USDC را، و هزینه گس را نیز منتفی نمیکند.
چه چیزی همچنان نامعلوم است: علت پرداخت و اینکه آیا آن را میخواستهاید. شاید مربوط به مبادله، سپردهگذاری، عملیات زمانبندیشده، پرداخت به آدرس اشتباه یا خرجکرد بدون مجوز باشد. پیش از دستهبندی، آن را با اقدامی که انجام دادهاید و مقصد موردنظرتان تطبیق دهید.
مثال 5: توکنهای واقعی خارج میشوند، ولی حساب دیگری تراکنش را فرستاده است
سابقه تاریخچه: OUT · 500 USDC واقعی · مقصدی ناآشنا.
فرض کنید تراکنش موفق موجودی USDC واقعی شما را 500 واحد کم کرده است، اما فیلد اصلی From شخص دیگری را نشان میدهد.
این چه چیزی را ثابت میکند: توکنها جابهجا شدهاند. متفاوتبودن فرستنده تراکنش، آن جابهجایی را جعلی نمیکند.
خرجکنندهای که قبلاً تأیید شده است میتواند از مجوز توکن استفاده کند، بیآنکه برای هر برداشت امضای تراکنشی تازه را از شما بخواهد. بعضی توکنها همچنین از امضاهای permit پشتیبانی میکنند که با پیام امضاشده مجوزی میدهند که طرف دیگری میتواند ارسال کند. حسابهای هوشمند و کیف پولهای تفویضشده نیز راههای دیگری برای ارسال عملیات مجاز توسط دیگران فراهم میکنند.
در ادامه چه چیزی را بررسی کنید: خرجکننده، مجوز مربوط یا اجازه امضاشده و عملیات کیف پول را وارسی کنید. اگر برداشت همچنان بیتوضیح است، آن را حادثه امنیتی تلقی کنید. شواهد ممکن است به تأیید مخرب، امضای فریبنده یا کنترل حسابِ بهخطرافتاده اشاره کنند؛ ردیف بهتنهایی آنها را از هم جدا نمیکند.
در تراکنش معمولی که مستقیماً امضا شده، وجود آدرس شما در فیلد اصلی From نشانه امضای معتبر برای آن حساب است. بااینحال ثابت نمیکند اقدام را فهمیده، آن گیرنده را قصد کرده یا شخصاً تراکنش را آغاز کردهاید. فیلد From رویداد توکن شواهد بسیار ضعیفتری ارائه میدهد.
۲۷۰ میلیون تلاش مسمومسازی واقعاً چه چیزی را اندازه گرفتند
تحلیل دوساله فعالیت Ethereum و BSC از 1 ژوئیه 2022 تا 30 ژوئن 2024 تقریباً 270 میلیون سابقه انتقال مسمومسازی با هدفگیری 17 میلیون آدرس را شناسایی کرد.
سوابق در سه دسته قرار گرفتند:
- 147.7 میلیون انتقال با ارزش صفر.
- 118.4 میلیون انتقال توکن تقلبی.
- 4.0 میلیون انتقال بسیار کوچک.
اینها سوابق انتقال در حدود 18.2 میلیون تراکنش بودند، زیرا مهاجمان میتوانند چند سابقه را با هم بستهبندی کنند. آدرسهای هدفگرفتهشده همان افراد، کیف پولهای بهخطرافتاده یا قربانیان زیان مالی نیستند.
این تحلیل 6,633 انتقال موفقِ پرداخت به مهاجم به مجموع دستکم $83.8 میلیون شناسایی کرد. برخی قربانیان بیش از یک بار پرداخت کردند. شناسایی بر استیبلکوینهای منتخب متمرکز بود؛ بنابراین برآورد زیان، حد پایین در همان دامنه است و نه مجموع همه توکنها یا زنجیرهها.
نتیجه عملی این است که بررسی صرفاً مقادیر صفر بخش بزرگی از حمله را از قلم میاندازد. سوابق جعلی میتوانند پرداختی قابلتوجه را تقلید کنند و انتقال ورودی بسیار کوچک میتواند توکن واقعی جابهجا کند و درعینحال آدرسی خطرناک معرفی کند.
چگونه سابقه مشخص خود را بررسی کنید
- تراکنش را در شبکه درست باز کنید. از گزینه کاوشگر در کیف پول خود یا کاوشگری شناختهشده مانند Etherscan یا BscScan استفاده کنید. وضعیت تراکنش را بررسی کنید. خواندن جزئیات عمومی تراکنش نیازی به اتصال کیف پول، تأیید توکن، امضای پیام یا واردکردن عبارت بازیابی ندارد.
- دارایی واقعی را شناسایی کنید. ETH یا BNB بومی را از توکنی که همان نام را به کار میبرد متمایز کنید. برای توکنها، شبکه دقیق و قرارداد منتشرکننده را با مرجع معتبر صادرکننده مطابقت دهید.
- مقدار را با دقت کامل بخوانید. تعداد توکنها را از ارزش بومی تراکنش و برآورد ارزش پولی جدا کنید.
- فرستنده تراکنش را از فرستنده رویداد جدا کنید. برای حساب هوشمند، عملیات کیف پول و مجوزهای آن را هم بررسی کنید. پرداخت گس توسط شخص دیگر ثابت نمیکند داراییهایتان جابهجا نشدهاند.
- کل تراکنش را بررسی کنید. همه جابهجاییهای توکن، انتقالهای ارز بومی و تغییرات مرتبط مجوزها را ببینید. اگر کاوشگر تغییرات موجودی در سطح تراکنش را نشان میدهد، از آنها برای تطبیق نتیجه استفاده کنید. ثابتماندن موجودی امروز شاهد ضعیفتری است: واریزهای بعدی یا انتقالهای جبرانی میتوانند جابهجایی پیشین را پنهان کنند.
- مقصد را مستقل تأیید کنید. از اطلاعات پرداخت معتبر گیرنده یا مدخل دفترچه آدرسی استفاده کنید که قبلاً تأیید کردهاید. ردیف تازه تاریخچه، مدرکی برای بررسی است نه اثبات درستبودن مقصد.
اگر کاوشگر نتیجه را روشن نمیکند، شبکه و هش عمومی تراکنش را در اختیار تیم پشتیبانی رسمی ارائهدهنده کیف پول بگذارید. در صورت وجود، اقدامی را که انتظار داشتید توضیح دهید. این جزئیات کمک میکند عملیات ناآشنای اما عمدی از خرجکرد توضیحدادهنشده تشخیص داده شود، بیآنکه اسرار کنترلکننده کیف پول را افشا کنید.
پس از بررسی چه باید کرد
اگر فقط یک سابقه مسمومسازی منفرد یافتهاید
اگر کیف پول پشتیبانی میکند، هرزنامه را پنهان یا گزارش کنید و از آدرسهای آن استفاده نکنید. پنهانکردن ردیف فقط رابط را تغییر میدهد؛ تاریخچه بلاکچین را پاک نمیکند و مجوزها را لغو نمیکند.
انتقال صفر حتی با مجوز صفر هم ممکن است؛ پس خود سابقه دلیل لغو همه تأییدها یا انتقال همه داراییها نیست. شاید اصلاً مجوز خرجکرد مرتبطی وجود نداشته باشد که بتوان حذف کرد. هرگز برای «پاکسازی» کیف پول از وبسایت تبلیغشده توکن یا پیوند بازیابیِ فرد ناشناس استفاده نکنید.
اگر مجوز خرجکرد مشکوکی یافتهاید
از مسیر معتبر مدیریت تأییدها در کیف پول برای بررسی و لغو مجوز مربوط استفاده کنید. قطع اتصال وبسایت از کیف پول، تأییدهای قبلی توکن روی زنجیره را لغو نمیکند. لغو مجوز همان دسترسی را برطرف میکند؛ کلید خصوصی دزدیدهشده را اصلاح نمیکند.
اگر داراییهای واقعی بدون قصد شما جابهجا شدهاند
هش تراکنش، شبکه، دارایی آسیبدیده و آدرسهای مرتبط را نگه دارید. امضاها، تأییدها و عملیات اخیر کیف پول را از طریق کانالهای رسمی پشتیبانی بررسی کنید.
اگر شواهدی از افشای عبارت بازیابی یا کلید خصوصی شما وجود دارد، روی دستگاهی قابلاعتماد کیف پول تازهای با عبارت بازیابی جدید بسازید و با برنامهای دقیق داراییهای باقیمانده را انتقال دهید. حساب دیگری که از همان عبارت بهخطرافتاده ساخته شود این خطر را برطرف نمیکند. اگر وجوه خودکار ناپدید میشوند، همچنان پول گس اضافه نکنید: ممکن است برنامه تخلیهکننده آن را بردارد.
اگر آگاهانه پرداختی را امضا کردهاید ولی مقصد مسمومشدهای را کپی کردهاید، این تفاوت را ثبت کنید. ممکن است پرداخت بهدرستی امضا و اجرا شده، اما به گیرنده اشتباه رسیده باشد. این نتیجه بهتنهایی سرقت کلید خصوصی را ثابت نمیکند.
پرسشهای متداول درباره تراکنشهای ناشناس
آیا مهاجم مرا وادار به پرداخت گس کرد؟
در سناریوی عادی مسمومسازی، مهاجم تراکنش را ثبت و کارمزد شبکه را پرداخت میکند. صرف ذکر آدرس شما در رویداد توکن هزینهای از حسابتان کم نمیکند. بااینحال تراکنشهای حمایتشده و حسابهای هوشمند به این معنا هستند که فقط با دانستن پرداختکننده کارمزد نمیتوان بیضرربودن عملیات را ثابت کرد. اثرهای واقعی را بررسی کنید.
اگر تراکنش ناموفق بود چه؟
انتقال توکنی که بازگردانده شده تکمیل نشده است، هرچند ممکن است گس گرفته شده باشد. اگر کیف پول از تفویض حساب استفاده میکند، آن را جداگانه بررسی کنید: Ethereum میتواند تفویض را حتی در صورت شکست اجرای بعدی نگه دارد. تفویض ناآشنا باید بررسی شود.
آیا کیف پول سختافزاری جلوی مسمومسازی آدرس را میگیرد؟
این کیف پول امکان دیگری برای بررسی مقصد پیش از امضا فراهم میکند. اگر مقصد تحت کنترل مهاجم را تأیید کنید، نمیتواند آن را به مقصد درست تبدیل کند. آدرس کامل روی نمایشگر امضای معتبر را با جزئیات گیرنده که مستقل تأیید شده مقایسه کنید.
آیا میتوانم نگذارم افراد ناشناس این سوابق را اضافه کنند؟
معمولاً نمیتوانید مانع ارسال دارایی یا تولید سوابق مربوط به یک آدرس عمومی توسط اشخاص ثالث شوید. فیلترهای کیف پول و کاوشگر میتوانند موارد قابلمشاهده را کاهش دهند. گیرندگان تأییدشده را ذخیره کنید و پیش از پرداخت کل آدرس مقصد را بررسی کنید؛ پنهانکردن صرف سوابق با ارزش صفر همه گونههای جعلی یا انتقالهای بسیار کوچک را شناسایی نمیکند.
