Robustness testing of CoAP implementations and applications through : Teste de robustez de implementações e aplicações utilizando CoAP por meio de técnicas de fuzzing
Autor(a) principal: | |
---|---|
Data de Publicação: | 2018 |
Tipo de documento: | Dissertação |
Idioma: | por |
Título da fonte: | Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) |
Texto Completo: | https://hdl.handle.net/20.500.12733/1634158 |
Resumo: | Orientador: Paulo Lício de Geus |
id |
UNICAMP-30_10355177dd80fde59d11d2817e19611b |
---|---|
oai_identifier_str |
oai::1038215 |
network_acronym_str |
UNICAMP-30 |
network_name_str |
Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) |
repository_id_str |
|
spelling |
Robustness testing of CoAP implementations and applications through : Teste de robustez de implementações e aplicações utilizando CoAP por meio de técnicas de fuzzingTeste de robustez de implementações e aplicações utilizando CoAP por meio de técnicas de fuzzingSoftware - TestesSoftware - SegurançaEngenharia de software - Injeção de falhasInternet das coisasFuzzing - TechniqueComputer software - TestingComputer software - SecuritySoftware engineering - Fault injectionInternet of thingsFuzzing - TécnicaOrientador: Paulo Lício de GeusDissertação (mestrado) - Universidade Estadual de Campinas, Instituto de ComputaçãoResumo: 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 momentoAbstract: The Constrained Application Protocol (CoAP) is an application-layer protocol standardized by the IETF in 2014. It follows the RESTful architectural style and aims for simplicity and low overhead, in order to be used as an enabler of the Internet of Things (IoT). Thus, even though it has features in common with HTTP, it is binary-encoded, runs over UDP etc. With the goal of studying and improving practical IoT software security, in this dissertation we design and implement a tool called FuzzCoAP. It is a system comprising a complete environment for testing robustness and security aspects of CoAP server-side implementations and applications. Five black-box fuzzing techniques were implemented in FuzzCoAP: Random, Informed Random, Mutational, Smart Mutational and Generational fuzzers. We use this tool to test a set of selected samples¿CoAP applications running different implementations of the protocol. To select these samples, we conducted online searches looking for available CoAP implementations and related details, such as maturity status and popularity. We selected 25 samples (applications), covering 25 different CoAP libraries (implementations) distributed across 8 programming languages, including samples from IoT-specific operating systems RIOT OS and Contiki-NG. FuzzCoAP was able to detect a total of 100 failures in 14 out of the 25 tested samples. Experimental results show an average of 31.3% false positive rate and 87% failure reproducibility when considering a "conservative failure counting" and 1.9% false positive rate with 100% failure reproducibility for an "optimistic" one. Fuzzing campaigns are executed in the order of minutes for most techniques (with an average of 45 minutes per campaign). The exception is the generational fuzzer, which attains an average of 12 hours per campaign, given it uses a considerably larger amount of test cases than the other techniques. We provide a discussion on how those five fuzzing techniques compare to each other in our scenario, and how robust (and secure) the CoAP implementations targeted are. Our data indicates the techniques are complementary to each other, corroborating with other studies suggesting that several techniques should be combined to achieve greater coverage and find more vulnerabilities. Finally, the entire research was conducted with an effort to be as open and reproducible as we could make it. Thus, both FuzzCoAP's source-code as well as the collection of samples are freely available to the public. Likewise, to maximize the real-world impact on IoT security, all failures were reported to library maintainers. Some have already been fixed, while others are currently being handled, as of this text was writtenMestradoCiência da ComputaçãoMestre em Ciência da ComputaçãoCNPQ132826/2015-1[s.n.]Geus, Paulo Lício de, 1956-Grégio, André Ricardo AbedMontecchi, LeonardoUniversidade Estadual de Campinas (UNICAMP). Instituto de ComputaçãoPrograma de Pós-Graduação em Ciência da ComputaçãoUNIVERSIDADE ESTADUAL DE CAMPINASMelo, Bruno da Silva, 1990-20182018-06-25T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdf1 recurso online (93 p.) : il., digital, arquivo PDF.https://hdl.handle.net/20.500.12733/1634158MELO, Bruno da Silva. Robustness testing of CoAP implementations and applications through: Teste de robustez de implementações e aplicações utilizando CoAP por meio de técnicas de fuzzing. 2018. 1 recurso online (93 p.) Dissertação (mestrado) - Universidade Estadual de Campinas, Instituto de Computação, Campinas, SP. Disponível em: https://hdl.handle.net/20.500.12733/1634158. Acesso em: 3 set. 2024.https://repositorio.unicamp.br/acervo/detalhe/1038215Requisitos do sistema: Software para leitura de arquivo em PDFporreponame:Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP)instname:Universidade Estadual de Campinas (UNICAMP)instacron:UNICAMPinfo:eu-repo/semantics/openAccess2018-09-06T10:08:00Zoai::1038215Biblioteca Digital de Teses e DissertaçõesPUBhttp://repositorio.unicamp.br/oai/tese/oai.aspsbubd@unicamp.bropendoar:2018-09-06T10:08Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) - Universidade Estadual de Campinas (UNICAMP)false |
dc.title.none.fl_str_mv |
Robustness testing of CoAP implementations and applications through : Teste de robustez de implementações e aplicações utilizando CoAP por meio de técnicas de fuzzing Teste de robustez de implementações e aplicações utilizando CoAP por meio de técnicas de fuzzing |
title |
Robustness testing of CoAP implementations and applications through : Teste de robustez de implementações e aplicações utilizando CoAP por meio de técnicas de fuzzing |
spellingShingle |
Robustness testing of CoAP implementations and applications through : Teste de robustez de implementações e aplicações utilizando CoAP por meio de técnicas de fuzzing Melo, Bruno da Silva, 1990- Software - Testes Software - Segurança Engenharia de software - Injeção de falhas Internet das coisas Fuzzing - Technique Computer software - Testing Computer software - Security Software engineering - Fault injection Internet of things Fuzzing - Técnica |
title_short |
Robustness testing of CoAP implementations and applications through : Teste de robustez de implementações e aplicações utilizando CoAP por meio de técnicas de fuzzing |
title_full |
Robustness testing of CoAP implementations and applications through : Teste de robustez de implementações e aplicações utilizando CoAP por meio de técnicas de fuzzing |
title_fullStr |
Robustness testing of CoAP implementations and applications through : Teste de robustez de implementações e aplicações utilizando CoAP por meio de técnicas de fuzzing |
title_full_unstemmed |
Robustness testing of CoAP implementations and applications through : Teste de robustez de implementações e aplicações utilizando CoAP por meio de técnicas de fuzzing |
title_sort |
Robustness testing of CoAP implementations and applications through : Teste de robustez de implementações e aplicações utilizando CoAP por meio de técnicas de fuzzing |
author |
Melo, Bruno da Silva, 1990- |
author_facet |
Melo, Bruno da Silva, 1990- |
author_role |
author |
dc.contributor.none.fl_str_mv |
Geus, Paulo Lício de, 1956- Grégio, André Ricardo Abed Montecchi, Leonardo Universidade Estadual de Campinas (UNICAMP). Instituto de Computação Programa de Pós-Graduação em Ciência da Computação UNIVERSIDADE ESTADUAL DE CAMPINAS |
dc.contributor.author.fl_str_mv |
Melo, Bruno da Silva, 1990- |
dc.subject.por.fl_str_mv |
Software - Testes Software - Segurança Engenharia de software - Injeção de falhas Internet das coisas Fuzzing - Technique Computer software - Testing Computer software - Security Software engineering - Fault injection Internet of things Fuzzing - Técnica |
topic |
Software - Testes Software - Segurança Engenharia de software - Injeção de falhas Internet das coisas Fuzzing - Technique Computer software - Testing Computer software - Security Software engineering - Fault injection Internet of things Fuzzing - Técnica |
description |
Orientador: Paulo Lício de Geus |
publishDate |
2018 |
dc.date.none.fl_str_mv |
2018 2018-06-25T00:00:00Z |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/masterThesis |
format |
masterThesis |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
https://hdl.handle.net/20.500.12733/1634158 MELO, Bruno da Silva. Robustness testing of CoAP implementations and applications through: Teste de robustez de implementações e aplicações utilizando CoAP por meio de técnicas de fuzzing. 2018. 1 recurso online (93 p.) Dissertação (mestrado) - Universidade Estadual de Campinas, Instituto de Computação, Campinas, SP. Disponível em: https://hdl.handle.net/20.500.12733/1634158. Acesso em: 3 set. 2024. |
url |
https://hdl.handle.net/20.500.12733/1634158 |
identifier_str_mv |
MELO, Bruno da Silva. Robustness testing of CoAP implementations and applications through: Teste de robustez de implementações e aplicações utilizando CoAP por meio de técnicas de fuzzing. 2018. 1 recurso online (93 p.) Dissertação (mestrado) - Universidade Estadual de Campinas, Instituto de Computação, Campinas, SP. Disponível em: https://hdl.handle.net/20.500.12733/1634158. Acesso em: 3 set. 2024. |
dc.language.iso.fl_str_mv |
por |
language |
por |
dc.relation.none.fl_str_mv |
https://repositorio.unicamp.br/acervo/detalhe/1038215 Requisitos do sistema: Software para leitura de arquivo em PDF |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.format.none.fl_str_mv |
application/pdf 1 recurso online (93 p.) : il., digital, arquivo PDF. |
dc.publisher.none.fl_str_mv |
[s.n.] |
publisher.none.fl_str_mv |
[s.n.] |
dc.source.none.fl_str_mv |
reponame:Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) instname:Universidade Estadual de Campinas (UNICAMP) instacron:UNICAMP |
instname_str |
Universidade Estadual de Campinas (UNICAMP) |
instacron_str |
UNICAMP |
institution |
UNICAMP |
reponame_str |
Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) |
collection |
Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) |
repository.name.fl_str_mv |
Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) - Universidade Estadual de Campinas (UNICAMP) |
repository.mail.fl_str_mv |
sbubd@unicamp.br |
_version_ |
1809189128457158656 |