
إثبات مفهوم (PoC) يغطي مشكلة التلاعب بتوقيت المعاملات (CVE-2024-45244) في سلسلة الكتل Hyperledger Fabric.
HLF_TxTime_spoofing - إثبات مفهوم يغطي مشكلة التلاعب بوقت المعاملة (باستخدام GetTxTimestamp() أو GetHistoryForKey()) في سلسلة بلوكشين Hyperledger Fabric. تم اختباره على الإصدار v 2.5.5 و v3.0.0-beta
يتكون المشروع من عدة أجزاء:
وظائف إضافية لفهم تشغيل منطق الأعمال: CalcDividents() - تُرجع الأرباح المتراكمة لعدد معين من الأيام ومبلغ الإيداع الأولي subtractTimestamp() - تُرجع الفرق بين الوقت الحالي ووقت الإيداع الأولي
اتصل بـ Stake_insecure() لإضافة إيداع بمبلغ الإيداع الأولي. اتصل بـ CheckDividents_insecure() للتأكد من أن مبلغ الإيداع لم يتغير. غيّر الوقت المحلي على العميل واتصل بـ CheckDividents_insecure() مرة أخرى.
الهجوم المالي: تحريك الوقت سنة واحدة للأمام سمح لك بالحصول على فائدة سنوية بنسبة 20%.
هجوم مالي ناجح
بالطريقة نفسها نتأكد من أن وقت المعاملة يمكن التلاعب به في GetHistoryForKey().
في هذا المتغير من chaincode نتحقق من وقت المعاملة مقابل الوقت المستلم من خادم NTP (بروتوكول وقت الشبكة) (). كل chaincode له عنوان خادم NTP خاص به (أي ) للتوزيع. في حالة انحراف الوقت، سيتم عرض خطأ: "wrong time". لاحظ أن بيانات حركة مرور NTP يمكن التلاعب بها (يتم نقل البيانات بنص عادي).
هجوم مالي غير ناجح
في هذا المتغير من chaincode نتحقق من وقت المعاملة مقابل الوقت المستلم من خادم NTS (أمان وقت الشبكة) (باستخدام حزمة عميل nts). كل chaincode له عنوان خادم NTS خاص به (أي حزم chaincode مختلفة) للتوزيع. في حالة انحراف الوقت، سيتم عرض خطأ: "wrong time".
هجوم مالي غير ناجح
في هذا المتغير من chaincode نتحقق من وقت المعاملة مقابل الوقت المحلي (أي الوقت في عقدة النظير). في حالة انحراف الوقت، سيتم عرض خطأ: "wrong time". لاحظ أن التوقيت الصحيح مطلوب على جميع عقد النظير.
هجوم مالي غير ناجح
hlf-time-oracle هو chaincode لسلسلة بلوكشين Hyperledger Fabric يوفر الوقت الدقيق لـ chaincodes الأخرى. يعتمد hlf-time-oracle على ntp pakage pakage و nts pakage. وبالتالي يحل مشكلة الأمان المرتبطة بالتلاعب المحتمل بوقت المعاملة من قبل عميل البلوكشين. يوفر chaincode وظائف GetTimeNtp() و GetTimeNts(). يؤدي استدعاء هذه الوظائف إلى إنشاء استدعاء لخوادم NTP (بروتوكول وقت الشبكة) و NTS (أمان وقت الشبكة). يمكن استخدام الوقت المستلم من أي من هذه الخوادم للتحقق من صحة وقت المعرفة على جانب العميل. يمكن لمطوري chaincodes للبلوكشين استخدام hlf-time-oracle بدلاً من كتابة كود مستقل للتفاعل مع خوادم NTP و NTS. لا يحفظ hlf-time-oracle أي بيانات في البلوكشين أثناء تشغيله.