Pergunta

Quero dizer, em sistemas operacionais ou em seus aplicativos.A única maneira que consigo pensar é examinar os binários para o uso de funções perigosas como strcpy() e tentar explorá-los.Embora com melhorias no compilador, como a opção /GS do Visual Studio, essa possibilidade deva ser coisa do passado.Ou estou enganado?

Que outras maneiras as pessoas usam para encontrar vulnerabilidades?Basta carregar seu destino em um depurador, enviar uma entrada inesperada e ver o que acontece.Este parece ser um processo longo e tedioso.

Alguém poderia recomendar alguns bons livros ou sites sobre esse assunto?

Desde já, obrigado.

Foi útil?

Solução

Existem duas questões principais envolvidas na "Segurança do lado do cliente".

O cliente mais comum explorado hoje é o navegador na forma de "Dirigir por downloads".Na maioria das vezes, as vulnerabilidades de corrupção de memória são as culpadas.Objetos ActiveX com têm sido um caminho comum em sistemas Windows e Homem do Machado é um bom difusor ActiveX.

Em termos de sistemas de proteção de memória, o /GS é um canário e não é o fim de tudo para interromper estouros de buffer.Seu objetivo é apenas proteger overflows baseados em pilha que tentam substituir o endereço de retorno e controlar o EIP.Zonas NX e canários são coisas boas, mas o ASLR pode ser muito melhor para impedir explorações de corrupção de memória e nem todas as implementações do ASLR são igualmente seguras.Mesmo com todos esses três sistemas, você ainda será hackeado.O IE 8 rodando no Windows 7 tinha tudo isso e foi um dos primeiros a ser hackeado no pwn2own e aqui está como eles fizeram isso.Envolveu encadear uma vulnerabilidade Heap Overflow e uma vulnerabilidade Dangling Pointer.

O problema com a "segurança do lado do cliente" é CWE-602:Aplicação da segurança do lado do servidor no lado do cliente são criados quando o lado do servidor confia ao cliente recursos secretos (como senhas) ou para enviar relatórios sobre informações confidenciais, como o Pontuação dos jogadores em um jogo flash.

A melhor maneira de procurar problemas do lado do cliente é observar o tráfego.WireShark é o melhor para protocolos cliente/servidor que não sejam de navegador.No entanto Adulteração de dados é de longe a melhor ferramenta que você pode usar para plataformas baseadas em navegador, como Flash e JavaScript.Cada caso será diferente, ao contrário dos buffer overflows, onde é fácil ver a falha do processo, os problemas de confiança do lado do cliente têm tudo a ver com o contexto e é necessário um ser humano qualificado para observar o tráfego da rede para descobrir o problema.

Às vezes, programadores tolos codificam uma senha em seus aplicativos.É trivial descompilar o aplicativo para obter os dados.A descompilação do Flash é muito limpa e você ainda obterá nomes completos de variáveis ​​e comentários de código.Outra opção é usar um depurador como o OllyDBG para tentar encontrar os dados na memória.IDA-Pro é o melhor descompilador para aplicações C/C++.

Outras dicas

Escrevendo Código Seguro, 2ª Edição, inclui um pouco sobre modelagem e teste de ameaças e muito mais.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top