Apple - Entenda o vazamento de UDIDS - parte 2
Explicarei neste artigo o conteúdo do link presente na imagem do artigo anterior, o tweet de Mikko a respeito da descoberta do último jogo acessado no iPad do Obama, que provavelmente poucos acessaram. Porém, atente-se: não necessariamente o UDID apresentado neste site pertence ao presidente Obama, pois "Obama" trata-se apenas do nome do dispositivo e não do utilizador.
Para iniciarmos, confira ao acessar a página do site ycombinator.com a notoriedade de três eventos:
- Identificação do UDID;
- Envio de requisição HTTP à API do site openfeint.com, passando como argumento o UDID;
- Resposta do site openfeint.com com informações relativas ao UDID.
Explicarei de modo técnico, detalhado e em etapas como esses eventos foram realizados e quais foram as vulnerabilidades que levaram ao vazamento de informações apresentado no terceiro evento.
1. Identificação do UDID
Nessa parte, o usuário utilizou o comando cat para listar o conteúdo do arquivo disponibilizado pelo Anonymous, neste caso identificado como iphonelist.txt, e filtrar, por meio do comando grep, as linhas contendo a palavra obama sem diferenciar letras maiúsculas de minúsculas, resultando em:
’473d6e1ebf0b100ed172ce5f69c97ba6c8f12ad5′,’766a23(…)9373e5cd’,’hobamain’,’iPad’
‘c63e008e6271c3ac128eb6a242a9817528b6baef’,’b996a0(…)15d7355fb’,’Obama‘,’iPad’
2. Envio de requisição HTTP à API do site openfeint.com, passando como argumento o UDID
Utilizando o comando cURL, um programa similar a um navegador em linha de comando, o usuário envia uma requisição para a URL https://api.openfeint.com/users/for_device.xml?udid=c63e0…, enviando o UDID encontrado no passo anterior. Observação: Visto que o comando cURL foi utilizado sem argumentos, poderíamos obter o mesmo efeito inserindo esta URL em um navegador, como o Google Chrome, por exemplo.
Deparamo-nos, então, com as perguntas que não querem calar: De onde surgiu essa URL do site openfeint.com? Como foi possível descobrir que ele aceita um UDID como parâmetro?
Responderei essas e outras perguntas logo adiante.
3. Resposta do site openfeint.com com informações relativas ao UDID
Assim como o navegador faria, o cURL imprimiu no terminal a resposta de nossa requisição (passo 2) no formato XML, uma série de informações relacionadas ao UDID enviado, como por exemplo o último jogo acessado pelo dispositivo:
<last_played_game_name>Fishing Fun 2</last_played_game_name>
Quanto ao dado apresentado, é importante ressaltar que o openfeint detém conhecimento apenas dos jogos que ao serem iniciados enviarem uma requisição a ele. Ou seja, se o usuário do iPhone acessar um jogo desenvolvido por outra empresa, provavelmente o mesmo não notificará a openfeint e consequentemente não aparecerá na resposta XML fornecida acima.
FAQ
P: De onde surgiu a URL do site openfeint.com?
R: Surgiu após a análise de requisições emitidas pelas aplicações do celular. Por meio dessa análise, é possível descobrir com qual endereço o dispositivo está tentando se comunicar e o que está trafegando nessa comunicação. Para isso, é necessário configurar no iDevice o acesso ao proxy, um serviço de intermediação de requisições e respostas.
Confira abaixo um exemplo de interceptação utilizando um proxy:
P: Como foi possível descobrir que ele aceita um UDID como parâmetro?
R: No aplicativo em questão, eram disparadas requisições para o website openfeint.com, enviando como argumento o UDID, justamente o que chamou atenção deste usuário. Notemos que os argumentos dessa URL são passados após o caractere "?", separados em nome e valor pelo caractere "=", ou seja, na URL citada udid é o nome do argumento e c63e... é o valor.
P: Existe algum estudo das aplicações que trafegam o UDID?
R: Sim, existe. O pesquisador Eric Smith, em seu relatório, concluiu que 68% das 57 aplicações mais baixadas da App Store em outubro de 2010 enviavam o UDID ao se comunicarem com o servidor.
Conclusão
Essa falha se situa na autenticação do usuário por confiar em um dado não sensível, possibilitando a falsificação de identidade e, por consequência, o vazamento de informações. E, embora esse exemplo seja relacionado a um jogo, a vulnerabilidade apresentada se enquadra em qualquer tipo de aplicação, inclusive de instituições financeiras.
De uma forma análoga, imagine se apenas ao preencher seu CPF no site do Ministério da Fazenda fossem retornadas informações como endereço, telefone e outros. Pense a respeito.