MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

Travamentos exploráveis

Esta tradução está incompleta. Por favor, ajude a traduzir este artigo.

Este artigo ajudará você a determinar se um travamento é exploravel, encontrar falhas que são exploráveis para corrigir falhas exploráveis.

O que é um travamento explorável?

Um relatório de falha do seu depurador, seu SO, ou  Status de travamento Mozilla pode dizer muito sobre a existência ou nao se um travamento é potencialmente explorável. Você precisa olhar principalmente para três coisas , nessa ordem :

  1. Analise  a estrutura superior do rastreamento de pilha. Se você ver  um endereço hexadecimal como 0x292c2830 em vez de um nome de função como nsListBoxBodyFrame::GetRowCount no topo da pilha, o bug motivou o programa para transferir o controle para um "Aleatória" parte da memoória que nao faz parte do programa. Essas interrupções  são quase sempre possiveis de serem exploradas para executar um código arbitrário.
  2. Olhe o motivo do travamento, será normalmente algo como "KERN_PROTECTION_FAILURE (0x0002) em 0x00000000". Este é normalmente localizado à direita acima do rastreamento de pilha. O último numero, neste caso 0x00000000, é  o endereço de memória que o Firefox foi impedido de acessar. Se o  endereço é sempre zero (ou próximo de zero, como 0x0000001c), provavelmente é um bug de referência nula.Estes erros fazem com que o navegador trave, mas fazem isso de forma previsível, de modo que nao são exploráveis. A maioria dos travamentos se enquadram nessa categoria.
  3. Verifique o  comprimento do rastreamento de pilha. Se for mais de 300 funçoes no tempo, é provavel que seja um acidente de recursão demais. Como de referência nula, essas falhas não são exploráveis.

Qualquer outro travamento onde o Firefox  tenta usar a memória que nao têm acesso indica algum tipo de erro de segurança de memória. Essas interrupções podem muitas vezes serem exploradas para executar código arbitrário, mas você nao pode ser tão certo como no caso de ver um endereço falso no topo da pilha na etapa 1.

Procurando travamentos exploráveis

Travamentos exploráveis são frequentemente descobertos através de testes normais e uso, quando os desenvolvedores reconhecem uma pilha de travamento em gdb ou submetidos a um erro que pode ser explorado.

Além disso, os desenvolvedores Mozilla fazem uso pesado de duas ferramentas  em particular para encontrar situaçoes exploráveis antes que eles apareçam em relatórios de falhas exploráveis.

A primeira ferramenta é o AddressSanitizer (ASAN). Há um  artigo MDN  documentando seu uso com  projetos Mozilla.

A outra ferramenta é o Valgrind. Há um artigo no MDN documentando seu uso com projetos Mozilla.

Próximos passos

Uma vez que você tenha  determinado que a falha  é potencialmente explorável , tome  as seguintes medidas. Se você precisar de ajuda com qualquer um das etapas  (Por exempl talvez necessite previlégios bugzilla) Envie um email security@mozilla.org.

  1. Certifique-se que o erro é no arquivo.
  2. Marque o erro como segurança sensivel colocando o erro no grupo de "Segurança Sensivel". Faça isso antes de realizar comentários ou tomar ações que exponha publicamente a exploração.
  3. Coloque uma classificação de segurança grave nas palavras chaves do erro.Se você nao tiver certeza de qual classificação dar, coloque na mais alta de modo que o erro obtenha mais atençao.
  4. Explique em um comentário por qual razão a questão parecer ser explorável.

Outras ferramentas

A Apple tem uma ferramenta chamada "crashwrangler" que ainda é mantida desde 2012. Há pouca informação pública sobre ela, e é dificil encontrar mesmo no site de desenvolvedor Apple. Para obtê-lo vá em Seçao de Downloads Do Centro de Desenvolvimento Apple  -> Outros Downloads -> procure por "crashwrangler".

A Microsoft lançou uma ferramenta  de extensão de depurador em 2009 chamado "!exploitable". Ele não foi atualizado desde 2009.

Veja também

Etiquetas do documento e colaboradores

 Colaboradores desta página: SkyKnight
 Última atualização por: SkyKnight,