Uma técnica para detectar fraquezas de código em programas C.
Ano de defesa: | 2022 |
---|---|
Autor(a) principal: | |
Orientador(a): | |
Banca de defesa: | |
Tipo de documento: | Tese |
Tipo de acesso: | Acesso aberto |
Idioma: | por |
Instituição de defesa: |
Universidade Federal de Campina Grande
Brasil Centro de Engenharia Elétrica e Informática - CEEI PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO UFCG |
Programa de Pós-Graduação: |
Não Informado pela instituição
|
Departamento: |
Não Informado pela instituição
|
País: |
Não Informado pela instituição
|
Palavras-chave em Português: | |
Link de acesso: | http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/27229 |
Resumo: | O investimento de empresas na implementação de meios para garantir a segurança em sistemas de software nos faz perceber tamanha importância deste tema. Todavia, garantir esta característica não é uma atividade trivial. Vários sistemas, como o Linux e OpenSSL, são implementados utilizando a linguagem C, e uma vulnerabilidade nesses sistemas pode impactar muitos usuários. No entanto, apesar dos esforços em aplicar técnicas e ferramentas com o objetivo de tornar sistemas de software mais seguros, esses sistemas ainda apresentam fraquezas de código, levando a códigos vulneráveis. O número de vulnerabilidades repor- tadas aumentou nos últimos anos, onde mais de 18 mil vulnerabilidades foram reportadas ao National Vulnerability Database (NVD) em 2020. Ferramentas de análise estática, como Flawfinder e Cppcheck, podem ajudar neste problema, dando indícios de alguns tipos de fraquezas. No entanto, este tipo de ferramenta apresenta uma alta taxa de falsos positivos, ou seja, um problema relatado em um programa quando nenhum problema realmente existe. Em síntese, neste trabalho apresentamos uma técnica que combina análise estática com teste de software para detectar fraquezas introduzidas no código-fonte durante os estágios iniciais de desenvolvimento de programas C. Consideramos que identificar problemas antecipadamente reduz o custo de correção. Nós implementamos esta técnica em um framework chamado Weaknesses Testing ou WTT. Por fim, nós realizamos dois estudos para avaliar a aplicação prática da técnica proposta. O primeiro estudo avaliou a técnica proposta com programas reais de código aberto, com o objetivo de detectar novas fraquezas. Nós avaliamos 103 warnings de 6 projetos diferentes e detectamos 22 fraquezas de três tipos: Buffer Overflow, Format String e Integer Overflow. Por sua vez, no segundo estudo avaliamos a técnica com um conjunto de exemplos de vulnerabilidades conhecidas. Nós avaliamos um total de 2.834 funções do conjunto de dados Juliet Test Suite com fraquezas CWE-190: Integer Overflow or Wraparound, CWE-191: Integer Underflow (Wrap or Wraparound) e CWE-369: Divide By Zero. Os resultados mostram evidências de que nossa técnica pode ajudar os desen- volvedores a antecipar a detecção de fraquezas em programas C, reduzindo a ocorrência de vulnerabilidade em versões operacionais. |