प्रमाणीकरण को बायपास करने के लिए समान यूनिकोड वर्णों का उपयोग करना

GitHub बदल गया एक ऐसे हमले के प्रति संवेदनशील है जो आपको ईमेल में यूनिकोड वर्णों में हेरफेर के माध्यम से किसी खाते तक पहुंच को जब्त करने की अनुमति देता है। समस्या यह है कि कुछ यूनिकोड वर्ण, जब लोअरकेस या अपरकेस रूपांतरण फ़ंक्शंस का उपयोग करते हैं, तो उन्हें नियमित वर्णों में अनुवादित किया जाता है जो शैली में समान होते हैं (जब कई अलग-अलग वर्णों को एक वर्ण में अनुवादित किया जाता है - उदाहरण के लिए, तुर्की वर्ण "आई" और "आई "जब अपरकेस में परिवर्तित किया जाता है तो इसे "I" में बदल दिया जाता है)।

कुछ सेवाओं और अनुप्रयोगों में लॉगिन मापदंडों की जांच करने से पहले, उपयोगकर्ता द्वारा प्रदत्त डेटा को पहले ऊपरी या निचले मामले में परिवर्तित किया जाता है और फिर डेटाबेस में जांचा जाता है। यदि कोई सेवा लॉगिन या ईमेल में यूनिकोड वर्णों के उपयोग की अनुमति देती है, तो एक हमलावर हमले को अंजाम देने के लिए समान यूनिकोड वर्णों का उपयोग कर सकता है जो यूनिकोड केस मैपिंग कोलिजन में टकराव में हेरफेर करता है।

'ß'.toUpperCase() == 'ss'.toUpperCase() // 0x0131
'K'.toLowerCase() == 'K'.toLowerCase() // 0x212A
'John@Gıthub.com'.toUpperCase() == '[ईमेल संरक्षित]'.toUpperCase()

GitHub पर हमलावर सकता है भूले हुए पासवर्ड को पुनर्प्राप्त करने के लिए फॉर्म के माध्यम से, फॉर्म में एक पते को इंगित करके एक पुनर्प्राप्ति कोड को किसी अन्य ईमेल पर भेजना शुरू करें जिसमें एक यूनिकोड वर्ण शामिल है जो टकराव का कारण बनता है (उदाहरण के लिए, इसके बजाय) [ईमेल संरक्षित] ईमेल एम इंगित किया गया थाı[ईमेल संरक्षित]). पता परीक्षण में सफल रहा क्योंकि इसे अपरकेस में बदल दिया गया था और यह मूल पते से मेल खाता था ([ईमेल संरक्षित] ), लेकिन पत्र भेजते समय इसे वैसे ही प्रतिस्थापित कर दिया गया और पुनर्प्राप्ति कोड एक फर्जी पते (एम) पर भेज दिया गयाı[ईमेल संरक्षित]).

कुछ символов, रजिस्टर परिवर्तित करते समय टकराव का कारण बनता है:

ß 0x00DF एसएस
मैं 0x0131 मैं
ſ 0x017F एस
ff 0xFB00 FF
fi 0xFB01 FI
fl 0xFB02 FL
ffi 0xFB03 एफएफआई
ffl 0xFB04 FFL
ſt 0xFB05 एसटी
st 0xFB06 एसटी
के 0x212ए के

स्रोत: opennet.ru

एक टिप्पणी जोड़ें