a7.1 - falhas em programas - vinícius serafim - falhas em programas.pdf · prof. vinícius...

24
Falhas em Programas Vinícius da Silveira Serafim professor@serafim.eti.br

Upload: dangque

Post on 02-Dec-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: A7.1 - Falhas em programas - Vinícius Serafim - Falhas em programas.pdf · Prof. Vinícius Serafim - fim.eti.br Corrigindo falhas Qual é o melhor? Um programa em que foram econtradas

Falhas em ProgramasVinícius da Silveira Serafim

[email protected]

Page 2: A7.1 - Falhas em programas - Vinícius Serafim - Falhas em programas.pdf · Prof. Vinícius Serafim - fim.eti.br Corrigindo falhas Qual é o melhor? Um programa em que foram econtradas

Prof. Vinícius Serafim - http://professor.serafim.eti.br

Erro, Falha e Defeito

ErroFalha (PFLEEGER 2006, p. 100)

“O que o desenvolvedor vê”Falha leva ao defeito

Defeito (PFLEEGER 2006, p. 100)Desvio da especificação do sistema“O que o usuário vê”

Page 3: A7.1 - Falhas em programas - Vinícius Serafim - Falhas em programas.pdf · Prof. Vinícius Serafim - fim.eti.br Corrigindo falhas Qual é o melhor? Um programa em que foram econtradas

Prof. Vinícius Serafim - http://professor.serafim.eti.br

Corrigindo falhas

Qual é o melhor?Um programa em que foram econtradas e corrigidas 100 falhas; ouUm programa em que foram econtradas e corrigidas 20 falhas.

Um programa com muitas falhas iniciais tende a ter muitas outras por serem descobertas. (PFLEEGER 2006, p. 100)

Page 4: A7.1 - Falhas em programas - Vinícius Serafim - Falhas em programas.pdf · Prof. Vinícius Serafim - fim.eti.br Corrigindo falhas Qual é o melhor? Um programa em que foram econtradas

Prof. Vinícius Serafim - http://professor.serafim.eti.br

Patch“Torna o sistema mais inseguro pois frequentemente introduz novas falhas”(PFLEEGER 2006, p. 100)

Foco na falha em si e não no seu contextoNem todos os efeitos da falha são conhecidosCorreção da falha causa outros problemas em outras partes do códigoCorreção inadequada por questões de

Page 5: A7.1 - Falhas em programas - Vinícius Serafim - Falhas em programas.pdf · Prof. Vinícius Serafim - fim.eti.br Corrigindo falhas Qual é o melhor? Um programa em que foram econtradas

Prof. Vinícius Serafim - http://professor.serafim.eti.br

Falhas maliciosas, ou nãoNão maliciosas

Não há intenção de induzir uma falhaSão acidentais, resultado de descuido

MaliciosasPropositaisCuidadosamente elaboradas

Independente do caso, temos que tratar seus efeitos (PFLEEGER 2006, p. 101)

Page 6: A7.1 - Falhas em programas - Vinícius Serafim - Falhas em programas.pdf · Prof. Vinícius Serafim - fim.eti.br Corrigindo falhas Qual é o melhor? Um programa em que foram econtradas

Prof. Vinícius Serafim - http://professor.serafim.eti.br

Para pensarmos

“Erros humanos não intencionais são mais numerosos e causam muito mais estrago.” “Falsas soluções de segurança impedem o progresso real na direção de programação mais segura.” (GASSER 1988, em PFLEEGER, 2006 p. 102) “É quase impossível garantir que um programa faça precisamente o que seu projetista ou usuário esperam que faça e nada mais.” (PFLEEGER 2006, p. 102)

Page 7: A7.1 - Falhas em programas - Vinícius Serafim - Falhas em programas.pdf · Prof. Vinícius Serafim - fim.eti.br Corrigindo falhas Qual é o melhor? Um programa em que foram econtradas

Erros de programação não maliciosos

Page 8: A7.1 - Falhas em programas - Vinícius Serafim - Falhas em programas.pdf · Prof. Vinícius Serafim - fim.eti.br Corrigindo falhas Qual é o melhor? Um programa em que foram econtradas

Prof. Vinícius Serafim - http://professor.serafim.eti.br

Estouro de buffer

Em linguagem C

?

Buffer Overflow

100 bytes120 bytes

Overflow!

char buffer[100];

buffer[100] = ‘B’;

buffer[i] = ‘B’;

Page 9: A7.1 - Falhas em programas - Vinícius Serafim - Falhas em programas.pdf · Prof. Vinícius Serafim - fim.eti.br Corrigindo falhas Qual é o melhor? Um programa em que foram econtradas

Prof. Vinícius Serafim - http://professor.serafim.eti.br

Buffer Overflow

O que pode estar depois do buffer?Dados ou código do usuárioDados ou código do sistema

O que o atacante pode fazer?

Page 10: A7.1 - Falhas em programas - Vinícius Serafim - Falhas em programas.pdf · Prof. Vinícius Serafim - fim.eti.br Corrigindo falhas Qual é o melhor? Um programa em que foram econtradas

Prof. Vinícius Serafim - http://professor.serafim.eti.br

Mediação Incompleta

http://site.com/ordem.php?prod=3928&qtd=10&preun=30&envio=sedex

http://site.com/ordem.php?prod=3928&qtd=10&preun=15&envio=sedex

Page 11: A7.1 - Falhas em programas - Vinícius Serafim - Falhas em programas.pdf · Prof. Vinícius Serafim - fim.eti.br Corrigindo falhas Qual é o melhor? Um programa em que foram econtradas

Prof. Vinícius Serafim - http://professor.serafim.eti.br

Mediação Incompleta

Falha na checagem dos parâmetros recebidos do usuário ou de outras fontes não controláveis

Ausência de checagemChecagem realizada apenas no lado do cliente (client-side). Ex.: JavaScript e campos escondidos ou bloqueados

Page 12: A7.1 - Falhas em programas - Vinícius Serafim - Falhas em programas.pdf · Prof. Vinícius Serafim - fim.eti.br Corrigindo falhas Qual é o melhor? Um programa em que foram econtradas

Códigos Maliciosos Genéricos

Afetam usuários de sistemas de forma indiscriminada

Page 13: A7.1 - Falhas em programas - Vinícius Serafim - Falhas em programas.pdf · Prof. Vinícius Serafim - fim.eti.br Corrigindo falhas Qual é o melhor? Um programa em que foram econtradas

Prof. Vinícius Serafim - http://professor.serafim.eti.br

VírusCapaz de se autorreplicarInfecta programas não maliciosos

Programa original

Vírus

Vírus

Programa original

Page 14: A7.1 - Falhas em programas - Vinícius Serafim - Falhas em programas.pdf · Prof. Vinícius Serafim - fim.eti.br Corrigindo falhas Qual é o melhor? Um programa em que foram econtradas

Prof. Vinícius Serafim - http://professor.serafim.eti.br

Porém não apenas programas

DocumentosSetor de boot dos discosCódigo residente em memória

Page 15: A7.1 - Falhas em programas - Vinícius Serafim - Falhas em programas.pdf · Prof. Vinícius Serafim - fim.eti.br Corrigindo falhas Qual é o melhor? Um programa em que foram econtradas

Prof. Vinícius Serafim - http://professor.serafim.eti.br

Como encontrar um vírus?

Assinatura do vírusUm padrão particular no seu códigoUm padrão de armazenamentoUm padrão de execução

Vírus polimórficosTrocam sua aparênciaCódigos equivalentes ou mesmo cifrados

Page 16: A7.1 - Falhas em programas - Vinícius Serafim - Falhas em programas.pdf · Prof. Vinícius Serafim - fim.eti.br Corrigindo falhas Qual é o melhor? Um programa em que foram econtradas

Prof. Vinícius Serafim - http://professor.serafim.eti.br

O que um vírus pode fazer?

“O dano é limitado apenas pela criatividade do autor do vírus.” (PFLEEGER 2006, p. 126)

Page 17: A7.1 - Falhas em programas - Vinícius Serafim - Falhas em programas.pdf · Prof. Vinícius Serafim - fim.eti.br Corrigindo falhas Qual é o melhor? Um programa em que foram econtradas

Prof. Vinícius Serafim - http://professor.serafim.eti.br

Para pensarmos (PFLEEGER 2006, p. 126)

“Vírus afetam somente sistemas Microsoft Windows.”“Vírus podem modificar arquivos escondidos ou somete-leitura.”“Vírus só se espalham por discos ou e-mails.”“Vírus não podem infectar hardware.”

✔�

Page 18: A7.1 - Falhas em programas - Vinícius Serafim - Falhas em programas.pdf · Prof. Vinícius Serafim - fim.eti.br Corrigindo falhas Qual é o melhor? Um programa em que foram econtradas

Prof. Vinícius Serafim - http://professor.serafim.eti.br

Outros códigos maliciosos

Worm (verme)Se espalha pela rede e existe de forma independente de um outro arquivo ou programa

Rabbit (coelho)Vírus ou Worm que se autorreplica sem limite

Page 19: A7.1 - Falhas em programas - Vinícius Serafim - Falhas em programas.pdf · Prof. Vinícius Serafim - fim.eti.br Corrigindo falhas Qual é o melhor? Um programa em que foram econtradas

Prof. Vinícius Serafim - http://professor.serafim.eti.br

Outros códigos maliciososCavalo-de-tróia

Bomba lógica

Page 20: A7.1 - Falhas em programas - Vinícius Serafim - Falhas em programas.pdf · Prof. Vinícius Serafim - fim.eti.br Corrigindo falhas Qual é o melhor? Um programa em que foram econtradas

Códigos Maliciosos Especializados

Escritos com um objetivo específico e especificamente para um sistema, uma aplicação

Page 21: A7.1 - Falhas em programas - Vinícius Serafim - Falhas em programas.pdf · Prof. Vinícius Serafim - fim.eti.br Corrigindo falhas Qual é o melhor? Um programa em que foram econtradas

Prof. Vinícius Serafim - http://professor.serafim.eti.br

Trapdoor ou Backdoor

“Um ponto de entrada não documentado”Muito usado por desenvolvedores

E depois de esquecidos vão parar em ambiente de produçãoAlgumas vezes deixados intencionalmente

Visando uma futura manutençãoOu visando acesso não autorizado

Page 22: A7.1 - Falhas em programas - Vinícius Serafim - Falhas em programas.pdf · Prof. Vinícius Serafim - fim.eti.br Corrigindo falhas Qual é o melhor? Um programa em que foram econtradas

Prof. Vinícius Serafim - http://professor.serafim.eti.br

RootKits

Um programa ou conjunto de programasRealiza atividades como

Esconder processos não autorizadosEsconder arquivos de um invasor

O RootKit intercepta e filtra os resultados dos comandos do sistema

Page 23: A7.1 - Falhas em programas - Vinícius Serafim - Falhas em programas.pdf · Prof. Vinícius Serafim - fim.eti.br Corrigindo falhas Qual é o melhor? Um programa em que foram econtradas

Prof. Vinícius Serafim - http://professor.serafim.eti.br

KeyloggerCapturar o que é digitado no tecladoPrograma ou HardwareÀs vezes é instalado pelo atacante em seu próprio computador

Page 24: A7.1 - Falhas em programas - Vinícius Serafim - Falhas em programas.pdf · Prof. Vinícius Serafim - fim.eti.br Corrigindo falhas Qual é o melhor? Um programa em que foram econtradas

Prof. Vinícius Serafim - http://professor.serafim.eti.br

Outros códigos maliciosos

Ilusões da InterfaceMan-in-the-MiddleEscalada de privilégios