هک کیف پول با یک امضا: تأییدیه توکن، Permit و درینرها
درس ۳ از ۱۰ · متوسط
چرا یک امضا میتواند کیف پول را خالی کند؟
خیلیها فکر میکنند تا وقتی عبارت بازیابیشان امن است، داراییشان هم امن است. اما در شبکههایی مثل اتریوم و ترون، شما میتوانید به یک قرارداد هوشمند اجازه بدهید که از طرف شما توکن خرج کند. این اجازه برای کار با صرافیهای غیرمتمرکز و اپهای DeFi لازم است؛ اما اگر آن را به قرارداد اشتباه بدهید، صاحب آن قرارداد بدون نیاز به کلید شما توکنها را برمیدارد.
به ابزارهایی که این فرایند را خودکار میکنند درینر (Drainer) میگویند: کیتهای آمادهای که کلاهبرداران روی سایتهای جعلی نصب میکنند تا با یک کلیک قربانی، باارزشترین داراییهای کیف پول را شناسایی و برداشت کنند. طبق گزارش Scam Sniffer، زیان فیشینگ امضا در سال ۲۰۲۵ حدود ۸۳ درصد کاهش یافت و به حدود ۸۴ میلیون دلار از حدود ۱۰۶ هزار قربانی رسید؛ اما Permit و Permit2 همچنان مؤثرترین روشها بودند.
سه نوع اجازهای که باید بشناسید
۱. تأییدیهی کلاسیک (Approve)
وقتی در یک صرافی غیرمتمرکز میخواهید تتر را با توکن دیگری معاوضه کنید، ابتدا یک تراکنش Approve میفرستید که به قرارداد صرافی اجازه میدهد تا سقف مشخصی از تتر شما را جابهجا کند. بسیاری از اپها برای راحتی، سقف را نامحدود درخواست میکنند. این اجازه تا وقتی لغوش نکنید باقی میماند؛ حتی سالها بعد، و حتی اگر آن قرارداد بعداً هک شود. برای NFTها معادل آن Set Approval For All است که اجازهی جابهجایی کل یک مجموعه را میدهد.
۲. امضای Permit و Permit2
Permit روشی است که در آن بهجای تراکنش روی زنجیره، یک پیام امضاشده میدهید و همان پیام نقش تأییدیه را بازی میکند. چون امضای پیام کارمزد ندارد، کاربر حس میکند «کاری انجام نداده». مهاجم بعداً همان امضا را روی زنجیره ثبت میکند و توکنها را برمیدارد. Permit2 قراردادی است که بسیاری از اپها استفاده میکنند: یک بار به آن اجازه میدهید و از آن به بعد فقط با امضای پیام، به قراردادهای دیگر مجوز داده میشود. اگر قبلاً به Permit2 اجازه داده باشید، یک امضای فریبنده کافی است.
۳. واگذاری EIP-7702 و «جاروکش»ها
بهروزرسانی Pectra در اتریوم (مه ۲۰۲۵) به کیف پولهای معمولی اجازه داد با امضای یک «مجوز واگذاری»، رفتار یک قرارداد هوشمند را قرض بگیرند. این قابلیت برای امکاناتی مثل پرداخت کارمزد با توکن مفید است، اما اگر کیف پول را به قرارداد مخرب واگذار کنید، آن قرارداد میتواند هر دارایی ورودی را خودکار به آدرس مهاجم بفرستد؛ به اینها Sweeper (جاروکش) میگویند. طبق گزارش Scam Sniffer به نقل از Wintermute، بیش از ۸۰ درصد مجوزهای اولیهی 7702 مخرب بودهاند.
در شبکهی ترون هم تأییدیهی TRC20 وجود دارد. علاوه بر آن، تراکنشی که مجوزهای حساب (Account Permission) را تغییر میدهد، میتواند کنترل حساب را به آدرس دیگری بدهد؛ پس هر درخواست تغییر مجوز در کیف پول ترون را بسیار جدی بگیرید.
پنجرهی امضا را چطور بخوانیم؟
کیف پول قبل از هر امضا پنجرهای نشان میدهد. این چند سؤال را از خودتان بپرسید:
- نوع درخواست چیست؟ اتصال ساده (Connect) خطری ندارد؛ اما Approve، Permit، Set Approval For All، تغییر مجوز حساب و درخواست واگذاری (Delegation) همه اجازهی خرج کردن یا کنترل میدهند.
- Spender یا Operator کیست؟ آدرسی که اجازه میگیرد باید قرارداد رسمی همان اپ باشد. اگر آدرس ناشناس است، دست نگه دارید.
- مقدار و مهلت چقدر است؟ در امضای Permit فیلدهایی مثل value و deadline را ببینید. عدد بسیار بزرگ یعنی نامحدود.
- آیا با کاری که قصد داشتید جور است؟ سایتی که قرار است «جایزه» بدهد دلیلی ندارد از شما اجازهی خرج کردن تتر بگیرد.
اگر کیف پولتان امکان شبیهسازی تراکنش دارد (پیشنمایش اینکه بعد از امضا چه داراییهایی خارج میشود)، آن را روشن کنید. در کیف پول سختافزاری هم «امضای کور» (Blind Signing) یعنی چیزی را تأیید میکنید که دستگاه نمیتواند برایتان رمزگشایی کند؛ تا جای ممکن از آن پرهیز کنید.
مرور و لغو مجوزها (Revoke)
لغو مجوز یعنی فرستادن تراکنشی که سقف اجازه را صفر کند. چند نکتهی عملی:
- اکسپلوررهای اصلی بخشی برای دیدن مجوزها دارند (مثلاً Token Approvals در Etherscan) و ابزارهای مستقلی مثل Revoke.cash همین کار را برای چند شبکه انجام میدهند. آدرس این ابزارها را هم فقط از منبع مطمئن باز کنید؛ نسخهی جعلیشان وجود دارد.
- لغو هر مجوز روی زنجیره کارمزد دارد. مجوزهای نامحدود، مجوزهای اپهایی که دیگر استفاده نمیکنید و هر چیز ناشناس را در اولویت بگذارید.
- در Permit2 مجوزهای داخلی را جداگانه بررسی کنید؛ فقط دیدن تأییدیهی خود Permit2 کافی نیست.
- اگر کیف پول را به قراردادی واگذار کردهاید که نمیشناسید، از گزینهی لغو واگذاری کیف پول استفاده کنید یا دارایی را به کیف پول تازه منتقل کنید.
- محدودیت مهم: لغو مجوز فقط وقتی کمک میکند که کلید شما سالم باشد. اگر عبارت بازیابی لو رفته، لغو بیفایده است و باید فوراً به کیف پول جدید با کلمات جدید مهاجرت کنید.
عادت خوب این است که تأییدیه را به اندازهی همان معامله بدهید، نه نامحدود، و کیف پول روزمره را از کیف پول اصلی جدا نگه دارید.
اشتباههای رایج
- فرض اینکه امضای پیام چون کارمزد ندارد، بیخطر است.
- دادن تأییدیهی نامحدود به هر اپ و فراموش کردن آن برای همیشه.
- تأیید درخواست واگذاری (Delegation) یا تغییر مجوز حساب بدون دانستن قرارداد مقصد.
- استفاده از امضای کور در کیف پول سختافزاری روی سایتهای ناشناس.
- لغو مجوزها بعد از لو رفتن عبارت بازیابی بهجای مهاجرت فوری به کیف پول جدید.
- باز کردن ابزار Revoke از لینکی که در کامنت یا دایرکت فرستاده شده است.
حجم و داده اینجا چه میگوید؟
مجوزها کاملاً روی زنجیره ثبت میشوند، پس خودتان میتوانید آنها را ببینید:
- رویداد Approval: در اکسپلورر، صفحهی آدرس خود را باز کنید و بخش مجوزها یا رویدادهای Approval را ببینید. برای هر مورد، نام توکن، آدرس Spender و سقف اجازه نمایش داده میشود.
- Spender را بررسی کنید: روی آدرس Spender کلیک کنید. قرارداد رسمی معمولاً برچسب نام دارد، کد تأییدشده (Verified) دارد و سابقهی طولانی تراکنش دارد. قرارداد تازه ساختهشده بدون برچسب که فقط چند روز عمر دارد، علامت سؤال بزرگی است.
- رد پای درینر: اگر میبینید چند دارایی پشت سر هم با تراکنشهای transferFrom از کیف پول خارج شدهاند که خودتان نفرستادهاید، یعنی مجوزی از شما سوءاستفاده شده است.
این مرور ماهانه، تصویر واقعی ریسک کیف پول شما را نشان میدهد؛ هیچ اپ یا داشبوردی جای آن را نمیگیرد.
پرسشهای پرتکرار
هک کیف پول بدون لو رفتن عبارت بازیابی ممکن است؟
بله. با امضای یک تأییدیه یا Permit مخرب، مهاجم اجازهی برداشت توکنهای مشخصی را میگیرد، بدون اینکه کلید شما را داشته باشد.
لغو مجوز (Revoke) چقدر ضروری است؟
برای کیف پولی که با اپهای DeFi کار میکند، مرور منظم مجوزها و لغو موارد نامحدود و بلااستفاده یکی از مؤثرترین اقدامهای امنیتی است. هر لغو کارمزد شبکه دارد.
EIP-7702 به زبان ساده چیست؟
قابلیتی در اتریوم که به کیف پول معمولی اجازه میدهد با امضای یک مجوز، رفتار یک قرارداد را داشته باشد. اگر این مجوز به قرارداد مخرب داده شود، داراییهای ورودی خودکار به مهاجم منتقل میشوند.
این درس آموزشی است و توصیهی خرید یا فروش نیست؛ ما سیگنال نمیدهیم. مثالهای قیمتی فقط برای توضیحاند. هر روشی را اول روی حساب دمو و با مدیریت ریسک امتحان کنید.