Použitie podobných znakov Unicode na obídenie autentifikácie

GitHub Ukázalo sa, že je je náchylný na útok, ktorý vám umožňuje zmocniť sa prístupu k účtu manipuláciou so znakmi Unicode v e-mailoch. Problém je v tom, že niektoré znaky Unicode sa pri použití funkcií prevodu malých alebo veľkých písmen prekladajú na bežné znaky, ktoré majú podobný štýl (keď sa do jedného znaku preloží niekoľko rôznych znakov – napríklad turecký znak „ı“ a „i“ " pri prevode na veľké písmená sa skonvertujú na "I").

Pred kontrolou prihlasovacích parametrov v niektorých službách a aplikáciách sa údaje zadané používateľom najskôr skonvertujú na veľké alebo malé písmená a následne sa skontrolujú v databáze. Ak služba umožňuje použitie znakov unicode v prihlásení alebo e-maile, potom môže útočník použiť podobné znaky unicode na vykonanie útoku, ktorý manipuluje s kolíziami v prípade kolízií Unicode Case Mapping Collisions.

'ß'.toUpperCase() == 'ss'.toUpperCase() // 0x0131
'K'.toLowerCase() == 'K'.toLowerCase() // 0x212A
'John@Gıthub.com'.toUpperCase() == '[chránené e-mailom]'.toUpperCase()

Útočník na GitHub mohol prostredníctvom formulára na obnovenie zabudnutého hesla iniciujte odoslanie kódu na obnovenie na iný e-mail uvedením adresy, ktorá obsahuje znak unicode, ktorý spôsobuje kolíziu (napríklad namiesto [chránené e-mailom] bol uvedený email mı[chránené e-mailom]). Adresa prešla testom, pretože bola prevedená na veľké písmená a zhodovala sa s pôvodnou adresou ([chránené e-mailom] ), ale pri odosielaní listu bol nahradený tak, ako je, a obnovovací kód bol odoslaný na falošnú adresu (mı[chránené e-mailom]).

Niektorí z znaky, čo spôsobuje kolízie pri prevode registra:

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

Zdroj: opennet.ru

Pridať komentár