Uzante Similajn Unikodajn Signojn por Preterpasi Aŭtentigon

GitHub finiĝis estas susceptible al atako, kiu permesas vin kapti aliron al konto per manipulado de Unikodaj signoj en retpoŝto. La problemo estas, ke kelkaj Unikodaj signoj, kiam oni uzas la minusklajn aŭ majusklojn konvertajn funkciojn, estas tradukitaj en regulajn signojn, kiuj estas similaj laŭstilaj (kiam pluraj malsamaj signoj estas tradukitaj en unu signon - ekzemple la turka signo "ı" kaj "i". " kiam konvertite al majuskla, estas konvertitaj al "I").

Antaŭ kontroli ensalutajn parametrojn en iuj servoj kaj aplikoj, uzant-provizitaj datumoj unue estas konvertitaj al majusklaj aŭ minuskloj kaj poste kontrolitaj en la datumbazo. Se servo permesas la uzon de unikodaj signoj en ensaluto aŭ retpoŝto, tiam atakanto povas uzi similajn unikodajn signojn por fari atakon, kiu manipulas koliziojn en Unikodaj Kazaj Kolizioj.

'ß'.toUpperCase() == 'ss'.toUpperCase() // 0x0131
'K'.toLowerCase () == 'K'.toLowerCase () // 0x212A
'John@Gıthub.com'.toUpperCase() == '[retpoŝte protektita]'.toMajuskloj ()

Atakanto sur GitHub povus per la formularo por reakiri forgesitan pasvorton, komencu sendi reakivan kodon al alia retpoŝto indikante en la formo adreson, kiu inkluzivas unikodan signon, kiu kaŭzas kolizion (ekzemple anstataŭ [retpoŝte protektita] retpoŝto m estis indikitaı[retpoŝte protektita]). La adreso trapasis la teston ĉar ĝi estis konvertita al majusklo kaj kongruis kun la origina adreso ([retpoŝte protektita] ), sed sendinte la leteron ĝi estis anstataŭigita kiel estas kaj la reakira kodo estis sendita al falsa adreso (mı[retpoŝte protektita]).

Kelkaj el karakteroj, kaŭzante koliziojn dum konvertado de registro:

ß 0x00DF SS
mi 0x0131 mi
ſ 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

fonto: opennet.ru

Aldoni komenton