"محفوفة بالمخاطر" عمليات نقل إيثرنت - المخاطر الأمنية نقل إيثرنت

لأمن سلسلة كتلة، سلسلة من فريق تشنغدو للعلوم والتكنولوجيا في كل أسبوع سيكون عقد الثغرات الأمنية عزم تسلسلي ذكي، على أمل أن المبرمجين مساعدة إرسال عقود الشركة أكثر أمنا قبل وقوعها.

مقدمة: الرياح لا يتحرك الزيز المتنورين، مؤامرة الثبات القتلى لا أعرف - "الشهيرة مجموعة" من "الفصل السابع" ربات البيوت آخر مرة تحدثت عن: مفاجأة تخزين متغير المحلية والمتغيرات غير المتوقعة التي تغطي تغيير الحرس لسحب العلم. الطبيعة الخاصة للتخزين الافتراضي قواعد المتغيرات لغة الصلابة والمراجع غير مهيأة جمعت المتغيرات غير مهيأ أدت إلى متغيرات الحالة الأصلية مغطاة، مع الاخذ في موقف في المتغيرات الدولة في التخزين، تكرار الحدث "عالية السرعة الطغاة مقعد السكك الحديدية" مؤخرا. لا ينبغي التغاضي عن المخاطر الأمنية الناتجة عن ذلك، لذلك ينبغي أن نولي الاهتمام لفي التحذير مترجم عملية التنمية، وتهيئة المتغيرات غير مهيأ للعمل، أو لترتيب مساحة التخزين المؤقت على الذاكرة، هذه المخاطر والقضاء عليها.

الموضوع الحالي دبا هوى، وتعقيد عملية نقل، والاستجابة الأمنية على حدة.

ناقش المسلسل مجموعة كبيرة ومتنوعة من ثغرة عقد الرموز قمنا بتحليل قبل الثغرات، ومعظم هذه العقود والرموز الرموز المميزة للعمل، وأنها لا تنطوي بالضرورة العملة سكوير سنتر إيثرنت - إيثرنت العملة (الأثير). ومع ذلك، كما عقد لعبة انتشرت ظهرت بأعداد كبيرة، والمزيد والمزيد من الألعاب تكون العقود المباشرة أيضا بمثابة أموال عملة اللعبة. هذه "المال" لعبة ربط العقود المباشرة والمتعلقة منطق نقل للعملة إيثرنت غير قابلة للكسر إذا كان قادرا على القيام به في المعنى الحقيقي لذلك؟ الجواب هو لا، على سبيل المثال Pandemica بونزي لعبة صناديق حدث مؤخرا والأحداث المجمدة ، والتي تصل إلى "تجاوز الحد الأعلى من الغاز الناجم عن هجمات حجب الخدمة"، يركز على الجزء الثاني من تحليلنا لهذا النوع تسلسل في الأمن تشنغدو سلسلة مايكرو الضعف أيضا. في هذه المسألة لدينا لتحليل نقاط الضعف والفخاخ أخرى ذات صلة مباشرة لنقل العملة إيثرنت.

أساسيات مقدمة

في لغة الصلابة، ويوفر المسؤول ثلاث طرق لإرسال عنوان الوجهة الأثير (العملة إيثرنت). < عنوان > عندما .transfer (مبلغ uint256) إيثرنت مقدار العملة أرسلت وي إلى عنوان الوجهة، تفشل رمي استثناء أرسلت  2300 الغاز رسوم عمال المناجم، لا يمكن تعديلها. < عنوان > عندما أرسلت العوائد. ترسل (مبلغ uint256) (منطقي) إيثرنت مقدار العملة وي إلى عنوان الوجهة، تفشل عودة كاذبة أرسلت  2300 الغاز رسوم عمال المناجم، لا يمكن تعديلها. < عنوان > .call.value العوائد (مبلغ uint256) (منطقي) إيثرنت مقدار العملة وي إرسالها إلى عنوان الهدف، يفشل عودة كاذبة والإرسال كل الغاز المتاح ، ويمكن تعديل (.gas (uint256 gasAmount)) .

تعلم ثلاث طرق لإرسال الأثير، ونضع لهم تأجيل. إدخال مرة أخرى مفهوم الاختيار ثابتة.

تحقق من ثابتة تستخدم لفرض أسلوب البرمجة الدفاعية المشتركة، والتحقق من عملية الانتقال الحالة الصحيحة. وهي تتألف من مجموعة محددة من ثابتة (أو ينبغي أن المعلمات لا تتغير المصفوفة)، وتحقق ما إذا كانت هي نفسها في كل من عمليات واحدة أو متعددة. يجب أن الشيكات لم تتغير المتغيرات لا تتغير، وهذا هو التصميم الجيد. في ERC20 الرموز التي كنا أيضا هذه التقنية، على سبيل المثال، فإن العدد الإجمالي من الرموز totalSupply هو دون تغيير. وبما أنه لا يجب تغيير هذا المتغير، وبالتالي فإن قسم نقل وظيفة لإضافة آلية الاختيار، totalSupply قبل وبعد عملية المقارنة لتحديد ما إذا كان تغيير يتم تنفيذ الدالة نقل بشكل صحيح .

السؤال الذي يطرح نفسه

لمدة ثلاث طرق لإرسال الأثير، ستكون هناك مشاكل على تراجع وظيفة التراجع، إذا عقد، بدلا من المستخدم، تلقى الأثير (ويسمى أي وظيفة)، من شأنها أن تؤدي وظيفة تراجعية. وظيفة وظيفة تراجعية هنا هو قبول الأثير، وعدم توفر هذه الميزة، فإنه سيتم رفض العقد (وأنه سوف يرمي استثناء). إذا تم إرسال العقد إلى العنوان الأثير عقد الهدف، أثناء تنفيذ وظيفة تراجع العقد الهدف، وعقد في هذا الوقت يمكن أن تعتمد فقط على ما هو متاح "بدل الغاز" (2300gas) يتم تنفيذ باستخدام وضع نقل / الإرسال. هذا بدل ليست كافية لتخزين تخزين كامل في أي وصول الطريق. وسيؤدي هذا في وظيفة تراجعية دائما العودة إلى false، كما الربيع غير قابل للاسترداد.

وفيما يتعلق بقضية الشيكات ثابتة والمطورين يميلون إلى الثقة في العقود الحالية في وجود الأثير، ولكن في واقع الأمر يمكن أن يكون التلاعب مستخدم خارجي في حالة تجاهل القواعد الداخلية للعقد. والمطورين في تعلم الصلابة تنتج بسهولة اعتقاد خاطئ بأن عقد يمكن أن تصل فقط بواسطة وظائف تدفع الأثير، دون الأخذ بعين الاعتبار استقبال الأثير، و أنها لا تؤدي أي وظيفة الوضع. وهذه العقود تواجه الأثير إلزامية إرسالها إلى عقد استغلال غير هشة للغاية. هو حقا دليل على يقول المثل القديم، محادثات المال.

دراسات حالة محددة

A. المخاطر الأمنية من إرسال واستقبال العملة إيثرنت  1. استخدام نقل لارسال المخاطر الأمنية الأثير ممكن إلى العنوان. لنا Ethernaut الملك نقطة تفتيش على العقد كحالة:

أيا كان يرسل أكبر مكافأة من الأثير الحالي، وسوف تصبح ملكا جديدا، كان الملك الإطاحة الحصول على مكافأة جديدة. إذا كان المهاجم نشر العقد، على النحو التالي:

بعد الدالة لا يمكن أن تصل لالأثير تراجع، وأصبح المهاجم الملك من خلال مهاجمة عقود، منافسين جدد في حال إرسالها إلى عقود العملات إيثرنت ليصبح ملك king.transfer تنفيذ عملية (msg.value)؛ سوف أكون دائما تعود، المهاجم يؤديها في الواقع نقطة ضعف المسلسل التي وصفها المرحلة الثانية من إطلاق دوس الرجوع. 2. استخدام الإرسال لإرسال المخاطر الأمنية التي قد تكون موجودة لمعالجة الأثير أخذ التعليمات البرمجية في نفس الفترة في الحالة الثانية KingOfTheEtherThrone

لأن تنفيذ الإرسال سيعود بعد كاذبة الفشل بدلا من رمي استثناء، فإن العقد لا تحقق اللاعبين الإرسال قيمة الإرجاع من خلال جزء من العقد حسابات المشاركين في اللعبة، لإرسال 2300gas عرضية نظام الاستعاضة لا يمكن أن تكتمل العملية، مما أدى إلى فشل لاستقبال عودة الأثير.

3. استخدام call.value إرسال الأثير الممكن أن المخاطر الأمنية عنوان استخدام call.value الشحن إيثرنت افتراضيا يأتي مع كل من الغاز المتبقية، إذا كان العقد لتحقيق وجود خفية، قد يسبب هجوم عودة الدخول، وبعد أن فشلت عملة إيثرنت لارسال عوائد call.value كاذبة، إذا كنت لا تحقق قيمة الإرجاع، ثم العقد سيكون افتراضيا، كل إرسالها بنجاح الأثير، ثم قم بتغيير متغيرات حالة إعدام، فمن الواضح أن هذا هو منطق معيب.

إصلاح الأخطاء O عندما الشحن إيثرنت المال إلى عنوان، والنظر في الحصول على عنوان هو الفرق بين الحسابات والعقود العادية حساب، إذا كان عنوان تلقت عقدا، فمن الضروري النظر عما إذا كان ذلك جاء مع ما يكفي من الغاز في صفقة لضمان أن العقد ديه ما يكفي من الغاز لأداء وظيفة المقابلة؛ س بد من النظر في احتمال فشل إرسال الأثير: نقل فشل في إرسال ستعود، ولكن هذه الميزة يمكن استخدامها لشن هجمات DOS، إرسال وcall.value إرسال الأثير عوائد فشل كاذبة والمطورين في حاجة الى ذلك لمعالجة.

II. الأثير غير متوقع اضطر إلى  1. التدمير الذاتي أي عقد قادرون على تحقيق ذلك الإتلاف بنفسك (العنوان) وظيفة يقوم بحذف كل بايت كود من عنوان العقد، وينقل جميع المعلمات المخزنة هناك إلى العنوان الأثير المحدد. إذا كان هذا هو العقد العنوان المحدد، فإنه لن استدعاء أي وظيفة (بما في ذلك وظيفة تراجعية). لذلك، يمكن تجاهل أي رمز العقود وظيفة الإتلاف بنفسك في وجود الهدف، والقوة التي تنتقل إلى أي عقد الأثير الهدف، وعقد ويمكن أن تشمل أي وظيفة الدفع. وهذا يعني أن أي مهاجم يمكن أن تخلق عقود مع وظيفة الإتلاف بنفسك، وإرسال الأثير، دعوة الإتلاف بنفسك (الهدف) وقوات إرسال الأثير لعقود الهدف. مارتن Swende هناك بلوق وظيفة ممتازة يصف بعض غريب التدمير الذاتي شفرة تشغيل العملية، ويصف كيفية التحقق من الثوابت غير صحيحة عقدة العميل، مما قد يؤدي إلى مشاكل العميل كارثية جدا . 2. الأثير سبق احالتها عقد الإتلاف بنفسك لا تستخدم او استدعاء أي وظيفة المستحقة وظيفة يمكن أن تلقي تزال الطريقة الثانية هي أن يتم إرسالها الأثير الأثير ما قبل العقد إلى العنوان. عنوان العقد القطعية، في الواقع مشتق عنوان من قيمة الصفقة لحساب عنوان التجزئة حالية إنشاء العقود وإنشاء العقود، وهي على الشكل التالي: عنوان = sha3 (rlp.encode ( ) انظر  الأثير بدون مفتاح في بعض الحالات استخدام مثيرة للاهتمام حول هذه النقطة، أو كيف هو عنوان من عقد Ethereum حساب؟ . وهذا يعني أن أي شخص يمكن حساب عنوان العقد قبل إنشاء العقد ويرسل الأثير إلى هذا العنوان. عند إنشاء العقد في الواقع، كان لديه توازن الأثير صفرية.

3. التعدين في الوقت الحاضر، سواء العقد أو "الحسابات الخارجية" لا يمكن أن تتوقف شخص إرسالهم عملة إيثرنت الأثير. يجوز عقود لنقل رد فعل طبيعي ونرفضه، ولكن هناك قد لا يتم إرسالها عبر الأثير العملة إيثرنت بعض طرق إنشاء رسالة. طريق واحد هو مجرد عنوان العقد "التعدين".

أجرينا تحليلا مفصلا لهذا العقد للبدء من الأسفل

يمثل هذا العقد لعبة بسيطة (الأسباب الطبيعية حالة سباق (السباق الشروط) )، يمكن للاعبين يرسل 0.5 الأثير إلى العقد، على أمل أن يصبح أول لاعب للوصول إلى واحدة من المعالم الثلاث. معالم سجلت في الأثير. عندما تنتهي اللعبة، وأول من يصل إلى علامة فارقة واحدة يمكن الحصول على عقد الأثير جزئي. عند الوصول إلى علامة فارقة النهائي (10 الأثير)، ان اللعبة قد انتهت، ويمكن للمستخدم أن يكون مكافأة تمت إزالتها. الأكاذيب مشكلة في عقد UINT currentBalance = this.balance + msg.value؛ (وما يرتبط بها من خط) و استخدام this.balance أخطاء خط. ويمكن ذكر أحد المهاجمين والطرق الثلاثة المذكورة أعلاه ينكمش إلى الأثير: هذا أول تجسيد، التدمير الذاتي:

نشر عقود إضافية في الأثير الصفقة 0.1، ومن ثم استدعاء الهجوم وظيفة من عقد التدمير الذاتي، وهذه المرة إرسال القضية إلى 0.1 عقد الأثير، والعقد لأن القضية يمكن أن تتلقى سوى 0.5 الأثير، فإن متوسط لاعب لن تكون قادرة على تلبية المعالم المتطلبات، فإن اللاعبين لعبة لا نصر إلا إذا اضطرت 0.4 الأثير المتبقية في العقد.

والطريقة الثانية وتخزينها الأثير: صلابة الحوسبة نشر باستخدام عنوان نهج العقد إلى عنوان (keccak256 (0xd6، 0x94، _from، حالية)) الذي يمثل عنوان _from نشر العقود حساب، يمثل حالية نشر هذا عنوان الحساب حالية عند العقد أن آخر رقم المعاملة +1. إذا قمت بنشر عقد الحساب هو الصفقة الأولى، إذا كان الحساب هو عقد، = حالية 1، إذا كان المستخدم العادي، حالية = 0:

إصلاح الأخطاء هذا الضعف هو إساءة استعمال this.balance في حيثما كان ذلك ممكنا، لتجنب منطق قيمة العقد بالضبط يعتمد على ما تبقى من العقد، لأنه لا يمكن التلاعب بها خارج منطق العقد. إذا يجب أن يقوم العقد على this.balance المنطق، نحن بحاجة إلى النظر في التوازن الحادث العقد. إذا كنت بحاجة إلى توازن دقيق للقيمة، ثم على الدولة أن تحدد متغير الذي يتلقى ظيفة الأثير عبر دفعها عندما ارتفع العقد إلى عقود تتبع الأمن الأثير تلقى، وهذا متغير يتم إرسال قسرا الأثير في العقد (على سبيل المثال الإتلاف بنفسك) () الآثار. لذلك، تعديلات على الحالة المذكورة أعلاه العقد هو كما يلي.

كاي يون شين المحكمة الأيام الأولى، المطر يأتي من الرياح مع التكنولوجيا سلسلة كتلة شعبية، بدأت تنوع الأنواع ذكية من العقد لتحسين. المزيد والمزيد من العقود ومتطلبات التدقيق الجديدة لتطوير العقود الذكية فرصة وتحديا. فوق المخاطر عن أمن تحدث تحويلات العملة إيثرنت، ويبدو في كثير من الأحيان في عقود العملة لعبة إيثرنت استخدامها مباشرة ينقل الارتفاع الأخير في حين تسبب خسائر اقتصادية، ولكن أيضا تقليل ثقة المستثمرين في صناعة سلسلة الجانب المشروع وكتلة. تشنغدو للعلوم والتكنولوجيا لتعزيز سلسلة، مواجهة هذه الحالة، يجب أن نكون في موقف أفضل نحو التنمية وتدقيق كلا العقدين، موقفا معتدلا لتلبية صناعة سلسلة كتلة مضطربة القادمة.

هذا العدد من تحليل هشاشة تسلسل هنا، كيف الجنازة، راجع التحلل في المرة القادمة.

اقتباس: : لعبة Pandemica بونزي وراء الثغرات جود الغاز، وأكثر من 80 مليون دولار في التمويل وتجميد https://bcsec.org/index/detail/id/260/tag/2 : وثائق رسمية ساحة إيثرنت - عنوان ذات صلة: https://solidity.readthedocs.io/en/v0.4.24/units-and-global-variables.html#address-related : الصلابة الأمن: https://blog.sigmaprime.io/solidity- security.html # الأثير : وثائق رسمية ساحة إيثرنت - إرسال واستقبال الأثير: https://solidity.readthedocs.io/en/v0.4.24/security-considerations.html#sending-and-receiving-ether

زهرة الصوت | زهرة مبتسمة

بسيطة لإتقان هذه الألوان الثلاثة، الأصفر إنقاذ شقيقة الأسود، الملاحظ بسهولة رقم اللون الأبيض اثنين

مضاءة 2019: بالنيابة عن أعضاء، ثم الثقة | تطوير هيكل الاستهلاك، دعم الطلب المحلي في السوق يوم واحد

ملك الأحذية الرياضية إلى الشارع! أربعة أنواع من مزيج بسيط من مزيج المباراة لتلبية نمط الأزياء الخاصة بك

2016/4 الثلاثة الأولى من العملية الاقتصادية من الفحم

كيفية إصلاح الشركات المملوكة للدولة؟ إصلاح ملكية مختلطة قد يحقق اختراقات جديدة في أي المجالات؟ SASAC آخر رد

الألعاب الصينية لمدة 20 عاما: مع ماء الحمام، المكرونة سريعة التحضير سيرا على الأقدام إلى المنافسة، وتدعي على لقب البطولة ثلاثة أجيال ترحيل

أنا لا أعرف كيف لاتخاذ سترة؟ فقط التنانير أربعة، والتفسير المألوف الخريف والشتاء الرياح كسول

لوه جينهاي: التشفير المال "غابة الظلام"

هذه 3 الرداء الأحمر، الذي كان لا وجه الصغيرة التي يمكن أن تساعدك على اتخاذ زمام المبادرة في العام الجديد فورتشن

Kechuang لوحة لفتح الباب، "الترحيب"، عددا من قسم المبيعات وساطة العمل الإضافي المستثمرين الجبهة

رئيس هينا تشن: سوف أكثر وأكثر صعوبة التمويل، وعمليات الدمج والاستحواذ ارتفاعا حادا في العام المقبل