كشف فريق Dedaub مؤخرًا عن ثغرة أمنية في عقود UniSwap والتي قد تعرض بعض المستخدمين للخطر.

ثغرة UniSwap

في تغريدة حديثة، كشف Dedaub أنهم اكتشفوا خللًا في عقود UniSwap وأبلغوهم بالثغرة. وعندما تم تلقي الملاحظات، "عالجت UniSwap المشكلة وأعادت نشر عقود Universal Router الذكية على جميع سلاسلها".

وفقًا لتغريدة Dedaub، مهدت هذه الثغرة الطريق لهجمات إعادة الدخول، والتي من شأنها استنزاف أموال المستخدمين. وأوضح فريق Dedaub كيف يمكن للمهاجمين استغلال هذه الثغرة.

نشكُر فريق @Uniswap على منحه مكافأة العثور على ثغرة.قراءة المزيد: https://t.co/Jj2Sl2f1cQ

— ديدابون (@dedaub) 2 يناير 2023

يعود أصل هذه الثغرة إلى شهر نوفمبر، عندما أدخل UniSwap جهاز التوجيه الشامل (Universal Router). يوحّد هذا الموجّه بين تبديل NFTs وERC-20 ضمن جهاز توجيه تبادل واحد. كان الهدف هو مساعدة المستخدمين على تنفيذ عدة إجراءات مثل تبديل عدة NFTs والرموز في معاملة واحدة.

عند استخدام أوامر جهاز التوجيه الشامل بشكل صحيح، ستقوم هذه الأوامر بإرسال المبلغ المحدد إلى المستلم المحدد. ومع ذلك، إذا تم استدعاء كود تابع لجهة خارجية أثناء عملية التحويل، فيمكنه إعادة الدخول إلى جهاز التوجيه والمطالبة بالرموز داخل العقد. يحدث ذلك أساسًا لأن جهاز التوجيه الشامل كان يحتفظ بالأرصدة بين المعاملات.

في إثبات المفهوم (Proof-of-Concept)، لاحظ فريق Dedaub أن المهاجم يمكنه إضافة أمر SWEEP لجميع الرموز المتبقية بعد إرسال المبالغ الأولية. كجزء من المعاملة، يمكن للمستلم تصريف كامل المبلغ بسرعة.

تصرف فريق Uniswap بسرعة

أبلغ فريق Dedaub فريق UniSwap فورًا بإمكانية حدوث مثل هذا الهجوم. ونصحوا فريق Uniswap بإدراج قفل لإعادة الدخول (reentrancy lock) في جهاز التوجيه الجديد قبل نشره.

عالج Uniswap المشكلة فورًا، وأجرى التعديلات اللازمة قبل اعتماد العقد. وقدّم Uniswap لفريق Dedaub مكافأة قدرها 40 ألف دولار كمكافأة العثور على ثغرة لإظهار التزامه بأمن الأفراد. ومع ذلك، قيّم فريق Uniswap المشكلة باعتبارها حدثًا عالي التأثير منخفض الاحتمالية. لذا، قد يحدث ذلك في سيناريوهات شديدة التعقيد.

تُعد بروتوكولات DEX، UniSwap، عمومًا على دراية بهجمات إعادة الدخول. في عام 2020، ظهرت تقارير بأن الـDEX، إلى جانب Lendf.me، فقد 25 مليون دولار في هجوم بسيط لإعادة الدخول. كما تعرضت الشبكة لهجمات أخرى مثل الاختراق. وفي يوليو 2022، تمكن القراصنة من سرقة 8 ملايين دولار من ETH باستخدام هجوم تصيّد (phishing).