استخدام أحرف Unicode مماثلة لتجاوز المصادقة

GitHub جيثب: تحول عرضة للهجوم الذي يسمح لك بالاستيلاء على الوصول إلى الحساب من خلال التلاعب بأحرف Unicode في البريد الإلكتروني. تكمن المشكلة في أن بعض أحرف Unicode، عند استخدام وظائف التحويل للأحرف الصغيرة أو الكبيرة، تتم ترجمتها إلى أحرف عادية متشابهة في الأسلوب (عندما تتم ترجمة عدة أحرف مختلفة إلى حرف واحد - على سبيل المثال، الحرف التركي "ı" و"i" " عند تحويلها إلى أحرف كبيرة يتم تحويلها إلى "I").

قبل التحقق من معلمات تسجيل الدخول في بعض الخدمات والتطبيقات، يتم أولاً تحويل البيانات المقدمة من المستخدم إلى أحرف كبيرة أو صغيرة ثم يتم فحصها في قاعدة البيانات. إذا كانت الخدمة تسمح باستخدام أحرف Unicode في تسجيل الدخول أو البريد الإلكتروني، فيمكن للمهاجم استخدام أحرف Unicode مماثلة لتنفيذ هجوم يعالج التصادمات في Unicode Case Mapping Collisions.

'ß'.toUpperCase() == 'ss'.toUpperCase() // 0x0131
'K'.toLowerCase() == 'K'.toLowerCase() // 0x212A
'John@Gıthub.com'.toUpperCase() == '[البريد الإلكتروني محمي]'.إلى الحالة العليا()

المهاجم على جيثب يمكن من خلال نموذج استعادة كلمة المرور المنسية، ابدأ بإرسال رمز الاسترداد إلى بريد إلكتروني آخر من خلال الإشارة في النموذج إلى عنوان يتضمن حرف Unicode الذي يسبب تصادمًا (على سبيل المثال، بدلاً من [البريد الإلكتروني محمي] تم تحديد البريد الإلكتروني مı[البريد الإلكتروني محمي]). اجتاز العنوان الاختبار لأنه تم تحويله إلى أحرف كبيرة ومطابقته للعنوان الأصلي ([البريد الإلكتروني محمي] )، ولكن عند إرسال الرسالة تم استبدالها كما هي وتم إرسال رمز الاسترداد إلى عنوان وهمي (مı[البريد الإلكتروني محمي]).

بعض символовمما تسبب في حدوث تصادمات عند تحويل السجل:

ß 0x00DF SS
0x0131 أنا
0x017F س
- 0xFB00 FF
فاي 0xFB01 FI
uld 0xfb02 fl
eac 0xfb03 FFI
ffl 0xFB04 FFL
ſt 0xFB05 ST
st 0xFB06 ST
ك 0x212A ك

المصدر: opennet.ru

إضافة تعليق