Fernando Mercês Postado Agosto 22, 2017 em 18:45 Compartilhar Postado Agosto 22, 2017 em 18:45 Hoje eu vi os slides de uma palestra que rolou no último encontro da galera do C/C++ Brasil sobre o gcc. Tem muita coisa interessante, mas curti principalmente conhecer as variantes das opções de proteção de pilha. É meio raro encontrar material em Português nesse nível, então decidi compartilhar aqui o trecho em questão: Citar Stack protector Proteção contra buffer overflows. Adiciona um "canário" (um número inteiro aleatório) na stack logo depois do ponteiro de retorno de função. Este "canário" é verificado quando a função retorna; se mudou o programa é abortado. Ataques de buffer overflow precisam mudar este valor pois eles escrevem além do final do buffer. Isso adiciona um custo, e colocar em todas as funções pode ser demais; para isso tem: -fstack-protector-all - Todas as funções; custoso e para paranóicos. -fstack-protector - Qualquer função que tenha um buffer de caracteres de 8 bytes ou mais. Alguns usam menos (4bytes) com --param=ssp-buffer-size=N. -fstack-protector-strong - Todas as funções que declaram um array local, inclusive arrays em structs ou unions. O Gianni Rossi, autor da palestra, compartilhou os slides completos! Link para o comentário Compartilhar em outros sites More sharing options...
Eduardo Bittencourt Postado Agosto 28, 2017 em 11:00 Compartilhar Postado Agosto 28, 2017 em 11:00 Interessante, ao executar o programa com buffer overflow já retorna a seguinte mensagem *** stack smashing detected *** Já para o efeito contrário, no qual se quer realizar um ataque buffer overflow para testes, pode ter que desativar algumas proteções -fno-stack-protector para desativar o canário echo 0 > /proc/sys/kernel/randomize_va_space para desativar o aslr Link para o comentário Compartilhar em outros sites More sharing options...
thiago Postado Outubro 28, 2017 em 06:36 Compartilhar Postado Outubro 28, 2017 em 06:36 Pô, valeu por compartilhar isso. Eu baixei aqui pra olhar mais tarde. Eu não entendi muito bem a parte que ele fala Em 22/08/2017 em 15:45, Fernando Mercês disse: Ataques de buffer overflow precisam mudar este valor pois eles escrevem além do final do buffer. Na verdade, acho que os ataques de buffer overflow não podem mudar este valor, pois se mudarem, o stack smashing vai ser detectado e o ataque não terá sucesso. Link para o comentário Compartilhar em outros sites More sharing options...
Fernando Mercês Postado Outubro 28, 2017 em 15:59 Autor Compartilhar Postado Outubro 28, 2017 em 15:59 Acho que foi isso que o autor quis dizer, @thiago. Quem está atacando teria que bypassar, ou o ataque não terá sucesso. Link para o comentário Compartilhar em outros sites More sharing options...
thiago Postado Outubro 28, 2017 em 16:43 Compartilhar Postado Outubro 28, 2017 em 16:43 41 minutos atrás, Fernando Mercês disse: Acho que foi isso que o autor quis dizer, @thiago. Quem está atacando teria que bypassar, ou o ataque não terá sucesso. Acho que eu viajei um pouco nisso, hehehe. Valeu de novo por compartilhar com a galera. Eu estou bolando uma apresentação sobre isso e esse material vai servir pra caramba. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Arquivado
Este tópico foi arquivado e está fechado para novas respostas.