على العملة بيتكوين أي ثغرات قراصنة

هذه المسألة هي موضوع بيتكوين الضعف الضعف CVE-2010-5141، والضعف قد تسمح للمهاجمين لسرقة بيتكوين أحد، ضرر خطير للغاية. لحسن الحظ لم يتم الإعلان عن الضعف استخدام، وإصلاح بسرعة. الضعف وبيتكوين محرك البرمجة ذات الصلة، له قيمة مرجعية لسلسلة المطور العامة؛ سلسلة من الجمهور على السوق الحالية، قد بنيت في معظم محرك البرمجة أو الأجهزة الظاهرية، من أجل بناء DAPP البيئة، ولكن أيضا في المنطقة واحد سلاسل كتلة الاتجاه.

أولا، ما بيتكوين بين نموذج UTXO؟

نصائح: سوف في التعليمات البرمجية المتكررة عرضة تنطوي على بعض UTXO المعرفة والمفاهيم ذات الصلة، وبالتالي فإن التحليل النظري لضرورة التعرض لفهم نقاط المعرفة من قبل، كنت تعرف يمكنك تخطي.

، نموذج الحساب ونموذج UTXO

الحديث دعونا حول نموذج حساب مشترك قبل النظر نموذج UTXO، ما هو النموذج حساب؟ ويمكن فهم بنية حساب بيانات النموذج بوصفه مجرد "حساب = > التوازن "، كل يناظر رصيد الحساب على سبيل المثال: إذا كان حساب A إلى حساب B 200 نقل، لاستكمال عملية نقل في الحساب A-200 نموذج ويتطلب سوى B + 200؛ برامج حاليا الأكثر استخداما نعم. نموذج حساب، مثل النظام المصرفي، وميدان إيثرنت وهلم جرا.

تم استخدام بيتكوين المتقدمة UTXO نموذجها الخاص، UTXO ليس "= حساب > التوازن "بنية بيانات من هذا القبيل، ثم كيفية إجراء تحويلات؟

، وكيفية نقل الاعتمادات قليلا

في نقل ألف أعلاه إلى B، على سبيل المثال، يطلب من عمليات نقل لإكمال في UTXO:

1. حدد توازن مصدر 200 تحت الحساب، الذي يهدف إلى إيجاد صفقة 200 مجموعة

2. المعاملة المدخلات السينية لعملية تحويل ص 200 هو الإخراج إلى B، x و y الموافق x و y ومبلغ الحوالة يجب أن تكون على قدم المساواة

يتم وضع علامة 3. س المعاملة كما قضى، وتتميز الصفقة ص كما لم تنفق

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

ولكن عندما يكون لديهم لنقل جزء من كيفية القيام بذلك إلا للآخرين؟ الجواب هو الجزء الوحيد من نقلها إلى الآخرين، ومن ثم نقلها إلى الجزء المتبقي من نفسك إلى رقم آخر.

، إشارة الرسومات اثنين من شبكة:

نموذج حساب

نموذج UTXO

بين المادة لماذا يستخدم بيتكوين UTXO النموذج ليس هذه النقطة، يمكننا أن نفهم مبدأ UTXO.

وثانيا، فإن محرك البرمجة بيتكوين

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

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

كومة من المفهوم جيدا، وتقدم قائمة الانتظار من المدخنة على العكس من ذلك، هو FIFO، والصحافة في عنصر (دفع) مكدس بعد العنصر هو البوب الأول (البوب).

إرسال المبلغ في الإصدارات بيتكوين نقل القياسية السابقة (الدفع إلى pubkey) المعاملات تتطلب النصي توقيع (scriptSig) والمفتاح العمومي التحقق النصي (scriptPubKey)، وعملية محددة كما يلي:

ملء الأولى في البرنامج النصي (سيناريو) التي يتعين القيام بها، ثم توقيع (سيج) والمفتاح العمومي (pubKey) يتم الضغط على المكدس، ومن ثم سوف تذهب إلى التحقق من صحة التوقيع شفرة تشغيل OP_CHECKSIG، إذا كان سيتم دفع التحقق إلى المكدس التي كتبها صحيح، وإلا فإنه سوف دفعت كاذبة إلى المكدس.

ثلاثة، CVE-2010-5141 الضعف تحليل

تعلم المزيد من المعرفة بعد يمكنك البدء في تحليل الضعف CVE-2010-5141. أنا تحميل النسخة عرضة 0.3.3، تحميل لإطلاق سراح تجد في مستودع بيتكوين جيثب.

script.cpp VerifySignature كود ظيفة المقتطف:

وتنفيذ كل عملية الاتصال وظيفة VerifySignature، والذي يستخدم لتنفيذ البرنامج النصي والتحقق من التوقيع وبعد ذلك للاحتفال سواء أنفق المعاملة.

TxFrom الأولى المعلمة هي صفقة، يتم معالجة صفقة txTo، اذا كان النموذج UTXO فهم فوق فصول شرح من قبل، ليس هناك صعوبة في فهم. مفتاح لرؤية 1125 خطوط للقانون، استدعاء الدالة EvalScript، المعلمة الأولى هي txin.scriptSig (التي تحتوي على معلومات توقيع) + كود عملية منفصلة OP_CODESEPARATOR + txout.scriptPunKey (التي تحتوي على المعلومات مفتاح العامة والتعليم OP_CHECKSIG)، والذي هو وظيفة لتنفيذ البرامج النصية EvalScript ، المعلمة الأخيرة قد لا مؤقتا السيطرة، طالما ترجع الدالة الحقيقية فإن هذا EvalScript التحقق من صحة التوقيع على اعتمادها. كيف يمكن ترجع الدالة EvalScript صحيح؟

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

بعد ذلك ننظر في شفرة تشغيل OP_CHECKSIG الرئيسي

(ملاحظة: نظرا لعدد كبير جدا من أكواد العمليات، ورقة شفرة تشغيل OP_CHECKSIG)

رمز أعلاه ليس من الصعب أن نفهم، والدعوة وظيفة Checksig للتحقق من التوقيع وبعد ذلك عاد إلى متغير FSuccess في كومة غير صحيح إذا قمت بضغط vchTrue (غير صفر)، وإلا الضغط على vchFalse (0) في كومة، وإذا كان شفرة التشغيل ليس OP_CHECKSIGVERIFY OP_CHECKSIG vchTrue ثم ترك كومة ويبدأ شفرة تشغيل التنفيذ في وقت لاحق.

وفقا لOP_CHECKSIG المنطق الطبيعي للتحقق من توقيع غير الناجحة، ثم سيكون هناك vchFalse إلى إقامة طيبة في الجزء العلوي من كومة، على الرغم من كومة ليس فارغا، ولكن أعلى من قيمة المكدس هو 0، أو عوائد كاذبة.

أديت العودة إلى القانون السابق، ومخطوطات EvalScript وظيفة تتكون أساسا من المتغيرات التالية:

1. txin.scriptSig

2. OP_CODESEPARATOR

3. txout.scriptPubKey

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

أول السيطرة متغير، ويتم تنفيذه كبرنامج نصي، لذلك هذا المتغير لا يمكن مجرد معلومات التوقيع، ولكن أيضا هو شفرة التشغيل، والتي من السهل التعامل معها، والحاجة التالية مرجع OP_PUSHDATA4 شفرة تشغيل السحرية، ونحن نلقي نظرة على بيتكوين 0.30.3 هو كيفية التعامل مع هذه شفرة التشغيل هو:

أولا الحصول على أكواد العمليات. إذا كانت قيمة رمز العملية أقل من أو يساوي OP_PUSHDATA4 vchPushValue وضع القيمة الكاملة إلى المكدس، ومن ثم متابعة وظيفة GetOp

قراءة من المصدر، يتم تعريف الأوامر OP_PUSHDATA4 كما وجدت 78، بحيث عندما واجه ظيفة OP_PUSHDATA4، فإن المؤشر يتحرك إلى آخر 78 + 4 = 82، حيث يتم الضغط بيانات 78 بت إلى المكدس، طالما أن حقن txin.scriptSig رمز عملية OP_PUSHDATA4، ومفاتيح العامة الوراء وتعليمات OP_CHECKSIG يكون "أكل"، كما كومة المعلمة، وعندما المؤشر إلى النهاية، والقرار النهائي:

1. مكدس فارغ؟ لا

2. العنصر أعلى صفرا؟ لا

وبالتالي تلبية عوائد حالة EvalScript وظيفة صحيح، يعود بعد ذلك وظيفة VerifySignature صحيح أيضا، حيث يتم تجاوز التحقق من صحة التوقيع، وأن الآخرين سوف تكون قادرة على تعسفا بيتكوين المستهلك.

أربعة، CVE-2010-5141 الضعف برنامج الإصلاح

أنا تحميل نسخة 0.3.8 bitcoins، وتبحث مباشرة في الأقسام الحرجة من التعليمات البرمجية

برنامج إعادة التأهيل واضح جدا، وتنفيذ scriptSig scriptPubkey على حدة، بغض النظر عن ما يدور في داخل سوف scriptSig لن يؤثر على تنفيذ scriptPubkey إلى الخلف.

كتب في الماضي:

لأن تحليل هشاشة بيتكوين من DVP هو الموضوع الأول من الضعف بدأ التسلسل من المواد الحالية من عام 2010، وتحليل هشاشة الأوضاع الحالية بعد صعوبات كبيرة:

1. الضعف المعلومات ذات الصلة صغيرة جدا، أكثر من الضعف CVE الأرقام وإلا مقدمة موجزة، وليس الكثير من المعلومات وبأي حال من الأحوال.

2. بيئة صعبة لبناء وصعبة لتجميع، وبناء سلسلة خاصة (في وقت مبكر بيتكوين حتى مفهوم سلسلة الخاص) وهلم جرا، بيتكوين احتياجات مترجم مصدر يعتمد في وقت مبكر الآن العديد منهم لم يعد الحفاظ على وهبوطا.

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

الخامسة، وصلات مرجعية

https://bitcoin.stackexchange.com/questions/37403/which-release-fixed-cve-2010-5141-attacker-can-spend-any-coin

https://en.bitcoin.it/wiki/Script

مهاجمة سلسلة كتلة، واندلاع كبير من سيناريو 2019

هرع لجمع ما يصل إلى 6.5 مليار سهم! 130 مليار كوبونات العملاقة الأخبار كبير: H-حصة المدرجة بعد جلسة الاستماع

حيازات غير قانونية قبل "انفجار مستودع"! الشركة العامة لبيع واحدة شيء يوان يحدث: توا يعاقب مكتب تنظيم الاوراق المالية

CCTD أسبوعي | سوق الانتظار أكثر من الشركات الكبرى أبريل السعر الشهري لعلاقة طويلة الأمد

ارتفع التنفس في 3200! أكثر من مائة سهم الحد اليومي، تدفقات رأس المال الأجنبي 3.0 مليار، وهوانغ يان مينغ النار: الأسهم وليس مباشرة على المقاومة 3500!

CCTD | يستمر الاسبوع المقبل ميناء سوق الفحم الحراري لتبقى مستقرة صدمة الاتجاه

"لدينا الأحداث المنزل بدأت منذ فترة طويلة" لرؤية "تشغيله" رأينا Zotye T700 مختلفة

أحدث أداء السهم حتى عن التعرض! زاد هذا الربح 54 هامش الربح وصافي حتى 3 سنوات

CCTD | المتوقع على المدى القصير أسعار الفحم مستقر وانخفاض قليل

CCTD | تسعى إلى تعزيز مكتب الإشراف على منجم للفحم انفجار الصخور المشورة الوقاية

بويك الليل، VELITE 6 / Enspire لاول مرة، والتي تبين اتجاه تطوير مستقبل العلامة التجارية

ساحة إيثرنت 2.0: طريق هادئة المؤدية من القسطنطينية