تصدیق کو نظرانداز کرنے کے لیے ملتے جلتے یونیکوڈ حروف کا استعمال

GitHub کے نکلا ایک حملے کے لیے حساس ہے جو آپ کو ای میل میں یونیکوڈ حروف کی ہیرا پھیری کے ذریعے اکاؤنٹ تک رسائی حاصل کرنے کی اجازت دیتا ہے۔ مسئلہ یہ ہے کہ کچھ یونیکوڈ حروف، جب لوئر کیس یا اپر کیس کنورژن فنکشنز کا استعمال کرتے ہوئے، باقاعدہ حروف میں ترجمہ کیے جاتے ہیں جو کہ انداز میں ملتے جلتے ہیں (جب کئی مختلف حروف کو ایک کریکٹر میں ترجمہ کیا جاتا ہے - مثال کے طور پر، ترکی کا حرف "ı" اور "i جب اوپری کیس میں تبدیل کیا جاتا ہے تو "I" میں تبدیل ہوجاتا ہے)۔

کچھ سروسز اور ایپلی کیشنز میں لاگ ان پیرامیٹرز کو چیک کرنے سے پہلے، صارف کے فراہم کردہ ڈیٹا کو پہلے اوپری یا لوئر کیس میں تبدیل کیا جاتا ہے اور پھر ڈیٹا بیس میں چیک کیا جاتا ہے۔ اگر کوئی سروس لاگ ان یا ای میل میں یونیکوڈ حروف کے استعمال کی اجازت دیتی ہے، تو حملہ آور ایسے ہی یونی کوڈ حروف کا استعمال کرتے ہوئے حملہ کر سکتا ہے جو یونیکوڈ کیس میپنگ تصادم میں تصادم کو جوڑتا ہے۔

'ß'.toUpperCase() == 'ss'.toUpperCase() // 0x0131
'K'.toLowerCase() == 'K'.toLowerCase() // 0x212A
'John@Gıthub.com'.toUpperCase() =='[ای میل محفوظ]'.toUpperCase()

GitHub پر حملہ آور کر سکتے ہیں بھولے ہوئے پاس ورڈ کی بازیابی کے لیے فارم کے ذریعے، فارم میں ایک ایسے ایڈریس کی نشاندہی کرکے کسی دوسرے ای میل پر ریکوری کوڈ بھیجنا شروع کریں جس میں ایک یونیکوڈ کیریکٹر شامل ہو جو تصادم کا سبب بنتا ہے (مثال کے طور پر، اس کے بجائے [ای میل محفوظ] ای میل m کی وضاحت کی گئی تھی۔ı[ای میل محفوظ])۔ ایڈریس نے امتحان پاس کیا کیونکہ اسے بڑے حروف میں تبدیل کیا گیا تھا اور اصل پتے سے مماثل تھا ([ای میل محفوظ] )، لیکن خط بھیجتے وقت اس کی جگہ لے لی گئی تھی اور ریکوری کوڈ جعلی ایڈریس پر بھیجا گیا تھا۔ı[ای میل محفوظ]).

میں سے کچھ کرداررجسٹر کو تبدیل کرتے وقت تصادم کا سبب بنتا ہے:

ß 0x00DF SS
0x0131 I
ſ 0x017F S
0xFB00 FF
FI 0xFB01 FI
FL 0xFB02 FL
0xFB03 FFI
0xFB04 FFL
FL 0xFB05 ST
0xFB06 ST
K 0x212A k

ماخذ: opennet.ru

نیا تبصرہ شامل کریں