GitHub vulnerável a um ataque que permite o acesso à conta através da manipulação de caracteres Unicode no email. O problema está relacionado ao fato de que alguns caracteres Unicode, ao serem aplicadas funções de transformação para maiúsculas ou minúsculas, são traduzidos em caracteres comuns que se assemelham entre si (quando vários caracteres diferentes são traduzidos em um único caractere — por exemplo, o caractere turco ‘ı’ e ‘i’ ao serem convertidos para maiúsculas se tornam ‘I’).
Antes de verificar os parâmetros de entrada em alguns serviços e aplicativos, os dados fornecidos pelo usuário são primeiro convertidos para maiúsculas ou minúsculas e, em seguida, verificados no banco de dados. Se o serviço permite a utilização de caracteres Unicode no login ou email, o atacante pode usar caracteres Unicode semelhantes para realizar um ataque que manipula colisões em tabelas de conversão de maiúsculas e minúsculas (Colisões de Mapeamento de Caso Unicode).
‘ß’.toUpperCase() == ‘ss’.toUpperCase() // 0x0131
‘K’.toLowerCase() == ‘K’.toLowerCase() // 0x212A
‘John@Gıthub.com’.toUpperCase() == ‘John@Github.com’.toUpperCase()
No GitHub, o atacante iniciar o envio de um código de recuperação para outro email através do formulário de recuperação de senha esquecido, especificando no formulário um endereço que inclui um caractere Unicode que causa uma colisão (por exemplo, em vez de mike@example.org, o email mıke@example.org). O endereço passou na verificação, pois foi convertido para maiúsculas e coincidiu com o endereço original (mike@example.org), mas ao enviar o email, foi inserido como estava e o código de recuperação foi enviado para o endereço falso (mıke@example.org).
Alguns dos , que causam colisões na conversão de casos:
ß 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
Fonte: opennet.ru
