Doğrulamadan keçmək üçün oxşar Unicode simvollarından istifadə

Github açıldı e-poçtda Unicode simvollarının manipulyasiyası yolu ilə hesaba girişi ələ keçirməyə imkan verən hücuma həssasdır. Problem ondadır ki, bəzi Unicode simvolları kiçik və ya böyük hərflərə çevirmə funksiyalarından istifadə edərkən, üslub baxımından oxşar olan normal simvollara çevrilir (bir neçə fərqli simvol bir simvola çevrildikdə - məsələn, türk simvolu "ı" və "i" " böyük hərflərə çevrildikdə "I" hərfinə çevrilir).

Bəzi xidmətlərdə və proqramlarda giriş parametrlərini yoxlamadan əvvəl istifadəçi tərəfindən verilən məlumatlar əvvəlcə böyük və ya kiçik hərflərə çevrilir və sonra verilənlər bazasında yoxlanılır. Xidmət girişdə və ya e-poçtda unicode simvollarının istifadəsinə icazə verirsə, təcavüzkar Unicode Case Mapping Collisions-da toqquşmaları manipulyasiya edən hücumu həyata keçirmək üçün oxşar unicode simvollarından istifadə edə bilər.

'ß'.toUpperCase() == 'ss'.toUpperCase() // 0x0131
'K'.toLowerCase() == 'K'.toLowerCase() // 0x212A
'John@Gıthub.com'.toUpperCase() == '[e-poçt qorunur]'.toUpperCase()

GitHub-da hücumçu bilərdi unudulmuş parolun bərpası forması vasitəsilə, formada toqquşmaya səbəb olan unicode simvolunu ehtiva edən ünvanı göstərərək bərpa kodunu başqa e-poçta göndərməyə başlayın (məsələn, əvəzinə [e-poçt qorunur] e-poçt m göstərilmişdirı[e-poçt qorunur]). Ünvan böyük hərflərə çevrildiyi və orijinal ünvana uyğun gəldiyi üçün sınaqdan keçdi ([e-poçt qorunur] ), lakin məktubu göndərərkən olduğu kimi dəyişdirilib və bərpa kodu saxta ünvana göndərilib (m.ı[e-poçt qorunur]).

Bəzi simvolov, reyestri çevirərkən toqquşmalara səbəb olur:

ß 0x00DF SS
mən 0x0131 I
ſ 0x017F S
ff 0xFB00 FF
fi 0xFB01 FI
fl 0xFB02 FL
ffi 0xFB03 FFI
ffl 0xFB04 FFL
ſt 0xFB05 ST
st 0xFB06 ST
K 0x212A k

Mənbə: opennet.ru

Добавить комментарий