یک آسیبپذیری جدید در زبان برنامهنویسی قراردادهای هوشمند Vyper (نسخههای 0.3.4 تا 0.5.0b1) شناسایی شده است که میتواند منجر به از دست رفتن داراییهای دیجیتال شود.
این نقص فنی در تابع create_from_blueprint رخ میدهد. در این تابع، اندازه باقیمانده از بلوپرینت (blueprint size) با استفاده از تفریق uint256 محاسبه میشود، اما برنامه ابتدا بررسی نمیکند که آیا code_offset از اندازه کد بلوپرینت کمتر است یا خیر. در نتیجه، اگر یک مهاجم مقدار code_offset را بسیار بزرگ انتخاب کند، عملیات تفریق دچار Integer Wrap شده و به یک مقدار مثبت بسیار کوچک تبدیل میشود.
این رفتار به مهاجم اجازه میدهد قراردادهایی را مستقر کند که فاقد هرگونه کد اجرایی (runtime code) هستند. پیامد اصلی این حمله، امکان حبس شدن ETH و توکنها در قراردادهای آسیبپذیر است، زیرا بدون وجود کد اجرایی، امکان تعامل یا برداشت داراییها از طریق قرارداد وجود نخواهد داشت.