Līdzīgu unikoda rakstzīmju izmantošana, lai apietu autentifikāciju

GitHub izrādījās ir pakļauts uzbrukumam, kas ļauj konfiscēt piekļuvi kontam, manipulējot ar unikoda rakstzīmēm e-pastā. Problēma ir tāda, ka dažas unikoda rakstzīmes, izmantojot mazo vai lielo burtu konvertēšanas funkcijas, tiek pārtulkotas parastajās rakstzīmēs, kas pēc stila ir līdzīgas (kad vienā rakstzīmē tiek tulkotas vairākas dažādas rakstzīmes - piemēram, turku rakstzīmes "ı" un "i" ", pārvēršot lielos burtos, tiek pārveidoti par "I").

Pirms pieteikšanās parametru pārbaudes dažos pakalpojumos un lietojumprogrammās lietotāja sniegtie dati vispirms tiek pārveidoti lielos vai mazajos burtos un pēc tam tiek pārbaudīti datu bāzē. Ja pakalpojums atļauj izmantot unikoda rakstzīmes pieteikšanās ziņojumā vai e-pastā, tad uzbrucējs var izmantot līdzīgas unikoda rakstzīmes, lai veiktu uzbrukumu, kas manipulē ar sadursmēm Unicode Case Mapping Collisions.

'ß'.toUpperCase() == 'ss'.toUpperCase() // 0x0131
'K'.toLowerCase() == 'K'.toLowerCase() // 0x212A
'John@Gıthub.com'.toUpperCase() =='[e-pasts aizsargāts]'.toUpperCase()

Uzbrucējs vietnē GitHub varētu izmantojot aizmirstas paroles atkopšanas veidlapu, sāciet atkopšanas koda nosūtīšanu uz citu e-pastu, norādot veidlapā adresi, kas ietver unikoda rakstzīmi, kas izraisa sadursmi (piemēram, [e-pasts aizsargāts] tika norādīts e-pasts mı[e-pasts aizsargāts]). Adrese izturēja pārbaudi, jo tā tika pārveidota par lielajiem burtiem un sakrita ar sākotnējo adresi ([e-pasts aizsargāts] ), bet nosūtot vēstuli tā tika aizstāta kā ir un atkopšanas kods tika nosūtīts uz viltotu adresi (mı[e-pasts aizsargāts]).

Daži no rakstzīmes, izraisot sadursmes, pārveidojot reģistru:

ß 0x00DF SS
ı 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

Avots: opennet.ru

Pievieno komentāru