Divulgado perigoso exploit para aparelhos Android

Qualquer aparelho que não esteja rodando pelo menos a versão Jelly Bean pode estar vulnerável. O estrago depende do modelo do aparelho, sendo que a falha mais grave foi apontada em alguns aparelhos Samsung, onde o exploit consegue formatar o aparelho e inutilizar o cartão SIM sem que o usuário possa fazer nada.

O exploit consiste em enviar um URL malicioso para o aparelho da vítima. Pode ser o resultado de uma busca no google, um email, um SMS, um QR code, etc. Qualquer forma de exibir um URL para o usuário funciona. Se o usuário clicar no URL e o aparelho for vulnerável, acabou-se.

O URL vem com um código USSD, desses que a gente usa para acessar opções avançadas do telefone e funciona discando algo como *#66445#*.  O problema é que alguns desses códigos podem ferrar com o telefone e são “discados” sem qualquer pergunta nos telefones vulneráveis.

Você pode testar se seu telefone é vulnerável visitando esta página com ele. O autor do blog, Dylan Reeve, demonstra o problema usando um código USSD inócuo, que só mostra o IMEI do telefone na tela. Eu testei com meu xing-ling Android, Hero H200, e imediatamente ao visitar a página abriu-se o discador e uma janela na frente dele com os dois IMEI do meu telefone. Nenhuma confirmação foi pedida.

Depois testei no meu Motorola Quench com ROM CyanogenMod. Aconteceu a mesma coisa (mas só exibiu um IMEI, claro).

A implementação é simples, ao alcance de qualquer “ráquer” wannabe. Bastou colocar isso na página:

Edit: Se você estiver usando o Opera Mobile não acontece nada, porque o Opera não suporta iframe. Porém existe pelo menos um outro modo de “empurrar” o URL. Basta colocar isso na página:

<meta http-equiv=”REFRESH” content=”0;url=tel:*%2306%23″></HEAD>

Eu testei com o Opera Mobile 12, que acabei de baixar via Google Play, e o exploit funcionou. Eu criei uma página de teste em https://ryan.com.br/ussd.htm que você pode usar para testar o seu aparelho. O código que usei é o que exibe o IMEI, mas se você não estiver seguro, basta usar o browser do seu PC e olhar o código-fonte.

Eu não sei se meus aparelhos possuem códigos USSD “perigosos”. Mas na dúvida é melhor seguir as recomendações dadas por Dylan Reeve nesta página até que a poeira baixe e conheçamos o real potencial do problema.

A não ser que você seja dono de um dos modelos Samsung citados, claro. Neles o perigo é real e imediato.

Você também pode testar se sua app leitora de QR Codes é segura, lendo este código:

Trata-se do mesmo USSD que exibe o IMEI. A app que tenho instalada agora no Quench, QR Barcode Scanner versão 1.4 de 01/12/2011, mostra que é um número de telefone e qual é, me dando a oportunidade de discá-lo ou não. Já é suficientemente seguro para mim, mas eu espero que versões mais recentes, cientes do exploit, exibam um alerta bem grande quando se tratar de um USSD.

A propósito, se você precisa gerar seus próprios códigos pode usar o QR Code generator.

Edit: no momento, a melhor maneira de se proteger é usar o auto-reset blocker. Apesar do nome, o programa ajuda a te proteger de qualquer código USSD malicioso, vindo por qualquer vetor. Ele se instala como um discador e quando o sistema processar um link de telefone, irá abrir uma janela perguntando que discador usar. Escolha o auto-reset blocker. O programa então exibirá qual o número que vai ser discado, dando sua opinião sobre o mesmo (se é seguro ou não), mas deixará por sua conta se vai aceitar ou não a discagem.

 

Se você aceitar, ele joga o número para o discador padrão do telefone.

Edit2 (obrigado, Saulo): Telstop faz a mesma coisa, mas não instala no meu android xing-ling. Pelo menos não pelos caminhos oficiais (google Play).

Update – 27/09: Como o exploit mata cartões SIM

O hacker indiano que divulgou o problema, Ravi Borgaonkar,  falou sobre isso antes mesmo de comentar sobre o problema da Samsung, mas se ele explicou os detalhes, eu não consegui entender no áudio da apresentação. Eu estava achando muito estranho que nas últimas 24h todo mundo estivesse falando exclusivamente sobre o problema da Samsung, como se a parte sobre matar chips fosse tão complicada que seria altamente improvável ocorrer. Mas segundo se lê agora na h-online e na infoworld, o ataque é igualmente simples mas muito mais abrangente. Existe um código USSD, aparentemente universal, que é usado para mudar o PIN do chip. Para isso é necessário fornecer o PUK.

  • Basta fazer isso uma vez com o PUK errado para travar o chip do usuário e este ter que correr atrás do seu cartão PUK para desbloquear;
  • Uma página que consiga fazer dez tentativas em sequência inutilizará o chip do usuário definitivamente.

Vejam o vídeo da apresentação de Ravi Borgaonkar:

23 comentários
  • Jefferson - 6.464 Comentários

    Esse exploit até que tem potencial como ferramenta de suporte, como demonstrado no exemplo de Dylan Reeve. Se você quiser ensinar o usuário a conhecer e anotar o IMEI do seu telefone, basta passar um link. A mesma coisa para acessar outras funções “benignas”.

  • VR5 - 397 Comentários

    Que bom que voltaste a “ativa”, Jefferson! Espero que continues assim! :yahoo:

    Estou curioso quanto ao lançamento do Windows 8 e, consequentemente, a versão Windows Phone 8… vamos ver como vai ser…  

  • Sony Santos - 58 Comentários

    Meu Motorola Defy, Android 2.2, é vulnerável. :(

  • Sony Santos - 58 Comentários

    Jefferson, obrigado por compartilhar essa informação. Instalei o TelStop e funcionou: é um aplicativo super-leve (9K) que, concorrente com o discador padrão, abre uma janela para você escolher um aplicativo em caso de discagem automática (discador padrão ou TelStop). Se você tinha real intenção de discar, então escolha o discador; se apareceu sem você pedir, basta escolher TelStop. Recomendo.

    • Jefferson - 6.464 Comentários

      Isso ajuda bastante, mas não é a solução apropriada. Se você estiver clicando em um link ciente que é para um número de telefone, mas que na verdade tem um USSD, você vai escolher o discador padrão.

      E se o usuário tiver um perfil que o leva a clicar em links desse tipo com frequência, vai acabar acostumado a escolher o discador padrão automaticamente, sem nem pensar. O mesmo problema que ocorre com o UAC do Windows Vista/Seven.

      A solução correta, que eu espero encontrar, é que se o número for um USSD (é fácil de reconhecer pelo formato), seja exibida uma mensagem para o usuário mostrando qual é e explicando o risco que ele corre se prosseguir.

      • Saulo Benigno - 279 Comentários

        Aí é que está.. ver link desse tipo não é comum. O TelStop é bem interessante mesmo, gostei. Clicou em um link no site, custa nada fazer uma checagem enquanto ninguem atualiza com um Fix
        O que acho que vai ser muito e impossível fazerem isso, digo, Google, etc… Talvez só a Samsung mesmo.
        Quem sabe eles atualizem logo o Jelly Bean, pelo menos algo bom vão ganhar nisso.
         
        Ou talvez não, afinal é Android né? :)

        • Jefferson - 6.464 Comentários

          Aí é que está.. ver link desse tipo não é comum.

          Pelo contrário. É comum sim.

          Você deve estar teimando com a noção de que “link” tem a ver com “internet”. Em sites são incomuns mesmo (podem deixar de ser agora). Mas dê uma olhada agora na parte de messaging do seu telefone e veja quantos SMSs recebidos tem links. No meu, pelo menos a metade tem.

          E a atualização do firmware só é opção para aparelhos que podem ser atualizados.

  • Dyeison - 2 Comentários

    Falha interessante. Testei no Sansung Galaxy 5, usando navegador Dolphin a falha se apresenta, exibindo o IMEI. Já no navegador Opera isso não ocorre. Por que será?

  • Jefferson - 6.464 Comentários

    Provavelmente porque o Opera não dá suporte a URL “tel:”. Mas cuidado: simplesmente usar outro browser não vai te deixar seguro. O exploit tem diversas vias de entrada.

    Edit: Segundo eu li, é porque o Opera não suporta frames. Mas existe outra implementação que usa HTTP-Refresh, que talvez passe pelo Opera.

  • Alexandre Custodio - 3 Comentários

    Aí entram duas questões:

    Meus celular é vulnerável? O Galaxy 5, sim.
    Existe algum código USSD, pra ele, que faça algum estrago, sem pedir confirmação antes?

    Fato é que o TelSpop não funciona pro meu aparelho.

    • Jefferson - 6.464 Comentários

      Existe algum código USSD, pra ele, que faça algum estrago,

      Aí é que está o coração do problema. É impossível saber com certeza.

      Cada fabricante pode implementar seus próprios códigos, que não são divulgados para o público em geral. Alguns, mesmo supostamente inócuos, podem em certos casos criar transtorno para o usuário. Por exemplo, digamos que exista um código USSD para mudar a frequência de operação do telefone, como acontece com o TREO650. O usuário atingido vai ficar com o telefone “fora do ar”, achando até que está com defeito, até que uma pessoa capacitada descubra a razão e reconfigure o telefone.

      E como se essas não fossem incógnitas suficientes, ainda temos outro problema: segundo o artigo na Wikipedia sobre USSD, cada operadora também tem os seus próprios códigos e alguns mecanismos de pagamento também os utilizam! Ou seja: esse exploit tem potencial para custar até mais que o valor do seu telefone!

      Eu não gosto de ser alarmista, mas a coisa tem potencial para ser grave.

       

  • Saulo Benigno - 279 Comentários

    E li que a Samsung informou que já foi corrigido no S3
    http://betanews.com/2012/09/26/samsung-says-remote-wipe-exploit-is-moot-on-galaxy-s-iii-might-still-work-on-others/
     
    SEI!!!!!
     

  • Jefferson - 6.464 Comentários

    Já saiu um app que faz exatamente o que eu queria. Vejam a atualização que fiz no post.

    • Saulo Benigno - 279 Comentários

      Não é a mesma coisa que o TelStop não?

      • Jefferson - 6.464 Comentários

        Caramba… é!

         

        Eu não sei o que aconteceu. Eu devo ter caído na página de outra app quando li sobre o Telstop, porque eu juro que estava com outra idéia do comportamento da aplicação.

        De qualquer forma, Telstop não é compatível com meu xing-ling. Só com o Quench.

        • Sony Santos - 58 Comentários

          Ontem de manhã o TelStop não fazia isso, isto é, não fornecia um botão para discar ou não, após avisar se é suspeito. Mandei um email ao autor sugerindo esse comportamento, mas pela rapidez da atualização ele deve ter feito isso em paralelo. No entanto, eu ainda não posso tornar esse app padrão no meu aparelho, porque, para discar, ele chama o discador padrão! Isso mesmo, se eu deixar o telstop padrão, ele entra em loop, chamando o telstop novamente (eu testei)… Hahahahaha. Não sei se o auto-reset blocker faz o mesmo, mas pretendo testá-lo.

          • Sony Santos - 58 Comentários

            Testei o auto-reset blocker. Mesmo tornado o discador padrão, ele sempre vai perguntar qual discador você quer abrir ao escolher discar. Neste caso eu preferiria que ele automaticamente discasse, ou escolhesse o padrão do aparelho, ou que eu pudesse configurar um discador padrão em suas configurações. De qualquer forma, é um comportamento melhor do que o do telstop.

  • Jefferson - 6.464 Comentários

    Como disse uma vez o Steve Ballmer, “não existe patch para a estupidez humana”. Já estão fazendo piada sobre a impossibilidade de realmente proteger o telefone contra o código de wipe da Samsung:

     

    [img]http://i.imgur.com/FKAkf.jpg[/img]

    Se bem que a Sansung poderia ter evitado isso simplesmente pedindo confirmação antes de apagar o telefone do usuário. Espero que ela tenha feito isso no último update do firmware, senão o que vemos na imagem acima continuará sendo uma possibilidade.

  • Jefferson - 6.464 Comentários

    A propósito, o código que faz o “factory reset” no Samsung sem perguntar nada é *2767*3855#

  • Jefferson - 6.464 Comentários

    Finalmente apareceram informações mais detalhadas sobre a versão do exploit que mata cartões SIM. Vejam a atualização que fiz no post.

  • Luciano - 464 Comentários

    Apenas para que fique registado. Meu Hero H2000G é vulnerável ao exploit.  :( Resolvi instalando o auto-reset blocker que foi o que achei melhor. Ele (o H2000G) roda com o Android 2.2.1.

  • Bruno - 10 Comentários

    Saiu uma atualização para galaxy 5 feita pelo psyke83 que desenvolve uma rom para o aparelho no fórum da cyanogem e que corrige esse problema, testei com uma versão anterior e o imei aparecia e agora nessa nova versão ao clicar no link ele informa o código na tela de discagem, mas não o executa automaticamente. Me parece que o problema foi resolvido.

Deixe um comentário para Jefferson Cancelar resposta

Você pode usar estas tags HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  

  

  

:) :( ;) O_o B) :lol: :huh: :S :D :-P 8-O :yahoo: :rtfm: :dashhead1: :clapping: more »