Utilisation de caractères Unicode similaires pour contourner l'authentification

GitHub tourné est vulnérable à une attaque qui vous permet de saisir l'accès à un compte en manipulant des caractères Unicode dans un courrier électronique. Le problème est que certains caractères Unicode, lors de l'utilisation des fonctions de conversion minuscules ou majuscules, sont traduits en caractères normaux de style similaire (lorsque plusieurs caractères différents sont traduits en un seul caractère - par exemple, le caractère turc "ı" et "i" " lorsqu'ils sont convertis en majuscules, ils sont convertis en " I ".

Avant de vérifier les paramètres de connexion dans certains services et applications, les données fournies par l'utilisateur sont d'abord converties en majuscules ou minuscules, puis vérifiées dans la base de données. Si un service autorise l'utilisation de caractères Unicode dans une connexion ou un e-mail, un attaquant peut alors utiliser des caractères Unicode similaires pour mener une attaque qui manipule les collisions dans Unicode Case Mapping Collisions.

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

Attaquant sur GitHub pourrait via le formulaire de récupération d'un mot de passe oublié, lancez l'envoi d'un code de récupération à un autre e-mail en indiquant dans le formulaire une adresse qui comprend un caractère Unicode qui provoque une collision (par exemple, au lieu de [email protected] l'email m a été indiquéı[email protected]). L'adresse a réussi le test car elle a été convertie en majuscules et correspond à l'adresse d'origine ([email protected] ), mais lors de l'envoi de la lettre, il a été remplacé tel quel et le code de récupération a été envoyé à une fausse adresse (mı[email protected]).

Une partie de caractères, provoquant des collisions lors de la conversion du registre :

ß 0x00DF SS
ı 0x0131 je
ſ 0x017F S
ff 0xFB00FF
fi 0xFB01 FI
fl 0xFB02 FL
ffi 0xFB03 FFI
ffl 0xFB04 FFL
ſt 0xFB05 ST
st 0xFB06ST
K 0x212A k

Source: opennet.ru

Ajouter un commentaire