#CriticalVulnerability 🚨 انتباهًا لمطوّري التطبيقات
$BTC : ثغرة خطيرة في مكتبة “bitcoinjs-lib”
جرى إصلاح خطأين خطيرين في مكتبة `bitcoinjs-lib` الشائعة. قد تتسبب هذه الثغرات في أن تُظهر التطبيقات رسوم تعدين أقل بكثير من الحقيقة، عند التعامل مع معاملات PSBT (معاملات بيتكوين الموقّعة جزئيًا) صالحة وموقّعة بالكامل.
ما المشكلة؟
في بيتكوين، الرسوم هي الفرق بين مجموع المدخلات ومجموع المخرجات. أدّى خطآن منفصلان في المنطق إلى أن تُبلغ المكتبة عن رسوم ضئيلة (مثل 200 أو 1,000 ساتوشي)، في حين قد يصل المبلغ الفعلي المخصوم من المحفظة والمدفوع للمُعدّنين إلى ما يقارب 1 BTC (900 مليون ساتوشي).
1. تعارض قيم المدخلات: استخدمت عملية التوقيع البيانات الكاملة للمعاملة السابقة، بينما اعتمدت وحدة احتساب الرسوم على سجل متعارض ذي قيمة أقل. ظلّ التوقيع صالحًا، لكن احتساب الرسوم كان غير صحيح.
2. غياب سجلات قيم المدخلات: بالنسبة إلى المدخلات التي جرى إنهاؤها من دون تحديد المبلغ، تعاملت المكتبة مع القيمة على أنها «0». وقد سمح ذلك بإخفاء رسوم فعلية ضخمة ضمن المعاملات المستوردة.
ما الإصدارات المتأثرة؟ سلسلة v5: أُصلحت المشكلة في
➡️ 5.2.2 (الإصدارات المعرّضة للخطر: 5.1.0 – 5.2.1)
➡️ سلسلة v6: أُصلحت المشكلة في 6.1.9 (الإصدارات المعرّضة للخطر: 6.0.0 – 6.1.8)
➡️ سلسلة v7: أُصلحت المشكلة في 7.0.4 (الإصدارات المعرّضة للخطر: 7.0.0-rc.0 – 7.0.3)
ما الذي ينبغي عليك فعله؟
➡️ حدّث إلى الإصدارات التي تتضمن الإصلاح (5.2.2، 6.1.9، 7.0.4).
➡️ إذا لم يكن التحديث ممكنًا حاليًا، فنفّذ تحققًا مستقلًا من قيم المدخلات، وارفض أي إدخالات غير متسقة قبل التوقيع أو احتساب الرسوم.
يعتمد أمان تطبيقك على ما إذا كنت تثق بالمكتبات ثقة عمياء، أم تتحقق من كل ساتوشي على حدة. 🛡️