Samanlaisten Unicode-merkkien käyttäminen todennuksen ohittamiseen

GitHub päätyi on alttiina hyökkäykselle, jonka avulla voit kaapata tilin käyttöoikeuden käsittelemällä sähköpostin Unicode-merkkejä. Ongelmana on, että jotkin Unicode-merkit, kun käytetään pienten tai isojen kirjainten muunnosfunktioita, käännetään tavallisiksi merkeiksi, jotka ovat tyyliltään samanlaisia ​​(kun yhdeksi merkiksi käännetään useita eri merkkejä - esimerkiksi turkkilainen merkki "ı" ja "i" " kun muunnetaan isoiksi kirjaimille, ne muunnetaan "I":ksi).

Ennen kuin kirjautumisparametrit tarkistetaan joissakin palveluissa ja sovelluksissa, käyttäjän toimittamat tiedot muunnetaan ensin isoiksi tai pieniksi kirjaimille ja tarkistetaan sitten tietokannasta. Jos palvelu sallii unicode-merkkien käytön kirjautumisessa tai sähköpostissa, hyökkääjä voi käyttää samanlaisia ​​unicode-merkkejä suorittaakseen hyökkäyksen, joka manipuloi Unicode Case Mapping Collisions -sovelluksen törmäyksiä.

'ß'.toUpperCase() == 'ss'.toUpperCase() // 0x0131
'K'.toLowerCase() == 'K'.toLowerCase() // 0x212A
'John@Gıthub.com'.toUpperCase() == '[sähköposti suojattu]'.toUpperCase()

Hyökkääjä GitHubissa voisi Aloita unohtuneen salasanan palautuslomakkeen kautta palautuskoodin lähettäminen toiseen sähköpostiin ilmoittamalla lomakkeelle osoite, joka sisältää törmäyksen aiheuttavan unicode-merkin (esim. [sähköposti suojattu] sähköpostiosoite m ilmoitettiinı[sähköposti suojattu]). Osoite läpäisi testin, koska se muutettiin isoiksi ja vastasi alkuperäistä osoitetta ([sähköposti suojattu] ), mutta kirjettä lähetettäessä se korvattiin sellaisenaan ja palautuskoodi lähetettiin väärään osoitteeseen (mı[sähköposti suojattu]).

Jotkut merkkiä, aiheuttaa törmäyksiä rekisteriä muunnettaessa:

ß 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

Lähde: opennet.ru

Lisää kommentti