Použití podobných znaků Unicode k obejití ověřování

GitHub Ukázalo se, že je je náchylný k útoku, který vám umožňuje zmocnit se přístupu k účtu prostřednictvím manipulace se znaky Unicode v e-mailu. Problém je v tom, že některé znaky Unicode se při použití funkcí převodu na malá nebo velká písmena překládají na běžné znaky, které mají podobný styl (když je několik různých znaků přeloženo do jednoho znaku – například turecký znak „ı“ a „i“ " při převodu na velká písmena se převedou na "I").

Před kontrolou přihlašovacích parametrů v některých službách a aplikacích se údaje zadané uživatelem nejprve převedou na velká nebo malá písmena a poté se zkontrolují v databázi. Pokud služba umožňuje použití znaků unicode v přihlášení nebo e-mailu, pak může útočník použít podobné znaky unicode k provedení útoku, který manipuluje s kolizemi v Unicode Case Mapping Collisions.

'ß'.toUpperCase() == 'ss'.toUpperCase() // 0x0131
'K'.toLowerCase() == 'K'.toLowerCase() // 0x212A
'John@Gıthub.com'.toUpperCase() == '[chráněno e-mailem]'.toUpperCase()

Útočník na GitHubu mohl prostřednictvím formuláře pro obnovení zapomenutého hesla iniciujte odeslání kódu pro obnovení na jiný e-mail tak, že ve formuláři uvedete adresu obsahující znak unicode způsobující kolizi (například místo [chráněno e-mailem] byl uveden email mı[chráněno e-mailem]). Adresa prošla testem, protože byla převedena na velká písmena a odpovídala původní adrese ([chráněno e-mailem] ), ale při odesílání dopisu byl nahrazen tak, jak je, a obnovovací kód byl zaslán na falešnou adresu (mı[chráněno e-mailem]).

Některý z znaky, což způsobuje kolize při převodu registru:

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

Přidat komentář