
ब्लॉकचेन हाइपरलेज्डर फैब्रिक का चेनकोड अन्य चेनकोडों को सटीक समय प्रदान करता है। इस प्रकार यह लेन-देन समय हेरफेर (CVE-2024-45244) से जुड़ी सुरक्षा समस्या को हल करता है।
hlf-time-oracle ब्लॉकचेन हाइपरलेजर फैब्रिक के लिए एक चेनकोड है जो अन्य चेनकोड्स को सटीक समय प्रदान करता है। hlf-time-oracle ntp पैकेज और nts पैकेज पर आधारित है। इस प्रकार यह ब्लॉकचेन क्लाइंट (CVE-2024-45244) द्वारा संभावित लेन-देन समय हेरफेर से जुड़ी सुरक्षा समस्या का समाधान करता है। चेनकोड GetTimeNtp() और GetTimeNts() फ़ंक्शन प्रदान करता है। इन फ़ंक्शनों को कॉल करने से NTP (नेटवर्क टाइम प्रोटोकॉल) और NTS (नेटवर्क टाइम सिक्योरिटी) सर्वरों पर कॉल किया जाता है। इनमें से किसी भी सर्वर से प्राप्त समय का उपयोग क्लाइंट पक्ष पर परिभाषित लेन-देन समय की सत्यता की पुष्टि करने के लिए किया जा सकता है। ब्लॉकचेन के लिए चेनकोड डेवलपर्स NTP और NTS सर्वरों के साथ इंटरैक्ट करने के लिए स्वतंत्र रूप से कोड लिखने के बजाय hlf-time-oracle का उपयोग कर सकते हैं। hlf-time-oracle अपने संचालन के दौरान ब्लॉकचेन में कोई डेटा सहेजता नहीं है।
hlf-time-oracle हाइपरलेजर फैब्रिक संस्करण 2.4.x के लिए फ़ोल्डर hlf_2.4 में है। hlf-time-oracle हाइपरलेजर फैब्रिक संस्करण 2.5.x के लिए फ़ोल्डर hlf_2.5 में है।
केंद्रीकरण की समस्या का समाधान
मैन-इन-द-मिडल हमले का प्रतिरोध
यदि आप एकल समय सर्वर पर निर्भर नहीं रहना चाहते हैं, तो आप कई समय ओरेकल का उपयोग कर सकते हैं।
ओरेकल
NTS, NTP का एक उन्नत संस्करण है (देखें RFC 8915)। इसमें 2 कनेक्शन हैं: TLS के लिए TCP और NTP के लिए UDP। NTP कनेक्शन के लिए पोर्ट NTS सर्वर द्वारा निर्धारित किया जाता है। यह मानक 123/UDP से भिन्न हो सकता है। फ़ायरवॉल कॉन्फ़िगर करते समय इस बात का ध्यान रखें।
सही TLS कनेक्शन स्थापित करने के लिए यह आवश्यक है कि क्लाइंट (अर्थात वह सिस्टम जिस पर hlf-time-oracle चल रहा है) के पास अपेक्षाकृत सही सिस्टम समय हो (NTS-सर्वर प्रमाणपत्र वैधता अवधि के भीतर आता हो)। अन्यथा कनेक्शन स्थापित नहीं होगा।
GetTimeNtp() के बजाय GetTimeNts() का उपयोग करने की अनुशंसा की जाती है। NTP के विपरीत, NTS का उपयोग मैन-इन-द-मिडल हमले के प्रति प्रतिरोधी है। खुले डेटा भाग के अनधिकृत स्पूफिंग की स्थिति में, निम्नलिखित त्रुटि लॉग होती है: authentication failed on client। NTS सर्वर प्रमाणपत्र को स्पूफ करने के प्रयास की स्थिति में, निम्नलिखित त्रुटि लॉग होती है: key exchange failure: tls: failed to verify certificate: x509: certificate signed by unknown authority।
मॉडल
hlf-time-oracle डॉकर (डॉकर नेटवर्क 172.18.0.0/24) में चल रहा है। डॉकर होस्ट (Host_1) पर netsed (पोर्ट 4000/UDP) और mitmproxy (पोर्ट 8080/TCP) चल रहे हैं। hlf-time-oracle से उन तक ट्रैफिक iptables के माध्यम से पहुंचेगा। दूसरा होस्ट (Host_2) Oracle के GetTimeNtp() और GetTimeNts() फ़ंक्शनों तक पहुंचता है (peer chaincode query कॉल के माध्यम से)। इन फ़ंक्शनों को कॉल करने से Oracle क्रमशः NTP सर्वर और NTS सर्वर को कॉल करता है।
netsed पर ट्रैफिक रीडायरेक्ट करने के लिए iptables नियम:
iptables -t nat -A PREROUTING -s 172.18.0.0/24 -d 213.234.203.30/32 -p udp -m udp --dport 123 -m udp -j REDIRECT --to-ports 4000
नियम के साथ netsed चलाएं।
netsed में %ea%33 को %eF%33 से बदलने का नियम बनाएं
सफल हमले का परिणाम।
netsed पर ट्रैफिक रीडायरेक्ट करने के लिए iptables नियम (NTS सर्वर ntp1.glypnod.com का IP पता 104.131.155.175 है):
iptables -t nat -A PREROUTING -s 172.18.0.0/24 -d 104.131.155.175/32 -p udp -m udp --dport 8123 -m udp -j REDIRECT --to-ports 4000
नियम के साथ netsed चलाएं।
netsed में %ea%33 को %eF%33 से बदलने का नियम बनाएं
असफल हमले का परिणाम।
डॉकर लॉग देखें:
डॉकर लॉग
mitmproxy पर ट्रैफिक रीडायरेक्ट करने के लिए iptables नियम (NTS सर्वर ntp1.glypnod.com का IP पता 104.131.155.175 है):
iptables -t nat -A PREROUTING -p tcp -s 172.18.0.0/24 --dport 4460 -m tcp -d 104.131.155.175 -j REDIRECT --to 8080
mitmproxy लॉग देखें:
mitmproxy लॉग
डॉकर लॉग देखें:
डॉकर लॉग
MIT