بتوقيت بكين في 28 فبراير 2024، وفقًا لمنصة تحليل رأس المال Beosin، هناك ثغرة أمنية في عقد مشروع SenecaUSD على سلسلة ETH.استخدم المتسللون بعناية معلمات بيانات الاتصال التي تم إنشاؤها، ونقل المكالمات من لنقل الرموز المميزة المصرح بها لعقد المشروع إلى عنوانك الخاص، وأخيرًا استبدالها بـ ETH. في الوقت الحالي، أعاد المتسلل 80% من الأموال، ويستخدم الـ 20% المتبقية كمكافأة للقبعة البيضاء. وفيما يلي تحليل Beosin للهجوم.
تحليل الثغرات الأمنية
مشروع سينيكا توجد وظيفة أداء في العقد، ويتم استخدام المعلمات التي تم تمريرها بواسطة هذه الوظيفة لاختيار تنفيذ منطق وظيفة مختلف.
يمكنك أن ترى أنه عندما يحدد المستخدم الإجراء 30، ستختار الوظيفة استدعاء وظيفة _call وتمرير معلمات الاتصال المحددة من قبل المستخدم.
تقوم وظيفة _call بالتحقق فقط من عنوان الاتصال القائمة السوداء، ثم استدعاء الوظيفة المحددة مباشرة على العنوان المحدد من قبل المستخدم دون أي فحوصات مقيدة على المتصل ومعلمات الاتصال.
إذا قام المتصل بإنشاء بيانات مكالمة غير قانونية هنا، فقد يؤدي ذلك إلى هجمات.
عملية الهجوم
نفذ المهاجم في هذه الحادثة عدة هجمات باستخدام نفس الطريقة. هنا نأخذ المعاملة 0x23fcf9d4517f7cc39815b09b0a80c023ab2c8196c826c93b4100f2e26b701286 كمثال. دعونا نلقي نظرة على كيفية قيام المهاجم ببناء بيانات المكالمة وتنفيذ الهجوم.
1. يقوم المهاجم باستدعاء وظيفة الأداء مباشرة وإنشاء المعلمات التالية، والتي تمر فيها الإجراءات بالـ 30 المذكورة أعلاه، ويتم استدعاء وظيفة _call.
2. بيانات البيانات هي:
0x00000000000000000b05cabcd99cf9a73b19805edefc5f67ca5d1895e
000000000000000000000000 000 0000000000000000000000000000a0
< p style="text-align: left;">00000000000000000000000000000000000000000000000000000000
000000000000000000000000000 00000000000000000000000
0000000000000000000000000000000000000000000< /p>
0000000000000000000000000000000000000000 0000000064
23b872dd00000000000000009 cbf099ff424979439dfba03f00b5961
784c06ce000000000000000000000000094641c01a4937f2c8ef930580cf39614
2a2942dc000000000000000000000000000000000000 00 00000004b180b8661
8eddc3ab000000000000000000000000000000000000000000
وفقًا لقواعد التحليل، يتم استدعاء أول 32 بايت=0xb05cabcd99cf9a73b19805edefc5f67ca5d1895e.
بيانات الاستدعاء الثانية هي 0، 100 (0x64) بايت، ثم تحصل على
بيانات الاتصال هي:
0x23b872dd00000000000000009cbf099ff424979439dfba03f00b5961784c06ce000000000000000000000000094641c01a49 37f2c8ef930580cf396142a2942dc000000000000000000000000000004b180b86618eddc3ab
3. استعلم عن محدد الوظيفة. وفقًا لبيانات callData، تحدد callData وظيفة النقل من. ثم يمكننا تحليل هذه المكالمة على النحو التالي:
0xb05cabcd99cf9a73b19805edefc5f67ca5d1895e.transferFrom(0x9cbf099ff424979439dfba03f00b5961784c06ce,0x94641c01a4937f2c) 8ef930580cf396142a2942dc،1385238431763437306795).
4. بما أنه في المعاملة السابقة، قام 0x9cbf099ff424979439dfba03f00b5961784c06ce بتفويض الحد الأقصى للقيمة إلى العنوان 0x65c210c59b43eb68112b7a4f75c8393c36491f06، لذلك هنايقوم المهاجم بنقل 0x9cbf099 مباشرة ff42 من خلال وظيفة النقل من. أكثر من 1385 PT-rsETH-27JUN2024 (0xb05cabcd99cf9a73b19805edefc5f67ca5d1895e) من الرموز المميزة لـ 4979439dfba03f00b5961784c06ce تم نقلها إلى العنوان الخاص بها.
5. قام المهاجم بعد ذلك بتبادل الرموز المميزة PT-rsETH-27JUN2024 مقابل ETH.
تتبع التمويل
بعد أن تم بعد الهجوم، صرخ مسؤول نشر سينيكا في وجه المهاجم، وطلب منه إعادة الأموال، وذكر أنه يمكن الاحتفاظ بـ 20% من الأموال كمكافأة للقبعة البيضاء.
وفقًا لمنصة تتبع أموال Beosin، اعتبارًا من وقت النشر، أعاد المهاجم 1,537 ETH (80٪) من أكثر من 1,900 ETH مسروقة إلى العنوان المحدد من قبل الناشر، والـ 370 ETH المتبقية (20%) تبقى متناثرة على عنوان المهاجم.