Utilisation de symboles Unicode similaires pour contourner l'authentification

GitHub s’est retrouvé sous une attaque permettant d'accéder au compte par la manipulation de caractères Unicode dans l'email. Le problème est que certains caractères Unicode, lorsqu'ils sont appliqués aux fonctions de conversion en minuscules ou en majuscules, se traduisent par des caractères ordinaires similaires (lorsque plusieurs caractères différents se traduisent par un seul caractère — par exemple, le caractère turc «ı» et «i» se transforment en «I» lors de la conversion en majuscule).

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 en minuscules, puis vérifiées dans la base de données. Si le service permet d'utiliser des caractères unicode dans le login ou l'email, l'attaquant peut utiliser des caractères unicode similaires pour mener une attaque manipulant les collisions dans les tables de conversion de la casse des caractères (Unicode Case Mapping Collisions).

‘ß’.toUpperCase() == ‘ss’.toUpperCase() // 0x0131
‘K’.toLowerCase() == ‘K’.toLowerCase() // 0x212A
‘John@Gıthub.com’.toUpperCase() == ‘John@Github.com’.toUpperCase()

Sur GitHub, l'attaquant pouvait initier l'envoi d'un code de récupération à un autre email via le formulaire de récupération de mot de passe oublié en indiquant dans le formulaire une adresse incluant un caractère unicode provoquant une collision (par exemple, au lieu de mike@example.org, il fournissait l'email mıke@example.org). L'adresse passait la vérification car elle était convertie en majuscules et correspondait à l'adresse d'origine (mike@example.org), mais lors de l'envoi du mail, elle était utilisée telle quelle et le code de récupération était envoyé à l'adresse frauduleuse (mıke@example.org).

Certains des caractères, provoquant des collisions lors de la conversion de la casse :

ß 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

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster