Përdorimi i karaktereve të ngjashme të Unicode për të anashkaluar vërtetimin

GitHub perfundoi është i ndjeshëm ndaj një sulmi që ju lejon të kapni aksesin në një llogari përmes manipulimit të karaktereve Unicode në email. Problemi është se disa karaktere Unicode, kur përdorin funksionet e konvertimit të shkronjave të vogla ose të mëdha, përkthehen në karaktere të rregullta që janë të ngjashme në stil (kur disa karaktere të ndryshme përkthehen në një karakter - për shembull, karakteri turk "ı" dhe "i " kur konvertohen në shkronja të mëdha konvertohen në "I").

Përpara se të kontrolloni parametrat e hyrjes në disa shërbime dhe aplikacione, të dhënat e ofruara nga përdoruesi fillimisht konvertohen në shkronja të mëdha ose të vogla dhe më pas kontrollohen në bazën e të dhënave. Nëse një shërbim lejon përdorimin e karaktereve unicode në një hyrje ose email, atëherë një sulmues mund të përdorë karaktere të ngjashme unicode për të kryer një sulm që manipulon përplasjet në Unicode Case Mapping Collisions.

'ß'.toUpperCase() == 'ss'.toUpperCase() // 0x0131
'K'.toLowerCase() == 'K'.toLowerCase() // 0x212A
'John@Gıthub.com'.toUpperCase() == '[email mbrojtur]'.toUpperCase()

Sulmues në GitHub mundet përmes formularit për rikuperimin e një fjalëkalimi të harruar, filloni dërgimin e një kodi rikuperimi në një email tjetër duke treguar në formë një adresë që përfshin një karakter unicode që shkakton një përplasje (për shembull, në vend të [email mbrojtur] emaili m u treguaı[email mbrojtur]). Adresa e kaloi testin sepse u konvertua në shkronja të mëdha dhe përputhej me adresën origjinale ([email mbrojtur] ), por gjatë dërgimit të letrës ajo u zëvendësua siç ishte dhe kodi i rikuperimit u dërgua në një adresë të rreme (mı[email mbrojtur]).

Disa nga personazheve, duke shkaktuar përplasje gjatë konvertimit të regjistrit:

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

Burimi: opennet.ru

Shto një koment