
PoC जो Hyperledger Fabric ब्लॉकचेन में लेनदेन समय हेरफेर (CVE-2024-45244) की समस्या को कवर करता है।
HLF_TxTime_spoofing - एक PoC जो हाइपरलेजर फैब्रिक ब्लॉकचेन में लेनदेन समय में हेरफेर (GetTxTimestamp() या GetHistoryForKey() का उपयोग करके) की समस्या को कवर करता है। v 2.5.5 और v3.0.0-beta पर परीक्षण किया गया।
इस परियोजना में कई भाग शामिल हैं:
व्यावसायिक तर्क के संचालन को समझने के लिए अतिरिक्त फ़ंक्शन: CalcDividents() - दिए गए दिनों की संख्या और प्रारंभिक जमा राशि के लिए संचित लाभांश लौटाता है subtractTimestamp() - वर्तमान समय और प्रारंभिक जमा के समय के बीच का अंतर लौटाता है
जमा राशि के साथ जमा जोड़ने के लिए Stake_insecure() को कॉल करें। यह सुनिश्चित करने के लिए CheckDividents_insecure() को कॉल करें कि जमा राशि नहीं बदली है। क्लाइंट पर स्थानीय समय बदलें और फिर से CheckDividents_insecure() को कॉल करें।
वित्तीय हमला: समय को 1 वर्ष आगे बढ़ाने से आपको 20% वार्षिक ब्याज मिल सकता है।
सफल वित्तीय हमला
उसी तरह हम सुनिश्चित करते हैं कि GetHistoryForKey() में लेनदेन समय में हेरफेर किया जा सकता है।
चेनकोड के इस वैरिएंट में हम लेनदेन समय की जांच NTP (Network Time Protocol) सर्वर से प्राप्त समय के विरुद्ध करते हैं (ntp क्लाइंट पैकेज का उपयोग करके)। वितरण के लिए प्रत्येक चेनकोड का अपना NTP-सर्वर पता होता है (यानी विभिन्न चेनकोड पैकेज)। समय विचलन की स्थिति में एक त्रुटि प्रदर्शित होगी: "wrong time"। ध्यान दें कि NTP ट्रैफ़िक डेटा को स्पूफ किया जा सकता है (डेटा प्लेनटेक्स्ट में प्रसारित होता है)।
असफल वित्तीय हमला
चेनकोड के इस वैरिएंट में हम लेनदेन समय की जांच NTS (Network Time Security) सर्वर से प्राप्त समय के विरुद्ध करते हैं (nts क्लाइंट पैकेज का उपयोग करके)। वितरण के लिए प्रत्येक चेनकोड का अपना NTS-सर्वर पता होता है (यानी विभिन्न चेनकोड पैकेज)। समय विचलन की स्थिति में एक त्रुटि प्रदर्शित होगी: "wrong time"।
असफल वित्तीय हमला
चेनकोड के इस वैरिएंट में हम लेनदेन समय की जांच लोकलटाइम समय (यानी पीयर-नोड में समय) के विरुद्ध करते हैं। समय विचलन की स्थिति में एक त्रुटि प्रदर्शित होगी: "wrong time"। ध्यान दें कि सभी पीयर नोड्स पर सही समय आवश्यक है।
असफल वित्तीय हमला
hlf-time-oracle हाइपरलेजर फैब्रिक ब्लॉकचेन के लिए एक चेनकोड है जो अन्य चेनकोड्स को सटीक समय प्रदान करता है। hlf-time-oracle ntp पैकेज और nts पैकेज पर आधारित है। इस प्रकार ब्लॉकचेन क्लाइंट द्वारा संभावित लेनदेन समय हेरफेर से जुड़ी सुरक्षा समस्या का समाधान होता है। चेनकोड GetTimeNtp() और GetTimeNts() फ़ंक्शन प्रदान करता है। इन फ़ंक्शनों को कॉल करने से NTP (Network Time Protocol) और NTS (Network Time Security) सर्वरों पर कॉल बनती है। इनमें से किसी भी सर्वर से प्राप्त समय का उपयोग क्लाइंट पक्ष पर परिभाषित लेनदेन समय की शुद्धता को सत्यापित करने के लिए किया जा सकता है। ब्लॉकचेन के लिए चेनकोड डेवलपर्स NTP और NTS सर्वरों के साथ इंटरैक्ट करने के लिए स्वतंत्र रूप से कोड लिखने के बजाय hlf-time-oracle का उपयोग कर सकते हैं। hlf-time-oracle अपने संचालन के दौरान ब्लॉकचेन में कोई डेटा सहेजता नहीं है।