Sarnaste Unicode'i märkide kasutamine autentimisest möödahiilimiseks

GitHub lõpetas on vastuvõtlik rünnakule, mis võimaldab teil e-kirjas Unicode'i tähemärkidega manipuleerimise teel konfiskeerida juurdepääsu kontole. Probleem on selles, et mõned Unicode'i tähemärgid tõlgitakse väike- või suurtähtede teisendamise funktsioonide kasutamisel tavalisteks tähemärkideks, mis on stiililt sarnased (kui üheks märgiks tõlgitakse mitu erinevat tähemärki - näiteks türgi täht "ı" ja "i" " kui teisendatakse suurtähtedeks, teisendatakse "I"-ks).

Enne sisselogimisparameetrite kontrollimist mõnes teenuses ja rakenduses teisendatakse kasutaja sisestatud andmed esmalt suur- või väiketähtedeks ja seejärel kontrollitakse neid andmebaasis. Kui teenus lubab sisselogimisel või meilis kasutada Unicode'i märke, saab ründaja kasutada sarnaseid unicode'i märke, et sooritada rünnak, mis manipuleerib Unicode Case Mapping Collisions kokkupõrgetega.

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

Ründaja GitHubis saaks unustatud parooli taastamise vormi kaudu alustage taastekoodi saatmist teisele meilile, näidates vormile aadressi, mis sisaldab kokkupõrke põhjustavat unicode'i märki (näiteks [meiliga kaitstud] meil oli märgitud mı[meiliga kaitstud]). Aadress läbis testi, kuna see muudeti suurtähtedeks ja ühtis algse aadressiga ([meiliga kaitstud] ), kuid kirja saatmisel asendati see nii nagu on ja taastekood saadeti võltsaadressile (mı[meiliga kaitstud]).

Mõned tähemärki, mis põhjustab registri teisendamisel kokkupõrkeid:

ß 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

Allikas: opennet.ru

Lisa kommentaar