العقود الذكية هي عقود ذاتية التنفيذ على سلسلة الكتل. وهي تلغي الحاجة إلى وسطاء مثل المحامين أو البنوك من خلال أتمتة عملية تنفيذ أحكام العقد والالتزام بها. يمكن تشغيل العقود الذكية تلقائيًا دون أي تدخل بشري، وهي آمنة ولا يمكن التلاعب بها. وهي جذابة للأشخاص والشركات والحكومات التي تتطلع إلى أتمتة الإجراءات وخفض تكاليف المعاملات بسبب هذه القدرة.
إن قدرة العقود الذكية على الاستغناء عن الحاجة إلى الوسطاء يمكن أن تخفض تكاليف المعاملات، وتسرع المعاملات، وتزيد من الشفافية، وهي إحدى مزاياها الرئيسية. وبما أن البيانات مسجلة في سجل لامركزي لا يمكن اختراقه، فإن العقود الذكية يمكن أن توفر أيضًا قدرًا أكبر من الأمان والخصوصية مقارنة بالعقود التقليدية.
يتعمق هذا المقال أكثر في العقود الذكية، شارحًا المزيد حول طريقة عملها وكيف يمكن اختراقها. يمكن للقراء توقع تعلم ما يلي:
كيف تعمل العقود الذكية
كيف يمكن اختراق العقود الذكية
هجمات إعادة الدخول (Reentrancy)
تجاوز/نقص السعة (Overflow/Underflow)
الاعتماد على الطوابع الزمنية
إصدار الرموز والقوائم السوداء
أخطاء في الحسابات
مكتبات وتبعيات خبيثة
السبق في التنفيذ
أمثلة على اختراقات واقعية
استراتيجيات الوقاية والتخفيف
لنبدأ مباشرة!
كيف تعمل العقود الذكية
تعمل العقود الذكية باستخدام البرمجة لفرض شروط اتفاق ما. سيتم تشغيل العقد تلقائيًا عندما تتحقق الظروف المحددة مسبقًا، بمجرد نشر الكود على البلوكشين. ولا يمكن تعديل العقد بعد تلك النقطة.
على سبيل المثال، إذا وافق طرفان على عقد ذكي لبيع منزل، فبمجرد إجراء الدفع والتحقق منه عبر البلوكشين، سينقل العقد فورًا ملكية المنزل إلى المشتري.
قد تستخدم العديد من الصناعات، بما في ذلك التمويل وإدارة سلسلة التوريد والعقارات وغيرها، العقود الذكية. تملك التكنولوجيا القدرة على تغيير طريقة قيامنا بالأعمال والتواصل مع بعضنا البعض مع تطورها، وتُستخدم بشكل متزايد.
كيف يمكن اختراق العقود الذكية
نظرًا لأنها تستطيع أتمتة الاتفاقات التعاقدية دون استخدام وسطاء، فقد قُدِّمت العقود الذكية كتقنية ثورية تغيّر قواعد اللعبة. وبمثل أي تقنية أخرى، فهي ليست بمنأى عن العيوب، ويسعى القراصنة باستمرار إلى إيجاد طرق جديدة للاستفادة منها. فيما يلي بعض أشهر اختراقات العقود الذكية:
1. هجمات إعادة الدخول (Reentrancy)
قد يكون من الصعب اكتشاف هجمات إعادة الدخول لأن الكود يبدو أنه يعمل بشكل صحيح، مما يسمح للمهاجم باستغلال الثغرة بشكل متكرر إلى أن ينجح. تُعد اختراق DAO، حيث سرق مهاجم 50 مليون دولار من الإيثر عبر سحب الأموال مرارًا من عقد DAO، مثالًا معروفًا على هجوم إعادة الدخول.
يمكن للمطورين استخدام مجموعة متنوعة من التقنيات لتقليل خطر هجمات إعادة الدخول. على سبيل المثال، يمكنهم إنشاء أقفال (mutex) لمنع التنفيذ المتزامن لنفس العقد أو تحديد حدود لاستهلاك الغاز لإيقاف الدوال العودية الطويلة.
2. تجاوز/نقص السعة (Overflow/Underflow)
عندما تتجاوز نتيجة عملية رياضية حدود نوع بيانات، يحدث تجاوز/نقص السعة للأعداد الصحيحة (integer overflow وunderflow).
قد تكون عواقب تجاوز/نقص السعة للأعداد الصحيحة كارثية. على سبيل المثال، قد يسحب المستخدم أموالًا وينتهي به الأمر إلى رصيد سلبي. كما قد ينشئ المهاجم قيمة ضخمة بشكل غير عادي للتحايل على قيد أو إطلاق هجوم حجب خدمة (denial-of-service).
يمكن للمطورين منع تجاوز/نقص السعة للأعداد الصحيحة عبر استخدام أنواع بيانات مثل BigInt أو uint256 التي تتعامل مع الأعداد الكبيرة جدًا. ولضمان أن قيم الإدخال ضمن النطاق المسموح، يمكنهم أيضًا تضمين فحوصات لشروط الحدود.
3. الاعتماد على الطوابع الزمنية
الاعتماد على الطوابع الزمنية مسألة أخرى يمكن أن تؤدي إلى سلوك غير متوقع. يمكن للعقود الذكية استخدام الطوابع الزمنية للتحقق من الظروف الحساسة للوقت، بما في ذلك ما إذا كان المستخدم مستحقًا لصرف دفعة. يمكن للمهاجمين استغلال هذه الضعف عبر تغيير الطابع الزمني أو بدء معاملة في لحظة محددة لإحداث شرط ما قبل أن يحدث في الموعد الصحيح.
يمكن للمطورين تأكيد صحة ظروف محددة دون الاعتماد على الطوابع الزمنية باستخدام أرقام الكتل بدلًا منها. كما يمكنهم وضع حدود زمنية لمنع تنفيذ العقد بعد فترة زمنية معينة. ويمكن للمطورين كذلك الحصول على طوابع زمنية دقيقة من مصادر خارجية موثوقة للوقت.
٤. إصدار الرموز والقوائم السوداء
يمكن للقراصنة استخدام دوال الإصدار والقوائم السوداء في العقود الذكية لإضافة أو إزالة أو تقييد وصول المستخدمين إلى الرموز. على سبيل المثال، يمكن للهاكر إنشاء عدد لا نهائي من الرموز باستخدام دالة إصدار، ثم يمكنه بيعها لتحقيق ربح.
وبديلًا عن ذلك، يمكن للمهاجم استخدام ميزة القائمة السوداء لحرمان الوصول إلى رموز مستخدمين بعينهم، ما قد يؤدي إلى تآكل ثقة المستخدمين. لإيقاف هذه الأنواع من الهجمات، يجب على مطوري العقود الذكية تصميم آليات الإصدار والقوائم السوداء بشكل صحيح وإجراء اختبارات صارمة لها.
٥. أخطاء في الحسابات
لكي تعمل العقود الذكية بشكل صحيح، فإنها تعتمد على حسابات دقيقة. قد تؤدي التقديرات غير الدقيقة إلى نتائج غير متوقعة. على سبيل المثال، قد يخسر مالك العقد المال إذا احتوى العقد الذكي على خطأ في الحساب يسمح للمهاجم بالتحايل على قيود معينة أو الوصول إلى أموال لا يحق له الحصول عليها. علاوة على ذلك، قد يَربك ذلك المستهلكين ويؤدي إلى فقدان الثقة في عقد ذكي إذا أدى خطأ في إجراء عملية حسابية إلى أرصدة رمزية غير دقيقة.
٦. مكتبات وتبعيات خبيثة
تستخدم العقود الذكية كثيرًا مكتبات وتبعيات من مصادر أخرى. قد تمنح هذه التبعيات أو المكتبات المهاجم إمكانية الوصول إلى العقد أو أمواله إذا كانت خبيثة أو تم اختراقها. يمكن للمهاجم استغلال استخدام العقد الذكي لمكتبة تحتوي على باب خلفي، مثلًا، للاستيلاء على العقد. بالإضافة إلى ذلك، إذا كانت المكتبة بها ثغرة، يمكن للمهاجم الاستفادة من عقد ذكي لصالحه.
٧. السبق في التنفيذ
إن فعل التقدم للأمام في قائمة انتظار تنفيذ معاملة ما لاستردادها قبل حدوث معاملة مستقبلية معروفة يُعرف في مجال سلاسل الكتل والعملات المشفرة باسم السبق في التنفيذ (Front-running). وللاستفادة من المكاسب المحتملة وقطع الطريق على الأموال، يتم ذلك غالبًا عبر فحص تعليمات ودوال العقود الذكية التي لم تُستخدم سابقًا في عقد ذكي.
عندما يراقب مهاجم معاملة تبادل بعد بثها ولكن قبل أن تُستكمل، فإنه يكون بذلك قد نفّذ هجومًا بالسبق في التنفيذ. ثم يعيد ترتيب المعاملات لصالحه. يتحقق ذلك غالبًا عبر قيام مُعدّن أو بوت بإضافة معاملته الجديدة أمام المعاملة القائمة فورًا. تُنفَّذ المعاملة الخبيثة قبل أن تكتمل المعاملة الموجودة.
أمثلة على اختراقات العقود الذكية في العالم الحقيقي
على الرغم من أن العقود الذكية صُممت لتكون آمنة، فقد تم اختراقها أحيانًا أو استخدامها لأغراض خبيثة. فيما يلي بعض أمثلة اختراقات العقود الذكية الفعلية:
اختراق KingDice
بناءً على سلسلة بلوكشين Ethereum، فإن KingDice هي شبكة مراهنات لامركزية. في أغسطس 2017، استغل هاكر ثغرة في كود العقد الذكي للاستيلاء على ما يقارب 300,000 دولار من الإيثر.
استغلال Uniswap V2
في نوفمبر 2020، استغل هاكر ثغرة في عقد Uniswap V2 الذكي لسرقة ما يقارب 300,000 دولار من البيتكوين. وللتلاعب بسعر أحد الرموز والاستفادة من فرصة التحكيم، استخدم المهاجم قرضًا سريعًا (flash loan).
هجوم DAO
تم تطوير DAO (المنظمة المستقلة اللامركزية) على سلسلة Ethereum، وهي صندوق استثماري مبني على عقود ذكية. في يونيو 2016، سرق هاكر ما يقارب 50 مليون دولار من الإيثيريوم من الـ DAO بالاستفادة من ثغرة في برمجة الكود. تسبب الاختراق في إجراء فورك (تفرع) قوي لسلسلة بلوكشين Ethereum، ما أدى إلى نشوء Ethereum Classic.
اختراق Parity Wallet
في يوليو 2017، استغل هاكر ثغرة في محفظة Parity متعددة التوقيع (multi-sig) لأخذ ما يقارب 30 مليون دولار من الإيثيريوم. بسبب وجود خطأ في برمجة العقد الذكي، تمكن الهاكر من السيطرة على المحفظة ونقل جميع الأموال إلى حساب آخر.
استراتيجيات الوقاية والتخفيف
يمكن للمطورين استخدام الممارسات الموصى بها التالية لإنشاء عقود ذكية آمنة:
استخدام مكتبات وتبعيات معروفة جيدًا وتمت مراجعتها وتدقيقها. يساعد استخدام مكتبات وتبعيات معروفة جيدًا ومدققة على تقليل خطر إدخال ثغرات في عقد ذكي. ينبغي تجنب استخدام كود غير مُختبر أو غير موثوق، وعلى المطورين فحص أمان أي كود تابع لطرف ثالث بعناية قبل استخدامه.
تنفيذ فحوصات شروط الحدود. يجب أن تُنفّذ العقود الذكية فحوصات شروط الحدود، بما في ذلك قيم معلمات الإدخال الدنيا والقصوى. من خلال ذلك، يمكن تقليل هجمات تجاوز سعة الأعداد (overflow) ونقصها (underflow). تعتمد فعالية وشيوع تقنيات العقود الذكية على منع وتخفيف هجمات العقود الذكية.
يساعد استخدام مكتبات وتبعيات معروفة جيدًا ومدققة على تقليل خطر إدخال ثغرات في عقد ذكي. ينبغي تجنب استخدام كود غير مُختبر أو غير موثوق، وعلى المطورين فحص أمان أي كود تابع لطرف ثالث بعناية قبل استخدامه.
تجنب الاعتماد على الطوابع الزمنية. لتقليل احتمالية التلاعب بالطابع الزمني، ينبغي على المطورين الامتناع عن استخدام الطوابع الزمنية كأساس وحيد لتنفيذ منطق العقد الذكي. وعندما تتحقق متطلبات محددة، يمكنهم استخدام تقنيات بديلة مثل أرقام الكتل أو تجزئات الكتل.
اختبار شامل. يعتمد العثور على ثغرات العقود الذكية وإصلاحها على اختبار شامل. ينبغي للمطورين تشغيل اختبارات الوحدة والتكامل للتأكد من أن العقد يعمل كما هو مقصود ولتحديد أي مشكلات محتملة مبكرًا.
تنفيذ دوال الإصدار والقوائم السوداء بشكل صحيح. يجب على المطورين توخي الحذر عند تنفيذ دوال الإصدار والقوائم السوداء لمنع الوصول غير المرغوب فيه والتلاعب.
ضمان دقة الحسابات. تعتمد عملية العقود الذكية بشكل صحيح على حسابات دقيقة. عند إجراء عمليات رياضية معقدة، ينبغي للمطورين استخدام مكتبات مثبتة والتأكد من أن حساباتهم دقيقة.
مراجعات/تدقيقات الأمان. تُعد تدقيقات الأمان تقنية مفيدة لتحديد نقاط الضعف في العقود الذكية. قبل نشر عقودهم الذكية، يمكن للمطورين الاستعانة بشركات تدقيق متخصصة لمراجعتها. يمكن أن تساعد هذه التدقيقات الفرق على العثور على أي مشكلات محتملة وإصلاحها قبل أن يصبح الكود جاهزًا للإنتاج.
التحقق الرسمي. هو أسلوب رياضي للتأكد من دقة عقد ذكي. يمكن لهذه الطريقة المساعدة في ضمان أن العقد الذكي يعمل كما هو مخطط له وأنه آمن.
مكافآت على الأخطاء (Bug Bounties). يُشجَّع باحثو الأمن على اكتشاف ثغرات العقود الذكية والإبلاغ عنها عبر تقديم مكافآت. وللعثور على مشكلات محتملة وإصلاحها، يمكن للمطورين الوصول إلى مجموعة كبيرة من خبراء الأمن من خلال دفعهم للعثور على الثغرات.
الخلاصة
ختامًا، على الرغم من أن العقود الذكية توفر طريقة ثورية لأتمتة المعاملات على بلوكشين، فإنها عرضة للاختراقات وخرق/انتهاكات الأمان. يجب على المطورين الالتزام بالممارسات الموصى بها مثل تدقيق العقود الذكية واختبارات الأمان لمنع اختراق العقود الذكية.
يمكن للمطورين ضمان الصحة طويلة المدى لتقنية البلوكشين وإنشاء نظام بيئي موثوق لجميع المستخدمين، بعيدًا عن مخاطر اختراق العقود الذكية. ويمكنهم تحقيق ذلك عبر وضع إجراءات مثل مكافآت العثور على الأخطاء، والتحقق الرسمي، وتدقيقات الأمان. وفي النهاية، فإن إعطاء الأولوية للأمان أمر أساسي لتطوير العقود الذكية وقطاع البلوكشين.
تم نشر مقال: كيف يمكن اختراق عقد ذكي؟ أولًا على Coinfomania.
