UNKNOWNGHSA-vjh7-7g9h-fjfh

एक गलत तरीके से बने इनपुट (जैसे कि एक स्ट्रिंग) पर हस्ताक्षर करने पर ECDSA में Elliptic की निजी कुंजी निष्कर्षण

प्लेटफ़ॉर्म

nodejs

कॉम्पोनेन्ट

elliptic

ठीक किया गया

6.6.1

### सारांश एक गलत तरीके से बने इनपुट (जैसे कि एक स्ट्रिंग या एक संख्या) पर हस्ताक्षर करने पर ECDSA हस्ताक्षर से निजी कुंजी निकाली जा सकती है, जो उदाहरण के लिए JSON नेटवर्क इनपुट से आ सकती है। ध्यान दें कि `elliptic` डिज़ाइन द्वारा संभावित इनपुट प्रकारों में से एक के रूप में हेक्स स्ट्रिंग्स को स्वीकार करता है। ### विवरण इस कोड में: https://github.com/indutny/elliptic/blob/3e46a48fdd2ef2f89593e5e058d85530578c9761/lib/elliptic/ec/index.js#L100-L107 `msg` रूपांतरण के बाद एक BN (BN) इंस्टेंस है, लेकिन `nonce` एक सरणी है, और विभिन्न BN (BN) इंस्टेंस रूपांतरण के बाद समतुल्य सरणियाँ उत्पन्न कर सकते हैं। मतलब यह है कि हस्ताक्षर प्रक्रिया में उपयोग किए गए विभिन्न संदेशों के लिए एक ही `nonce` उत्पन्न किया जा सकता है, जिससे `k` का पुन: उपयोग हो सकता है, जिससे हस्ताक्षरों की एक जोड़ी से निजी कुंजी निकाली जा सकती है। ऐसा संदेश किसी भी पहले से ज्ञात संदेश/हस्ताक्षर जोड़ी के लिए बनाया जा सकता है, जिसका अर्थ है कि हमले को पूर्ण कुंजी निष्कर्षण के लिए केवल एक दुर्भावनापूर्ण संदेश पर हस्ताक्षर करने की आवश्यकता है। जबकि बिना सत्यापित हमलावर-नियंत्रित संदेशों पर हस्ताक्षर करना स्वयं समस्याग्रस्त होगा (और इसके शोषण के लिए ऐसे परिदृश्य की आवश्यकता है), फिर भी एक एकल संदेश पर हस्ताक्षर करने से निजी कुंजी लीक _नहीं होनी चाहिए_। इसके अलावा, संदेश सत्यापन में भी वही बग हो सकता है (इस रिपोर्ट के दायरे से बाहर, लेकिन po हो सकता है)

कैसे ठीक करें

कोई आधिकारिक पैच उपलब्ध नहीं है। वैकल्पिक समाधान खोजें या अपडेट की निगरानी करें।

अपनी निर्भरताओं की स्वचालित निगरानी करें

जब नई कमज़ोरियाँ आपके प्रोजेक्ट को प्रभावित करें तो अलर्ट पाएं।

मुफ़्त शुरू करें