helldanger1
GForum VIP
- Entrou
- Ago 1, 2007
- Mensagens
- 29,631
- Gostos Recebidos
- 1
por Alan Dang
Recentemente, conversei com o especialista em segurança Charlie Miller da Independent Security Evaluators sobre a vulnerabilidade do iPhone recentemente divulgado que teria permitido que um hacker mal-intencionado assumir o controle de um iPhone através de uma série de mensagens SMS cuidadosamente.
Alan: Obrigado por ter tempo para conversar, Charlie. Por que não começar por dizer-nos um pouco sobre a vulnerabilidade de SMS?
Charlie: O bug do iPhone tem a ver com o telefone dizendo que há uma certa quantidade de dados, e depois não enviá-lo tanto quanto você disse que faria. A função que lê os dados começa a retornar 1 para indicar um erro, mas as outras partes do programa não se verificar esse erro e realmente acho que o -1 é os dados da mensagem. Isso mostra o quão complexo pode ser escrever código seguro, separadamente, cada parte do programa parece estar correta, mas a forma como eles interagem é perigoso!
De qualquer forma, dependendo do que você enviar, diferentes coisas ruins podem acontecer. Em um ponto, você pode obtê-lo para sair porque se trata de atribuir -1 bytes (que é visto como 0xffffffff - um número muito grande). Esta é uma negação de serviço que vai bater o telefone fora da rede temporariamente.
Durante minha palestra BlackHat, mantivemos o envio desta mensagem de negação de serviço a cada 10 segundos a um voluntário da platéia para mantê-lo fora da rede. Como uma conseqüência infeliz, as mensagens foram ficando cued em cima da rede e seu telefone ainda estava derrubado horas após a palestra. Ele já chegou de volta a funcionar.
Alan: Nota para os nossos leitores: quando Charlie diz que ele precisa de um voluntário, não fazer contato visual. Então, como você mandou a mensagem? Se você enviar SMS através da interface do iPhone ou outro fazer algo como e-mail, o "número de telefone @ attwireless" abordagem?
Charlie: Para enviar as mensagens SMS através da rede da operadora, tivemos um pequeno aplicativo no nosso iPhone ataque que iria falar com o modem GSM usando comandos AT. Para testar e encontrar os erros, nós usamos esta estrutura de injeção muito legal que o meu co-apresentador Collin Mulliner escreveu, o que permite testar implementações de mensagens SMS por apenas enviar dados sobre TCP. Isso evita que você tenha de enviar dados sobre a rede da operadora e não custa nada, e também permite que você teste várias mensagens muito rapidamente.
Alan: Então como você vai fazer a partir de uma negação de serviço para um full-on explorar?
Charlie: O pior caso tem a ver com a forma como o programa lida com mensagens concatenadas. Esta é uma forma de enviar mais de 140 bytes de cada vez. Você pode enviar uma mensagem longa de uma série de mensagens para o telefone reconstruí-lo em uma seqüência longa. Ele acessa uma matriz baseada em um valor a partir dos dados. No caso em que ele pensa que lê -1, acessa a memória antes da matriz, e não na matriz. Ao definir as coisas apenas para a direita e sendo complicado, você pode realmente aproveitar isso para ganhar o controle total do dispositivo.
O ataque inteiro leva há pouco mais de 500 mensagens, embora a vítima não sabe que eles estão sendo enviados, porque eles não aparecem no telefone. A maioria destas mensagens têm a ver com arrumar as coisas "apenas para a direita." Dezesseis deles realmente acessar o array fora dos limites.
Recentemente, conversei com o especialista em segurança Charlie Miller da Independent Security Evaluators sobre a vulnerabilidade do iPhone recentemente divulgado que teria permitido que um hacker mal-intencionado assumir o controle de um iPhone através de uma série de mensagens SMS cuidadosamente.
Alan: Obrigado por ter tempo para conversar, Charlie. Por que não começar por dizer-nos um pouco sobre a vulnerabilidade de SMS?
Charlie: O bug do iPhone tem a ver com o telefone dizendo que há uma certa quantidade de dados, e depois não enviá-lo tanto quanto você disse que faria. A função que lê os dados começa a retornar 1 para indicar um erro, mas as outras partes do programa não se verificar esse erro e realmente acho que o -1 é os dados da mensagem. Isso mostra o quão complexo pode ser escrever código seguro, separadamente, cada parte do programa parece estar correta, mas a forma como eles interagem é perigoso!
De qualquer forma, dependendo do que você enviar, diferentes coisas ruins podem acontecer. Em um ponto, você pode obtê-lo para sair porque se trata de atribuir -1 bytes (que é visto como 0xffffffff - um número muito grande). Esta é uma negação de serviço que vai bater o telefone fora da rede temporariamente.
Durante minha palestra BlackHat, mantivemos o envio desta mensagem de negação de serviço a cada 10 segundos a um voluntário da platéia para mantê-lo fora da rede. Como uma conseqüência infeliz, as mensagens foram ficando cued em cima da rede e seu telefone ainda estava derrubado horas após a palestra. Ele já chegou de volta a funcionar.
Alan: Nota para os nossos leitores: quando Charlie diz que ele precisa de um voluntário, não fazer contato visual. Então, como você mandou a mensagem? Se você enviar SMS através da interface do iPhone ou outro fazer algo como e-mail, o "número de telefone @ attwireless" abordagem?
Charlie: Para enviar as mensagens SMS através da rede da operadora, tivemos um pequeno aplicativo no nosso iPhone ataque que iria falar com o modem GSM usando comandos AT. Para testar e encontrar os erros, nós usamos esta estrutura de injeção muito legal que o meu co-apresentador Collin Mulliner escreveu, o que permite testar implementações de mensagens SMS por apenas enviar dados sobre TCP. Isso evita que você tenha de enviar dados sobre a rede da operadora e não custa nada, e também permite que você teste várias mensagens muito rapidamente.
Alan: Então como você vai fazer a partir de uma negação de serviço para um full-on explorar?
Charlie: O pior caso tem a ver com a forma como o programa lida com mensagens concatenadas. Esta é uma forma de enviar mais de 140 bytes de cada vez. Você pode enviar uma mensagem longa de uma série de mensagens para o telefone reconstruí-lo em uma seqüência longa. Ele acessa uma matriz baseada em um valor a partir dos dados. No caso em que ele pensa que lê -1, acessa a memória antes da matriz, e não na matriz. Ao definir as coisas apenas para a direita e sendo complicado, você pode realmente aproveitar isso para ganhar o controle total do dispositivo.
O ataque inteiro leva há pouco mais de 500 mensagens, embora a vítima não sabe que eles estão sendo enviados, porque eles não aparecem no telefone. A maioria destas mensagens têm a ver com arrumar as coisas "apenas para a direita." Dezesseis deles realmente acessar o array fora dos limites.