CVE-2025-27104 in Vyper
الملخص
بحسب VulDB • 06/06/2026
vyper هو لغة عقود ذكية ذات طابع بايثوني (Pythonic) لسلسلة الكتل الافتراضية للإيثيريوم (EVM). من الممكن حدوث تقييم متعدد لتعبير واحد في هدف التكرار لحلقة `for`. وعلى الرغم من أن تعبير المكرر لا يمكنه إنتاج كتابات متعددة، إلا أنه قد يستهلك الآثار الجانبية الناتجة عن جسم الحلقة (مثل قراءة متغير تخزين تم تحديثه داخل جسم الحلقة)، مما يؤدي إلى سلوك غير متوقع للبرنامج. على وجه التحديد، قد تتداخل عمليات القراءة في المكررات التي تحتوي على `ifexp` (على سبيل المثال: `for s: uint256 in ([read(), read()] if True else [])`) مع عمليات الكتابة الموجودة في جسم الحلقة. تسمح حلقات `for` في vyper بنوعين من أهداف المكرر، وهما الدالة الداخلية `range()` ونوع قابل للتكرار مثل SArray و DArray. أثناء توليد الكود (codegen)، يُشترط ألا تنتج القوائم القابلة للتكرار أي آثار جانبية (في الشفرة التالية، يفرض `range_scope` تحليل `iter_list` في سياق ثابت، والذي يتم التحقق منه مقابل `is_constant`). ومع ذلك، فإن هذا لا يمنع المكرر من استهلاك الآثار الجانبية المقدمة بواسطة جسم الحلقة. أما بالنسبة لـ SArrays، فمقابلة `iter_list` تتم داخل جسم تكرار IR (`repeat`)، لذا يمكن تقييمها عدة مرات. تُعالج هذه المشكلة ومن المتوقع أن تكون متاحة في الإصدار 0.4.1. يُنصح المستخدمون بالترقية بمجرد توفر النسخة المصححة. لا توجد حلول بديلة معروفة لهذه الثغرة الأمنية.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.