अच्छा दुख: बिजली नेटवर्क पर एक सुस्त भेद्यता जो अभी भी फिक्सिंग की आवश्यकता है
क्या होता है जब आपके लाइटनिंग नेटवर्क रूटिंग नोड को कचरा लेनदेन से खिलाया जाता है जो कभी हल नहीं होता है? संक्षेप में, यह रूटिंग नोड्स के लिए बहुत दु: ख का कारण बनता है। क्या एक बार एक चिकनी, वैश्विक भुगतान प्रणाली को एक प्रेमी स्क्रिप्ट लेखक से तुच्छ प्रयास के साथ बंद किया जा सकता है.
रूटिंग नोड्स की एक छोटी टीम में काम करते हुए, हमने सफलतापूर्वक वास्तविक फंडों के साथ हमले का परीक्षण किया और “प्रदर्शन” कियाशोक करनाद्वारा वर्णित ”हमला जोस्ट जगर. हमले को एक दु: खद हमला कहा जाता है क्योंकि यह धन की चोरी नहीं है, लेकिन इससे पीड़ित की बिजली निधि जम जाती है: एक बड़ी परेशानी। हमने पाया है कि बड़े “वंबो” चैनलों के लिए शोक एक गंभीर खतरा है, जो अपने बिटकॉइन पर उपज अर्जित करने की उम्मीद करते हैं, केवल अपने धन को कुछ समय के लिए जमे हुए हैं.
यह ज्यादातर एक दु: खद हमला है: धन की कोई हानि नहीं, लेकिन पीड़ित को एक महंगी चैनल बल के लिए भुगतान करने के लिए मजबूर किया जा सकता है। यह मेननेट लाइटनिंग पर एक ज्ञात भेद्यता है और इसे समझने और प्राथमिकता देने की आवश्यकता है, विशेष रूप से बिटकॉइन के लाइटनिंग नेटवर्क के इस शुरुआती बाजार चरण में।.
क्लार्क बुर्कहार्ट और फिलिप शेपर्ड को इस परीक्षण में भाग लेने के लिए और इस भेद्यता पर ध्यान और प्राथमिकता लाने के लिए अपने अथक परिश्रम के लिए जगर के लिए धन्यवाद। जगर ने हमारे प्रदर्शन के लिए हमलावर की भूमिका निभाई, जबकि बर्कहार्ट और शेपर्ड ने जुड़े शिकार मार्ग के नोड्स के रूप में मेरा साथ दिया.
हमला कैसे काम करता है
हमलावर एक या (कई) चैनल संतृप्त समय बंद अनुबंधों (HTLCs) के साथ संतृप्त करता है जो अंतिम भुगतान के रूप में हल नहीं होते हैं। ये एचटीएलसी की एक विशेष नस्ल हैं जिन्हें एचओडीएल चालान के रूप में जाना जाता है। इन अनसुलझे HTLCs में से केवल 483 को प्रति दिशा में एक चैनल को अभिभूत करना आवश्यक है। एक बार जो HTLC चैनल में होते हैं, उसी चैनल दिशा का उपयोग करने वाला कोई भी लेन-देन असंभव है, जिसमें इस चैनल को सहकारी रूप से बंद करना शामिल है.
सिद्धांत रूप में, एक हमलावर पीड़ित से संपर्क कर सकता है (शायद एक कीसेंड संदेश के माध्यम से या “प्याज की बूँद”) और फिरौती मांगने के लिए हमले को रोकने के लिए भुगतान किया जा सकता है। एक बार फिरौती का भुगतान करने के बाद, हमलावर हमले को समाप्त करते हुए अनसुलझे भुगतान को हटा सकता है। उस चैनल में सभी रूटिंग और भुगतान गतिविधि को रोककर हमला अनिश्चित काल तक जारी रखा जा सकता है। यह लाइटनिंग चैनल में धन जमा करता है.
दोनों दिशाओं में इनबाउंड और आउटबाउंड, दोनों दिशाओं में 483 HTLCs का उपयोग करके भुगतान के दोनों दिशाओं को रोक दिया जा सकता है.
हमले के तहत बुर्कहार्ट को मेरे संतुलित चैनल का थंडरबब दृश्य। चैनल “नॉट एक्टिव” के रूप में दिखाता है, जैसे कि बुर्कार्ड्ट ऑफ़लाइन थे, लेकिन वह नहीं था। नीले रंग की मात्रा संतों में स्थानीय संतुलन है, हरे रंग में राशि बुर्कहार्ट के स्वामित्व वाले संतों में दूरस्थ संतुलन है। स्रोत: गरजना.
क्यों एक हमलावर कुछ इस तरह करेंगे?
मन में आने वाला पहला मकसद फिरौती माँगना है। यह हमला पीड़ित के लिए दर्द का कारण बनता है और फिरौती का भुगतान पीड़ित को आकर्षक हो सकता है, यहां तक कि इस आश्वासन के बिना कि हमला बंद हो जाएगा। पीड़ित से संपर्क करना एक हमलावर के लिए जोखिम भरा हो सकता है, लेकिन फिरौती का भुगतान एकमात्र कारण नहीं हो सकता है जब कोई ऐसा करेगा.
शोक हमले शुरू करने के लिए एक माध्यमिक प्रोत्साहन रूटिंग प्रतियोगिता को बाधित करना होगा। एक प्रतियोगी के मार्ग को जाम करने से हमलावर के स्वामित्व वाले मार्ग की अधिक मांग पैदा हो सकती है.
एक बेंचमार्क के रूप में, विचार करें कि लाइटनिंग लैब्स की लूप नोड में चलनिधि की मांग है जिसके लिए वह कभी-कभी 2,500 प्रति मिलियन भुगतान (पीपीएम) (0.25 प्रतिशत) शुल्क दर का भुगतान करेगी। मेरे अनुभव में, वे आम तौर पर लगभग दो सप्ताह (5.2 प्रतिशत वार्षिक दर) पर तरलता के लायक 16 मिलियन सत्संगों को समाप्त कर देंगे, लेकिन वह प्रतियोगिता के साथ मौजूद है.
यदि कोई हमलावर कम शुल्क दरों के साथ किसी भी प्रतिस्पर्धा वाले मार्ग को अक्षम कर सकता है, तो लूप एक उच्च शुल्क दर का भुगतान करने के लिए तैयार हो सकता है (क्योंकि अब तरलता की आपूर्ति कम हो गई है)। बता दें कि लूप 3,000 पीपीएम (0.3 प्रतिशत) का भुगतान करेगा, साथ ही साथ उस तरलता का अधिक तेजी से उपयोग करेगा क्योंकि कोई अन्य चैनल काम नहीं कर रहा है। एक सप्ताह में, लूप आधे समय में उस तरलता का उपयोग कर सकता है। हमलावर इस उदाहरण में अपनी सामान्य उपज को दोगुना करके 15.6 प्रतिशत एपीआर कर देगा। हमलावर के लिए एकमात्र लागत किसी मौजूदा चैनल पर स्क्रिप्ट चलाने और कुछ अनैतिक / लाइटनिंग नेटवर्क को नुकसान पहुंचाने की मनोवैज्ञानिक लागत है। एक एकल हमलावर चैनल के साथ, एक दुर्भावनापूर्ण अभिनेता लगभग नौ चैनलों को जाम कर सकता है (देखें इस बारे में जैगर के ट्वीट).
इस हमले के अनुभव का क्या होगा?
इस हमले के शिकार व्यक्ति को वास्तव में पता नहीं होगा कि यह हमला तब तक हो रहा था जब तक कि उनके पास लंबित HTLC के लिए कुछ विशेष अलर्ट सेट नहीं थे। थंडरहब उपयोगकर्ताओं (एक अत्यधिक अनुशंसित टूल) के लिए, होम स्क्रीन लंबित HTLCs के चार्ट के साथ-साथ एक चेतावनी भी बताएगी कि चैनल केवल 483 लंबित HTLCs पकड़ सकते हैं.
स्रोत: थंडरहब
व्यवहार में, मेरा नोड जल्दी से अविश्वसनीय हो गया और थंडरहब सहित कई ऐप क्रैश का अनुभव किया, जो मुझे समस्या को सूचित करने वाला एकमात्र ऐप था। फिर, मेरे “बैलेंस ऑफ सतोशिस” टेलीग्राम बॉट के लिए धन्यवाद, मुझे एक चैनल क्लोजिंग नोटिफिकेशन मिला। हमले बल के तहत चैनल ही बंद कर दिया! वह प्रयोग का हिस्सा नहीं था। (अनैच्छिक बल पास पर अधिक तकनीकी जानकारी के लिए, अतिरिक्त बल-पास डेटा के लिए नीचे देखें।)
हमले के कारण बुर्कहार्ट (सलामीक) के साथ चैनल का उपयोग कर एक परीक्षण भुगतान विफल हो गया। यह चेतावनी बताती है कि बुर्खर्ड का नोड ऑफ़लाइन है, हालांकि यह ऑनलाइन था। स्रोत: थंडरहब.
पीड़ित एक शोक हमले को रोकने के लिए क्या कर सकता है?
एक बार हमला शुरू होने के बाद, एक शिकार अनिवार्य रूप से इसे रोकने के लिए कुछ भी नहीं कर सकता है। एक चल रहे हमले को रोकने के लिए उपलब्ध एकमात्र विकल्प चैनल पर हमला करने वाले बल को बंद करना होगा, जिसका अर्थ है कि आतंकवादी जीतते हैं.
चोट के लिए अपमान को जोड़ने के लिए, चैनल को बंद करने से चैनल ऑन-चेन ट्रांजैक्शन डेटा पर अनसुलझे भुगतानों को धक्का देगा, बल के आरंभकर्ता के लिए माध्यमिक ऑन-चेन लेनदेन को ट्रिगर करेगा। 50 sats / vbyte और 483 ऑन-चेन लेन-देन में, एक हमले के तहत एक चैनल को बंद करने के लिए (आज की कीमतों में $ 368 चैनल के करीब शुल्क) को बाध्य करने के लिए आसानी से 1 मिलियन सैट मूल्य टैग है। कई ऑन-चेन लेनदेन केवल तभी होते हैं जब आउटपुट न्यूनतम भुगतान “धूल” सीमा से ऊपर होता है। (ले देख यह उदाहरण है टेस्टनेट पर।)
एक लाइटनिंग चैनल का आरंभकर्ता समापन शुल्क का भुगतान करता है.
एक और कारण है कि आप 483 (गैर-धूल) नहीं चाहते हैं htlcs है कि 50 sat / vB पर एक संभावित बल-बंद लेनदेन इस तरह दिखता है: https://t.co/z6mAGZxvrC.
समापन शुल्क 1 मिलियन से अधिक महंगा हो रहा है.
– जोस्ट जैगर (@joostjgr) 28 सितंबर, 2020
कैसे एक दुखद हमले को रोकने के लिए
जगर अलग-थलग करने और हमलावरों से लड़ने में मदद करने के लिए एक सबूत की अवधारणा कार्यक्रम पर काम कर रहा है। वह अपने कार्यक्रम को बुला रहा है “परिपथ वियोजक.”सर्किटब्रेकर एक नेटवर्क स्तर पर काम करता है, जिसका दुर्भाग्य से मतलब है कि प्रभावी होने के लिए सभी को इसमें भाग लेना होगा.
इसके अलावा, इस मुद्दे को बेहतर समाधान खोजने के लिए समर्पित इंजीनियरों / डेवलपर्स से प्राथमिकता और ध्यान देने की आवश्यकता है। बिटकॉइन ऑप्टेक न्यूज़लेटर में प्रोटोकॉल को संशोधित करने पर कुछ अच्छी चर्चा हुई है (# 122 या # 126 जारी).
इस हमले को आज भी अंजाम दिया जा सकता है। यह एक चमत्कार है कि इसका पहले से ही दुर्भावनापूर्ण उपयोग नहीं किया गया है। आज लाइटनिंग का उपयोग करने वालों के लिए यह प्रोत्साहन का प्रतिबिंब है ताकि यह एक खुला, सार्वभौमिक भुगतान नेटवर्क बन सके। कृपया इस पोस्ट को साझा करें क्योंकि आप वास्तविक नुकसान का कारण बनने से पहले इस समस्या को ठीक करने के लिए प्रोत्साहित करने और अधिक काम करने के लिए फिट हैं.
अतिरिक्त तकनीकी जानकारी अनैच्छिक बल-बंद के बारे में
इस समय मेरे नोड से लॉगिंग कर रहे हैं एलएनडी 0.11 जो इस समय उपर्युक्त अनैच्छिक बल के करीब है:
2020/11/26 21: 24: 47.374 [ERR] HSWC: ChannelLink (657,759: 561: 0): असफल रहने के लिंक: ChannelPoint (c37bec006b18df172698a84739ca47128935e0a8666fecd1a843e49b01db207c: 0): सहकर्मी से प्राप्त त्रुटि: chan_id = 7c20db019be443a8d1ec6f66a8e035891247ca3947a8982617df186b00ec7bc3, अरे = अस्वीकार कर दिया प्रतिबद्धता: commit_height = 455, invalid_commit_sig = 3044022076fd65191eb6305b723fa6012be378413b6326e2786c38db58b4c02e1f3999d202207605ca31de8b4c5b1d9cd20dc1581dfa2383e0b4e06c8ad4f718ab5c434d8cf5, commit_tx = 02000000017c20db019be443a8d1ec6f66a8e035891247ca3947a8982617df186b00ec7bc300000000008a792e8002210d0000000000002200201031cf10a1efef261edd3d0a1a6a953b27bc25bd7150bb2b07afdc69805e02157213000000000000160014de650929042bef58b71783ae1a44834a902a8f2d542ca720, sig_hash = त्रुटि के साथ 4e0fb804c74376020e4c44a60969b9206eb0aaa9a89b76017d60f23ad5cf63e5: दूरस्थ त्रुटि
लॉग एक “अमान्य_commit_sig” दिखाते हैं जो LND में एक ज्ञात समस्या है। माना जाता है कि, यह चैनल को जोड़ने के प्रत्यक्ष परिणाम को फिर से जोड़ने और जोड़ने पर हो सकता है। लंबित HTLCs की मात्रा दुर्भाग्य से ऐसा होने की अधिक संभावना है। जैगर ने इस प्रक्रिया को चैनल जैमिंग के रूप में समझाने में मदद की -> अंतहीन भुगतान लूप (बग) -> नोड नीचे -> फिर से जोड़ना -> अमान्य प्रतिबद्ध सिग (बग) -> चैनल बल-पास.
“अंतहीन” लूप बग एक ज्ञात बग है जो तब होता है जब HTLC सीमा समाप्त हो जाती है और एक अतिरिक्त HTLC भेजा जाता है। भुगतान विफलता में समाप्त होने के बजाय, एलएनडी भुगतान को लूप में जारी रखने का प्रयास करता रहेगा। इस बग की सहायता के लिए, देखें LND मुद्दा # 4656.