Please use this identifier to cite or link to this item: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/27229
Title: Uma técnica para detectar fraquezas de código em programas C.
Other Titles: A technique for detecting code weaknesses in C programs.
???metadata.dc.creator???: MUNIZ, Raphael de Carvalho.
???metadata.dc.contributor.advisor1???: ANDRADE, Wilkerson de Lucena.
???metadata.dc.contributor.advisor2???: MACHADO, Patricia Duarte de Lima.
???metadata.dc.contributor.referee1???: GOMES, Reinaldo Cézar de Morais.
???metadata.dc.contributor.referee2???: SOUTO, Sabrina de Figueiredo.
???metadata.dc.contributor.referee3???: ZORZO, Avelino Francisco.
Keywords: Engenharia de Software;Teste de Software;Programas C;Fraqueza;Segurança – Sistemas de Software;Software Engineering;Software Testing;C programs;Weakness;Security – Software Systems
Issue Date: 4-Mar-2022
Publisher: Universidade Federal de Campina Grande
Citation: MUNIZ, Raphael de Carvalho. Uma técnica para detectar fraquezas de código em programas C. 2022. 148 fl. Tese (Doutorado em Ciência da Computação), Programa de Pós-Graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Campina Grande, Paraíba, Brasil, 2022. Disponível em: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/27229
???metadata.dc.description.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.
Abstract: Companies’ investment in implementing means to ensure security in software systems makes us realize the importance of this topic. However, ensuring this feature is not a trivial activity. Several critical systems, such as Linux and OpenSSL, are implemented using the C language, and a vulnerability in these systems may impact many users. However, despite the efforts to apply techniques and tools to make software systems more secure, these systems still have code weaknesses, leading to vulnerable code. The number of reported vulnera- bilities has increased in the last years, where more than 18 thousand vulnerabilities were reported to the National Vulnerability Database (NVD) in 2020. Static analysis tools, such as Flawfinder and Cppcheck, may help in this problem, reporting some kinds of weaknesses. However, this kind of tool presents a high rate of false positives, i.e., an issue reported in a program when no problem actually exists. In summary, in this work we present a technique that combines static analysis with software testing to detect weaknesses introduced in the code during earlier development stages of C programs. We believe the earlier the weakness is detected, the lower is the cost to fix it. We implemented this technique in a framework named Weaknesses Testing or WTT. Finally, we carried out two studies to evaluate the prac- tical application of the proposed technique. The first study evaluated the proposed technique with real open-source programs to detect new weaknesses. We evaluated 103 warnings from 6 different projects and detected 22 weaknesses of three kinds: Buffer Overflow, Format String, and Integer Overflow. On the other hand, in the second study, we evaluated the technique with a set of examples of known vulnerabilities. We evaluated a total of 2,834 functions from the Juliet Test Suite dataset with weaknesses CWE-190: Integer Overflow or Wraparound, CWE-191: Integer Underflow (Wrap or Wraparound), and CWE-369: Divide By Zero. The results show evidence that our technique can help developers anticipate the detection of weaknesses in C programs, reducing vulnerability in operational versions.
Keywords: Engenharia de Software
Teste de Software
Programas C
Fraqueza
Segurança – Sistemas de Software
Software Engineering
Software Testing
C programs
Weakness
Security – Software Systems
???metadata.dc.subject.cnpq???: Ciência da Computação
URI: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/27229
Appears in Collections:Doutorado em Ciência da Computação.

Files in This Item:
File Description SizeFormat 
RAPHAEL DE CARVALHO MUNIZ – TESE PPGCC 2022.pdfRaphael de Carvalho Muniz - Tese PPGCC 20224.53 MBAdobe PDFView/Open


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.