Defesa de Mestrado de Bruno da Silva Melo

Título do Trabalho
Teste de Robustez de Implementações e Aplicações utilizando CoAP por meio de Técnicas de Fuzzing
Candidato(a)
Bruno da Silva Melo
Nível
Mestrado
Data
Add to Calender 2018-06-25 00:00:00 2018-06-25 00:00:00 Defesa de Mestrado de Bruno da Silva Melo Teste de Robustez de Implementações e Aplicações utilizando CoAP por meio de Técnicas de Fuzzing Sala 85 IC 2 INSTITUTO DE COMPUTAÇÃO mauroesc@ic.unicamp.br America/Sao_Paulo public
Horário
11h00
Local
Sala 85 IC 2
Orientador(a)
Paulo Lício de Geus
Banca Examinadora

Titulares  - Professores Doutores

Unidade/Instituição

Paulo Lício de Geus

IC/UNICAMP

André Ricardo Abed Grégio

DI/UFPR

Eliane Martins

IC/UNICAMP

Suplentes  - Professores Doutores

Unidade/Instituição

Leonardo Montecchi

IC/UNICAMP

Leonardo Barbosa e Oliveira

DCC/UFMG

 

Resumo

Constrained Application Protocol (CoAP) é um protocolo da camada de aplicação padronizado pelo IETF em 2014. Segue o estilo arquitetural RESTful e tem como objetivos simplicidade e baixa sobrecarga, para ser utilizado como facilitador da Internet das Coisas (IoT). Portanto, apesar de compartilhar características em comum com o HTTP, o protocolo possui codificação binária, roda sobre UDP etc.

Com o objetivo de estudar e aperfeiçoar na prática a segurança de software para IoT, nesta dissertação nós projetamos e implementamos uma ferramenta chamada FuzzCoAP. Este sistema consiste em um ambiente completo para o teste de aspectos de robustez e segurança de aplicações e implementações lado servidor do CoAP. Cinco técnicas de fuzzing caixa-preta foram implementadas: Aleatória, Aleatória Informada, Mutacional, Mutacional Inteligente e Geracional.

Nós utilizamos essa ferramenta para testar um conjunto de amostras selecionadas - aplicações CoAP rodando diferentes implementações do protocolo. Para selecionar essas amostras, nós conduzimos buscas online procurando implementações CoAP disponíveis e detalhes a elas relacionados, como estado de maturidade e popularidade. Nós selecionamos 25 amostras (aplicações), cobrindo 25 bibliotecas (implementações) diferentes de CoAP distribuídas em 8 linguagens de programação, incluindo amostras dos sistemas operacionais específicos para IoT RIOT OS e Contiki-NG.

FuzzCoAP foi capaz de detectar um total de 100 falhas em 14 das 25 amostras testadas. Resultados experimentais mostram uma média de 31,3% na taxa de falsos positivos e 87% em reprodutibilidade das falhas (considerando uma "contagem conservadora de falhas") e uma média de 1,9% na taxa de falsos positivos com 100% em reprodutibilidade de falhas considerando uma contagem "otimista". Campanhas de fuzzing são executadas na ordem de minutos para a maioria das técnicas (com uma média de 45 minutos por campanha). A exceção é o fuzzer geracional, que atinge uma média de 12 horas por campanha, dado que este utiliza uma quantidade consideravelmente maior de casos de teste que as outras técnicas.

Nós fornecemos uma discussão sobre a comparação dessas cinco técnicas de fuzzing no nosso cenário, e sobre o quão robustas (e seguras) as implementações de CoAP testadas são. Nossos dados indicam que as técnicas são complementares entre si, corroborando com outros estudos que sugerem a combinação de várias técnicas para atingir maior cobertura e encontrar mais vulnerabilidades.

Finalmente, toda a pesquisa foi conduzida com um esforço para ser tão aberta e reproduzível quanto poderíamos torná-la. Portanto, tanto o código-fonte do FuzzCoAP como a coleção de amostras estão livremente acessíveis para o público. Também, para maximizar o impacto real na segurança de IoT, todas as falhas foram reportadas aos mantenedores das bibliotecas. Algumas já foram corrigidas, enquanto outras estão sendo manejadas no presente momento.