استفاده از کاراکترهای مشابه یونیکد برای دور زدن احراز هویت

GitHub تمام شده مستعد حمله ای است که به شما امکان می دهد از طریق دستکاری کاراکترهای یونیکد در ایمیل، دسترسی به یک حساب کاربری را به دست آورید. مشکل اینجاست که برخی از کاراکترهای یونیکد، هنگام استفاده از توابع تبدیل حروف کوچک یا بزرگ، به نویسه‌های معمولی ترجمه می‌شوند که سبک مشابهی دارند (زمانی که چندین کاراکتر مختلف به یک کاراکتر ترجمه می‌شوند - برای مثال، کاراکتر ترکی "ı" و "i" " وقتی به حروف بزرگ تبدیل می شوند به "I" تبدیل می شوند).

قبل از بررسی پارامترهای ورود به سیستم در برخی از سرویس ها و برنامه ها، داده های ارائه شده توسط کاربر ابتدا به حروف بزرگ یا کوچک تبدیل شده و سپس در پایگاه داده بررسی می شود. اگر سرویسی اجازه استفاده از کاراکترهای یونیکد را در لاگین یا ایمیل بدهد، مهاجم می‌تواند از کاراکترهای یونیکد مشابه برای انجام حمله‌ای استفاده کند که برخوردها را در برخوردهای نگاشت مورد یونیکد دستکاری می‌کند.

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

مهاجم به GitHub میتوانست از طریق فرم بازیابی رمز عبور فراموش شده، ارسال یک کد بازیابی به ایمیل دیگری را با نشان دادن آدرسی در فرم شامل یک کاراکتر یونیکد که باعث برخورد می شود (به عنوان مثال، به جای [ایمیل محافظت شده] ایمیل m مشخص شدı[ایمیل محافظت شده]). آدرس آزمون را با موفقیت پشت سر گذاشت زیرا به بزرگ تبدیل شد و با آدرس اصلی مطابقت داشت ([ایمیل محافظت شده] ) ، اما هنگام ارسال نامه به همان صورت جایگزین شد و کد بازیابی به یک آدرس جعلی ارسال شد (mı[ایمیل محافظت شده]).

بعضی از символов، باعث ایجاد برخورد در هنگام تبدیل ثبات می شود:

ß 0x00DF SS
من 0x0131 I
ſ 0x017F S
 0xFB00 FF
 0xFB01 FI
 0xFB02 FL
 0xFB03 FFI
ffl 0xFB04 FFL
ſt 0xFB05 ST
st 0xFB06 ST
K 0x212A k

منبع: opennet.ru

اضافه کردن نظر