المصدر: Beosin
في 17 كانون الثاني (يناير) 2024، وفقًا لمراقبة المخاطر الأمنية لـ Beosin EagleEye والإنذار المبكر ومراقبة منصة الحظر، تعرض بروتوكول المقبس لهجوم حقن المكالمات من قبل مهاجم، مما أدى إلى في عدد كبير من أموال المستخدمين المعتمدين سرقت. حاليًا، يقوم المهاجم بتحويل الأموال المسروقة إلى ETH وحفظها على عنوان المهاجم.
بعد الهجوم، أكدت شركة Socket رسميًا تعرضها للهجوم وأوقفت العقود المتضررة على الفور.
وفي الوقت نفسه، أصدر MetaMask مستندًا على X يقول النظام الأساسي، إن مستخدمي MetaMask Bridge لا يتأثرون بالثغرة الأمنية التي حدثت اليوم. وقالت MetaMask إنها اعتمدت بنية فريدة عند تصميم عقد الجسر عبر السلسلة لمنع مثل هذه الهجمات.
فيما يتعلق بهذا الهجوم، قام فريق أمان Beosin بتحليله.
تحليل الثغرات الأمنية
السبب الرئيسي لهذا الحادث هو أن وظيفة PerformanceAction الخاصة بعقد المقبس لا تعمل غير موجود. الاتصال الآمن. كما هو موضح في الشكل أدناه، فإن الوظيفة الأساسية لهذه الوظيفة هي تحويل ETH وWETH الخاصين بالمستخدم، إذا اختار المتصل fromToken كـ ETH، فسيتم الاستعلام عن رصيد toToken (WETH) الخاص بالعقد، وبعد ذلك يتم استدعاء toToken من خلال الاتصال (المنطق العادي بعد ذلك، يجب استدعاء وظيفة إيداع WETH هنا) ويتم تحويل مبلغ ETH المحدد من قبل المستخدم. بعد ذلك، يتم الاستعلام عن الرصيد الجديد لـ toToken (WETH) للعقد. إذا كان يساوي مبلغ ETH المحول من قبل المستخدم، ثم يتم تمريره ونقل toToken حدد عنوان المتصل. إذا اختار المتصل رمزًا آخر غير ETH، فبالطريقة نفسها المذكورة أعلاه، تتمثل الوظيفة في تحويل WETH الخاص بالمتصل إلى ETH (في الظروف العادية، يجب أن تستدعي المكالمة وظيفة السحب الخاصة بـ WETH) وإرسالها إلى حساب المستخدم المحدد. عنوان.
على الرغم من عدم وجود قيود على التحقق من fromToken وtoToken في الوظيفة، باستثناء عنوان WETH الذي تم تمريره، فإن عناوين ERC20 الأخرى ستتسبب في فشل التحقق من الرصيد، مما يجعل من المستحيل تزوير هاتين المعلمتين وبشكل غير مباشر قم بتغيير عنوان الرمز المميز، واقتصر على WETH.
على الرغم من وجود قيود على عناوين الرموز المميزة، إلا أن هذه الوظيفة لها أيضًا المشكلة هي أنه لا يوجد حد للمبلغ، إذا كان المبلغ الذي مرره المتصل هو 0، فسوف تمر حالة التحقق من الوظيفة دائمًا، وليست هناك حاجة لاستدعاء وظائف الإيداع والسحب الخاصة بـ WETH. في هذا الوقت، يمكن إدخال بيانات غير طبيعية في المكالمة لتحقيق غرض الهجوم.
عملية الهجوم
الآن بعد أن فهمنا مشكلة الوظيفة، دعنا نلقي نظرة على كيفية قيام المهاجم ينفذ الهجوم.
1. يقوم المهاجم أولاً بإنشاء عقد هجوم.
2. بعد ذلك، استعلم المهاجم عن رصيد WETH لعناوين مختلفة عدة مرات، واستعلم عن الرقم المعتمد للعنوان الخاص بعقد المقبس: البوابة، وأخيرًا اتصل بعقد المقبس: البوابة.
3. كما ترون، عندما يتم استدعاء وظيفة بيرفورماكشن هنا ، SwapExtraData المعلمة التي تم تمريرها هي 0x23b872dd...، وهو توقيع وظيفة النقل من، مما يشير إلى أنه سيتم استدعاء وظيفة النقل من الرمز المميز هنا مباشرة.
4. يمكن ملاحظة أن المهاجم يمرر منToken باسم WETH و المبلغ صحيح، هو 0 الذي ذكرناه أعلاه، العقد حول WETH الخاص بالمهاجم إلى العقد، لكنه كان 0. في المكالمة الهاتفية، حدد المهاجم عنوان مستخدم وقام بتحويل 16 WETH إلى المهاجم.
5. يقوم المهاجم بنقل WETH لعدد لا يحصى من المستخدمين إلى نفسه من خلال عدد كبير من العمليات .
6. يستخدم المهاجم نفس الطريقة لتخويل العقد نقل USDT لنفسك.
7. ويتضمن أيضًا ثلاثة رموز: WBTC وDAI وMATIC.
اعتبارًا من وقت كتابة المقالة، تم إنفاق ما يقرب من 3.3 مليون دولار أمريكي تمت سرقة بعض الأموال، وقام المهاجم بتحويلها إلى ETH، ولم يتم نقل عنوان المتسلل، وسيستمر Beosin Trace في مراقبة الأموال المسروقة.
في الوقت الحالي، يُصدر بروتوكول التشغيل البيني المقبس تحديثات الأحداث الأمنية على النظام الأساسي X : لقد استأنف المقبس الآن عملياته، وتم تعليق العقود المتأثرة، وتم احتواء الضرر بالكامل. تمت استعادة الجسر على Bungee ومعظم الواجهات الأمامية للشركاء. وسيتم الإعلان عن تحليل مفصل للحادث والخطوات التالية قريبا.
يذكّر Socke: "احذر من حسابات Switch المزيفة في الردود التي تحاول التصيد الاحتيالي. تحقق دائمًا من الحساب قبل اتخاذ أي إجراء."
يذكر هذا الحادث الجميع أيضًا أنه لا يمكن الاستخفاف بالسلامة.