يعد أمان العقود الذكية أحد أهم الموضوعات في تقنية البلوكشين , ولكن أظهرت جميع أنظمة العقود الذكية الحالية بعض أنواع الثغرات ، سواء كانت مدعومة من قبل الإيثيريوم أو الآيوس , وتسببت هذه الثغرات في خسائر فادحة للمشاريع والمستخدمين ، وأثارت الشكوك حول أمان تقنية البلوكشين.
الفصل 1 مقدمة:
في المقالتين السابقتين ، قدمنا نوعين من التهديدات الأمنية التي قد تحدث عند تطوير العقود الذكية على انتولوجي: الهجوم عبر العقود والهجوم الذي يفرض فشل عمليات التحويل. وقد قدمنا الحلول على التوالي. لمساعدة مطوري العقود الذكية على تجنب الثغرات الأمنية هذه ، سنستمر في جمع الحالات من المجتمع. يمكن للمطورين في مجتمعنا أيضًا أن يناقشوا معنا إذا واجهوا تهديدات أمنية أخرى عند تطوير عقود ذكية على انتولوجي، سنعمل معا على بناء نظام عقود أكثر أمانا.
في هذه المقالة ، سوف نقدم نوعا آخر من التهديدات الأمنية: هجوم حقن التخزين . قبل التعمق في هذا التهديد الأمني ، سنقدم أولاً واجهة التخزين الثابتة لعقد انتولوجي الذكي:
حيث الدوال (context, key, value)
تتضمن الواجهة بشكل أساسي المعطيات الثلاثة التالية:
- context: السياق الذي يتم فيه تشغيل العقد الذكي الحالي وعادة ما يكون هاش العقد الذكي الحالي.
- key: مفتاح البيانات التي يجب تخزينها .
- value: قيمة البيانات التي يجب تخزينها.
عادةً ، لن يواجه المطورون أي مشكلة عند استخدام هذه الواجهة لتخزين البيانات المستمرة ، لكن قد يواجهون خطر التعرض للهجوم في بعض التطبيقات المعقدة.
الفصل 2: هجوم حقن التخزين:
عندما يكتب المطورون عقوداً ذكية ، يحتاجون عادةً إلى استخدام مساحة تخزينية ثابتة لتخزين البيانات. يحتاج المطورون إلى استدعاء طريقة التخزين الثابت التي يوفرها العقد الذكي لتخزين البيانات. لتوضيح هذه النقطة بشكل أفضل ، إليك مثال على ذلك.
قبل إصدار توكن OEP-4 ، نحتاج إلى إدراك جميع واجهات OEP-4. لجعله أكثر بساطة ، سنقوم بإدراج طريقتين فقط هنا: transfer () و totalSupply ().
للوهلة الأولى ، هاتان الطريقتان جيدتان تماما. يمكن لـ transfer () تحقيق التحويل من عنوان from_acct إلى عنوان to_acct ، ويمكن لـ totalSupply () الحصول على إجمالي المعروض من الأصول. لكن إلقاء نظرة فاحصة على transfer () يُظهر أن الطريقة لا تتحقق من عنوان to_acct بأي طريقة.
إذا كان عنوان to_acct الذي يقدمه المستخدم الضار عبارة عن سلسلة ، على سبيل المثال ، “TotalSupply” ، فسيحصلون على عرض إجمالي للأصول غير صحيح. نظرا لأننا أدرجنا للتو طريقتين ، فإن الضرر الذي سيحدثه هذا يبدو محدودا. ومع ذلك ، إذا كان العقد الذكي يستخدم وحدة تخزين ثابتة أخرى ، فقد تتأثر جميع وحدات التخزين الثابتة.
الفصل 3: منع هجوم حقن التخزين:
كيف يمنع مطورو العقود الذكية مثل هذه الهجمات؟ كما يتبين ، المشكلة الرئيسية هي مفتاح التخزين الثابت ، يمكننا تقسيم المفتاح إلى نوعين:
مفتاح ثابت – المفتاح المحدد في العقد .
مفتاح النشط – المفتاح الذي يجب استيراده من الخارج.
لا يتغير المفتاح الثابت كما هو محدد في العقد ، بينما لا يمكن التنبؤ بالمفتاح النشط حيث يتم استيراده من الخارج. في حالات خاصة ، إذا كان المفتاح النشط يساوي مفتاحا ثابتا معينا ، فسيحدث هجوم حقن التخزين. لمنع مثل هذه الهجمات ، يمكن للمطورين إضافة حقل البادئة للمفتاح.
كما يتبين إذا كان العنوان to_acct الذي تم استيراده يضيف حقل البادئة في التخزين الثابت ، فلن يتم الخلط بينه وبين التخزين الثابت الآخر. الحل الأفضل هو إضافة حقل البادئة إلى جميع المخازن الثابتة. في هذه الحالة ، نظرًا لوجود اثنين فقط من المخازن الثابتة ، نحتاج فقط إلى التأكد من أنها ستؤثر على بعضها البعض.
الفصل 4: الكلمة الأخيرة
قدمت هذه المقالة النوع الثالث من الهجوم المحتمل الذي قد يواجهه مطورو العقود الذكية في أنتولوجي وقدمت لهم الحل.
يمكن لمطوري العقود الذكية في أنتولوجي أيضاً استخدام VaaS-ONT ، وهي عبارة عن منصة تحقق رسمية تلقائية للعقد الذكي مدمجة في SmartX ، لتحديد مكان الكود المحفوف بالمخاطر ومعرفة السبب في نقرة واحدة ، والتي يمكنها التحقق من ثغرات الأمان الشائعة وخصائص الأمان ، وصحة وظيفة العقود الذكية أو تطبيقات البلوكشين، وبالتالي تحسين الأمان.
هل أنت مطور؟ تأكد من انضمامك إلى مجتمعنا التقني على ديسكورد . أيضًا يمكنك ألقاء نظرة على مركز المطورين على موقعنا على الإنترنت ، حيث يمكنك العثور على أدوات المطورين والوثائق والمزيد.
اقرأ الجزء الأول من هنا
اقرأ الجزء الثاني من هنا
اقرأ الجزء الرابع من هنا
رابط تعريفي شامل من الغروب العربي على التلغرام التابع لعملة أنتولوجي
مرتبط:
المنصات والمحافظ لـ ONT & ONG