العنوان الأصلي: "تحليل ثغرة العقد المسروقة بقيمة 26.44 مليون دولار أمريكي في بروتوكول Truebit"
المصدر الأصلي: ExVul Security
في 8 يناير 2026، تم اختراق بروتوكول Truebit Protocol، مما أدى إلى خسارة 8,535.36 ETH (حوالي 26.44 مليون دولار أمريكي)، وقد أصدر فريق Truebit Protocol الرسمي بيانًا في صباح اليوم التالي لتأكيد الحادثة. وقد قام فريق الأمان ExVul بتحليل تفصيلي للثغرة في هذا الهجوم، والنتائج كما يلي:
التدفق الهجومي
عنوان المهاجم:
0x6c8ec8f14be7c01672d31cfa5f2cefeab2562b50
هاش المعاملة المهاجمة:
0xcd4755645595094a8ab984d0db7e3b4aabde72a5c87c4f176a030629c47fb014
أكمل المهاجم الهجوم من خلال معاملة تُكرر استدعاء getPurchasePrice→0xa0296215→0xc471b10b عبر أربع دورات. نأخذ الدورة الأولى كمثال للتحليل.
1. يقوم المهاجم أولاً بدعوة الدالة getPurchasePrice(240442509453545333947284131) والتي تُرجع 0.

2. استدعى المهاجم الدالة 0xa0296215(c6e3ae8e2cbab1298abaa3) مع قيمة msg.value تساوي 0. وأخيراً نجح في تشكيل 240442509453545333947284131 من TRU.

3. يقوم المهاجم بتشغيل الدالة 0xc471b10b(c6e3ae8e2cbab1298abaa3). في النهاية تُدمَر 240442509453545333947284131 وحدة من TRU، ويُكتسب 5105.06 وحدة من ETH.
تحليل منطق الهجوم
من خلال فهم عملية الهجوم المذكورة أعلاه، يمكن ملاحظة بوضوح وجود مشكلة منطقية في وظيفة getPurchasePrice وفي وظيفة 0xa0296215. سنبدأ الآن بالتحليل العميق (نظراً لعدم كشف العقدة المصدرية، فإن الشيفرات التالية هي شيفرات معاد تجميعها).


من خلال مقارنة نقاط التشابه بين الدالتين، يمكننا اكتشاف أن الوظيفة 0x1446 تُستخدم لحساب كمية ETH المطلوبة لشراء كمية معينة من TRU. من الواضح أن هناك مشكلة منطقية في وظيفة 0x1446 تؤدي إلى خطأ في حساب ETH. سيتم تحليل منطق وظيفة 0x1446 بالتفصيل أدناه.

يرجى ملاحظة منطق الدالة 0x1446، نظرًا لأن النتيجة النهائية للحساب v13 == 0، فهذا يعني بالتأكيد أن هناك مشكلة في منطق الحساب المذكور أعلاه. من المهم معرفة أن الوظيفة 0x18ef تشبه _SafeMul، وبالتالي فإن المشكلة تكمن في استخدام الإضافة الأصلية v12 + v9 (النسخة العقدية هي ^0.6.10، لذلك لا توجد فحوصات لحدوث تجاوز).
v12 وv9 تشير على التوالي إلى:

من خلال التحليل المذكور أعلاه، فإن منطق هجوم المهاجم هو إدخال قيمة _amountIn كبيرة جدًا، مما يؤدي إلى تجاوز (overflow) قيمة v12 + v9 إلى قيمة صغيرة جدًا، وأخيرًا تصبح (v12 + v9) / v6 == 0.
ملخص
السبب الجذري وراء الهجوم على بروتوكول Truebit هو وجود ثغرة خطيرة في منطق حساب سعر شراء الرمز المميز، تتعلق بحدوث تجاوز عدد صحيح (integer overflow). نظرًا لاعتماد العقد على إصدار Solidity ^0.6.10 ولم يتم تنفيذ أي فحوصات أمان لعمليات الحسابات الحاسمة، فقد تسبب ذلك في خسارة كبيرة تقدر بـ 8,535.36 ETH. في الوقت الحالي، تم تخفيف مشكلة تجاوز الأعداد الصحيحة في إصدارات Solidity الجديدة. من المرجح أن يكون هذا الهجوم ناتجًا عن قراصنة يستخدمون الذكاء الاصطناعي بشكل تلقائي لفحص بروتوكولات DeFi القديمة التي تم نشرها بالفعل (بما في ذلك هجوم Balancer و yETH في وقت سابق). نعتقد أن هذا النوع من الهجمات باستخدام الذكاء الاصطناعي على بروتوكولات DeFi القديمة سيزداد في المستقبل القريب. لذلك ننصح مطوري المشاريع بإجراء تدقيق أمان جديد على رموز العقود، وإذا تم اكتشاف أي ثغرات، يجب الترقية السريعة للعقود أو نقل الأصول، مع تنفيذ مراقبة سلسلة الكتل للكشف عن أي استثناءات بشكل فوري وتقليل الخسائر إلى الحد الأدنى.
هذا المقال مُقدم من قبل مُساهِمٍ خارجي، ولا يعبّر عن آراء BlockBeats.
انقر لمعرفة المزيد عن وظائف BlockBeats المفتوحة
مرحبًا بك في الانضمام إلى مجتمع BlockBeats الرسمي:
مجموعة اشتراك تيليجرام:https://t.me/theblockbeats
مجموعة المحادثة على تيليجرام:https://t.me/BlockBeats_App
الحساب الرسمي على تويتر:https://twitter.com/BlockBeatsAsia


