GitHub در برابر حملهای که امکان دسترسی به حساب کاربری را از طریق دستکاری کاراکترهای یونیکد در ایمیلها فراهم میکند، آسیبپذیر است. این مشکل از این واقعیت ناشی میشود که برخی از کاراکترهای یونیکد، هنگام تبدیل به حروف کوچک یا بزرگ، به کاراکترهای معمولی با شکلهای مشابه تبدیل میشوند (این اتفاق زمانی میافتد که چندین کاراکتر مختلف به یک کاراکتر واحد تبدیل میشوند - به عنوان مثال، "ı" و "i" ترکی هنگام تبدیل به حروف بزرگ به "I" تبدیل میشوند).
قبل از اعتبارسنجی اعتبارنامههای ورود به سیستم، برخی از سرویسها و برنامهها ابتدا دادههای ارائه شده توسط کاربر را به حروف بزرگ یا کوچک تبدیل میکنند و سپس آن را با پایگاه داده بررسی میکنند. اگر سرویس اجازه استفاده از کاراکترهای یونیکد را در ورود به سیستم یا ایمیل بدهد، یک مهاجم میتواند از کاراکترهای یونیکد مشابه برای انجام حملهای استفاده کند که تداخل نگاشت حروف کوچک و بزرگ یونیکد را دستکاری میکند.
'ß'.toUpperCase() == 'ss'.toUpperCase() // 0x0131
'K'.toLowerCase() == 'K'.toLowerCase() // 0x212A
'John@Github.com'.toUpperCase() == 'John@Github.com'.toUpperCase()
مهاجم گیتهاب از طریق فرم بازیابی رمز عبور فراموش شده، با مشخص کردن آدرسی در فرم که شامل یک کاراکتر یونیکد است که باعث ایجاد تصادم میشود، ارسال کد بازیابی به ایمیل دیگری را آغاز کنید (برای مثال، به جای mike@example.org، ایمیل m مشخص شده است).ıke@example.org). آدرس از بررسی سربلند بیرون آمد زیرا به حروف بزرگ تبدیل شده بود و با آدرس اصلی (mike@example.org) مطابقت داشت، اما هنگام ارسال ایمیل، به صورت قبلی جایگزین شد و کد بازیابی به آدرس جعلی (m) ارسال شد.ıke@example.org).
بعضی از ، باعث ایجاد تصادم در هنگام تبدیل رجیستر میشود:
ß 0x00DF SS
ı 0x0131 من
ſ 0x017F S
ff 0xFB00 FF
0xFB01 FI
۰xFB02 FL
ffi 0xFB03 FFI
ffl 0xFB04 FFL
خیابان 0xFB05
خیابان 0xFB06
ک 0x212A ک
منبع: opennet.ru
