يعد أمان العقود الذكية أحد أهم الموضوعات في تقنية البلوكشين , ولكن أظهرت جميع أنظمة العقود الذكية الحالية بعض أنواع الثغرات ، سواء كانت مدعومة من قبل الإيثيريوم أو الآيوس , وتسببت هذه الثغرات في خسائر فادحة للمشاريع والمستخدمين ، وأثارت الشكوك حول أمان تقنية البلوكشين.
الفصل 1: مقدمة
في المقالات الثلاثة السابقة ،قدمنا ثلاثة أنواع من التهديدات الأمنية التي قد تحدث عند تطوير العقود الذكية على أنتولوجي: الهجوم عبر العقود ، الهجوم الذي يفرض فشل عمليات التحويل، والهجوم بالحقن في التخزين. وقد قدمنا الحلول على التوالي. لمساعدة مطوري العقود الذكية على تجنب هذه الثغرات الأمنية ، سنستمر في جمع الحالات من المجتمع. في غضون ذلك ، يمكن للمطورين في المجتمع مناقشة ما إذا كانو يواجهون تهديدات أمنية أخرى عند تطوير العقود الذكية على انتولوجي. معًا ، سنقوم ببناء نظام عقد ذكي أكثر أمانًا على أنتولوجي.
في هذه المقالة ، سيتم تقديم نوع أكثر شيوعا من التهديدات الأمنية - هجوم الحدود ، وسيتم عرض حله. قبل التعمق فيه ، يرجى ملاحظة أن عقود انتولوجي الذكية تدعم العمليات الحسابية الإيجابية والسلبية.
ضمن العقود الذكية لانتولوجي، تكون القيمة العددية القصوى هي
MAX_ ، 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ، والتي تبلغ 2²⁵⁵
بينما الحد الأدنى للقيمة العددية MIN_ 0x800000000000000000000000000000000000000000000000000000000000000000000002. والتي تبلغ (2²⁵⁵-1)
يوصى بأن يقوم المطورون بالقيام بالقيود الصحيحة والتحقق من المعلمات التي تم تمريرها في العقود ، وإلا فإن الثغرات المحتملة قد تؤدي إلى خطأ غير متوقع ، مما يؤدي إلى هجوم خطير.
الفصل 2: هجوم الحدود:
عندما يقوم المطورون بتطوير عقود ذكية، عادة ما يحتاجون إلى تمرير القيمة العددية إلى العقود كعامل متغير عند استدعاء العقد. في معظم السيناريوهات ، قد يستخدم المطورون فقط الأرقام غير السالبة. إذا كان الأمر كذلك ، يجب أن يتذكر المطورون دائمًا التحقق والتأكد من أن العوامل التي تم تمريرها لن تتجاوز الحدود وانها قانونية.
لنأخذ طريقة ‘transfer ()’ كمثال ، مدرج في عقد بسيط يتبع بروتوكول OEP-4.
ضمن طريقة “transfer ()” أعلاه ، لدينا:
1. تحقق من طول from_acct و to_acct للتأكد من أنها قانونية كعناوين.
2. التحقق من صحة توقيع from_acct.
3. تأكد من أن المبلغ الذي يتم تحويله أصغر من أو يساوي رصيد حساب from_acct.
4. تحديث رصيد from_acct إلى fromBalance (رصيد الحساب الأصلي الذي يتم تحويله) – المبلغ (المبلغ الذي يتم تحويله).
5. تحديث رصيد to_acct إلى toBalance (رصيد الحساب الأصلي الذي يتم تحويله ) + المبلغ (المبلغ الذي يتم تحويله).
للوهلة الأولى ، التنفيذ والتدفق المنطقي صحيحان. لنفترض أننا نجمع وننشر عقدًا ذكيًا وفقًا لبروتوكول OEP-4 استنادًا إلى طريقة “transfer ()” أعلاه ، وأن رصيد from_acct و to_acct كلاهما صفر ، فمن المثير للدهشة ، سنلاحظ أنه يمكن استدعاء “التحويل (from_acct، to_acct، -100)” بنجاح.
بعد ذلك ، يمكننا استدعاء “balanceOf ()” قبل التنفيذ السابق للاستعلام عن رصيد from_acct و to_acct ، والنتائج “64” و “9c”. من خلال أي نوع من أنواع sdk المتوفرة في
https://dev-docs.ont.io/#/docs-en/SDKs/00- overview
ونحصل على “100” و “-100”.
على الرغم من أن إجمالي العرض في هذا العقد الذكي OEP-4 لا يتغير ، فإن from_acct لديه 100 توكن قانوني. وهذا ما لا نريد أن يحدث.
الفصل 3: منع هجوم الحدود:
تتمثل طريقة تجنب هجوم الحدود في إجراء فحص معياري للحدود للمعلمات التي تم تمريرها في العقد ، وخاصة بالنسبة للمعايير الرقمية. لنأخذ نوع الأصول من العقد الذكي كمثال ، يجب أن نمنع بصرامة تمرير القيمة السلبية. ويمكن تنفيذ طريقة “transfer ()” أعلاه مع وجود ثغرات على النحو التالي.
بالإضافة إلى النقاط الخمس المذكورة أعلاه ، نضيف الفحص المعياري للحدود للمعلمة “amount” للتأكد من أنها غير سالب. بهذه الطريقة ، يمكننا تجنب هجوم الحدود المحتمل.
نظرًا لأن العقود الذكية لأنتولوجي تدعم كل من العمليات الحسابية للقيمة الرقمية الإيجابية والسلبية على حد سواء، يجب علينا إجراء الفحص المعياري للحدود استنادا إلى سيناريوهات التطبيق الحقيقي.
علاوة على ذلك ، تجدر الإشارة إلى أنه :
1. لا توجد مشكلات تجاوز السعة و تجاوز الحد الأدنى ضمن نظام العقد الذكي لأنتولوجي . عندما نقوم بعمليات حسابية ضمن العقد ، فإن العقد (أو VM) سيثير استثناء بمجرد أن تكون المتغيرات أكبر من MAX_ أو أقل من MIN_.
2. ضمن العقود ، بصرف النظر عن أنواع المعلمات ، من الجيد دائما القيام بعمليات تدقيق معيارية ذات مغزى (مثل الحدود ، الطول ، إلخ). على سبيل المثال ، تأكد من أن طول عنوان “account” يبلغ 20 “تأكيد (len (account) == 20)” ، “هل نوع العدد الصحيح” amount ” ضمن الحدود القانونية ، وهل نوع السلسلة ‘str’ لديها الطول الصحيح.
الفصل 4: الكلمة الأخيرة
قدمنا النوع الرابع من ثغرات أمان العقود الذكية على أنتولوجي وحلها. حتى الآن ، توصلت سلسلة تحليل الثغرات لآمان العقود الذكية إلى نتيجة. سنستمرفي تقديم أي ثغرات أخرى قد نواجهها في المستقبل. يمكنك أيضا مساعدتنا في إنشاء نظام عقد ذكي أكثر أمانا على أنتولوجي.
يمكن لمطوري العقود الذكية في أنتولوجي أيضاً استخدام VaaS-ONT ، وهي عبارة عن منصة تحقق رسمية تلقائية للعقد الذكي مدمجة في SmartX ، لتحديد مكان الكود المحفوف بالمخاطر ومعرفة السبب في نقرة واحدة ، والتي يمكنها التحقق من ثغرات الأمان الشائعة وخصائص الأمان ، وصحة وظيفة العقود الذكية أو تطبيقات البلوكشين، وبالتالي تحسين الأمان.
هل أنت مطور؟ تأكد من انضمامك إلى مجتمعنا التقني على ديسكورد . أيضًا يمكنك ألقاء نظرة على مركز المطورين على موقعنا على الإنترنت ، حيث يمكنك العثور على أدوات المطورين والوثائق والمزيد.
اقرأ الجزء الأول من هنا
اقرأ الجزء الثاني من هنا
اقرأ الجزء الثالث من هنا
رابط تعريفي شامل من الغروب العربي على التلغرام التابع لعملة أنتولوجي
مرتبط:
المنصات والمحافظ لـ ONT & ONG