GitHub Ce système est vulnérable à une attaque permettant d'accéder aux comptes via la manipulation de caractères Unicode dans les courriels. Le problème provient du fait que certains caractères Unicode, lors de leur conversion en minuscules ou en majuscules, sont remplacés par des caractères classiques de forme similaire (cela se produit lorsque plusieurs caractères différents sont convertis en un seul ; par exemple, les caractères turcs « ı » et « i » sont convertis en « I » lorsqu'ils sont mis en majuscules).
Avant de valider les identifiants de connexion, certains services et applications convertissent les données fournies par l'utilisateur en majuscules ou en minuscules, puis les comparent à la base de données. Si le service autorise les caractères Unicode dans l'identifiant ou l'adresse électronique, un attaquant peut utiliser des caractères Unicode similaires pour mener une attaque exploitant les conflits de correspondance de casse Unicode.
'ß'.toUpperCase() == 'ss'.toUpperCase() // 0x0131
'K'.toLowerCase() == 'K'.toLowerCase() // 0x212A
'John@Github.com'.toUpperCase() == 'John@Github.com'.toUpperCase()
Attaquant GitHub via le formulaire de récupération de mot de passe oublié, envoyez le code de récupération à une autre adresse e-mail en spécifiant dans le formulaire une adresse contenant un caractère Unicode provoquant une collision (par exemple, au lieu de mike@example.org, l'adresse e-mail m a été spécifiée).ıke@example.org). L'adresse a passé le contrôle car elle était en majuscules et correspondait à l'adresse d'origine (mike@example.org), mais lors de l'envoi du courriel, elle a été substituée telle quelle et le code de récupération a été envoyé à la fausse adresse (mıke@example.org).
Une partie de , provoquant des collisions lors de la conversion des registres :
ß 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
Source: opennet.ru
