تعریف
سوءاستفاده از Approval نوعی ریسک امنیتی است که در آن مهاجم از سازوکارهای approval یا allowance توکن برای جابهجایی داراییهای قربانی بدون رضایت مجدد او استفاده میکند. این وضعیت معمولاً زمانی رخ میدهد که یک smart contract یا رابط کاربری، کاربر را ترغیب میکند تا یک allowance بیشازحد یا ناامن اعطا کند و مهاجم سپس از طریق قراردادهای مخرب یا بهخطرافتاده، آن مجوز را فراخوانی میکند. در این نوع حمله، معمولاً استاندارد اصلی توکن شکسته نمیشود، بلکه مدل مجوزدهی مشروعی که در منطق approval توکن پیادهسازی شده، مورد سوءاستفاده قرار میگیرد. در نتیجه، انتقال وجوه از نظر فنی روی زنجیره معتبر است، هرچند با انتظارات کاربر از امنیت و محدوده استفاده از مجوز در تضاد است.
این ریسک بهطور مستقیم با نحوه ذخیره و ارجاع وضعیتهای allowance توکن توسط smart contractها گره خورده است. وقتی مهاجم به یک allowance بالا یا نامحدود دسترسی پیدا کند، میتواند تا زمانی که موجودی تأییدشده تخلیه شود، بارها تابعهای انتقال را از طرف آدرس کاربر فراخوانی کند. سوءاستفاده از Approval اغلب بر پایه اعلانهای تراکنش فریبنده، نامهای گمراهکننده قرارداد، یا استفاده مجدد از مجوزهایی که قبلاً داده شدهاند اما در سناریوهای غیرمنتظره به کار میروند، انجام میشود. ویژگی اصلی این حمله، ناهماهنگی بین چیزی است که کاربر فکر میکند مجوز داده و چیزی که allowance در عمل اجازه میدهد.
بستر و کاربرد
در بحثهای امنیتی، سوءاستفاده از Approval بیشتر بهعنوان ریسک سوءاستفاده از مجوزها مطرح میشود تا یک نقص مستقیم در خود پروتکل. این مفهوم اغلب با طراحی توکنهای سبک ERC-20 مرتبط است؛ جایی که یک مرحله approval جداگانه، یک allowance تعیین میکند که قراردادهای دیگر میتوانند آن را خرج کنند. وقتی این allowanceها اشتباه تنظیم شوند، هرگز لغو نشوند، یا به قراردادهای غیرقابلاعتماد داده شوند، یک سطح حمله دائمی ایجاد میکنند که مهاجمان میتوانند بعداً آن را فعال کنند. بنابراین این نوع سوءاستفاده در نقطه تلاقی طراحی smart contract، تجربه کاربری wallet و درک کاربر از منطق مجوزدهی روی زنجیره قرار میگیرد.
این اصطلاح اغلب در کنار مفهوم allowance به کار میرود تا توضیح دهد مجوزهای توکن تا چه حد باید جزئی، قابللغو و محدود باشند. حسابرسان امنیتی و طراحان پروتکل، سوءاستفاده از Approval را یک دسته تهدید مستقل در نظر میگیرند که هنگام طراحی رابطهای قرارداد و جریانهای مجوزدهی باید بهطور ویژه به آن توجه شود. در گزارشهای حوادث، وقتی یک حمله بهعنوان سوءاستفاده از Approval برچسبگذاری میشود، این نکته را برجسته میکند که مهاجم در چارچوب مجوزهای رسمی اعطاشده عمل کرده است، هرچند این مجوزها بهشکل فریبنده یا ناامن بهدست آمده یا ساختاربندی شدهاند. این طبقهبندی کمک میکند این نوع حمله از باگهایی که ناشی از خطاهای محاسباتی، reentrancy یا سایر نقصهای سطح پایین قرارداد هستند، متمایز شود.