dc.creator.ID |
MUNIZ, R. C. |
pt_BR |
dc.creator.Lattes |
http://lattes.cnpq.br/1454914002384966 |
pt_BR |
dc.contributor.advisor1 |
ANDRADE, Wilkerson de Lucena. |
|
dc.contributor.advisor1ID |
ANDRADE, W. L. |
pt_BR |
dc.contributor.advisor1ID |
Andrade, Wilkerson L. |
pt_BR |
dc.contributor.advisor1ID |
ANDRADE, WILKERSON. |
pt_BR |
dc.contributor.advisor1Lattes |
http://lattes.cnpq.br/3697205933296303 |
pt_BR |
dc.contributor.advisor2 |
MACHADO, Patricia Duarte de Lima. |
|
dc.contributor.advisor2ID |
MACHADO, P. D. L. |
pt_BR |
dc.contributor.advisor2ID |
Machado, Patrícia D. L. |
pt_BR |
dc.contributor.advisor2ID |
MACHADO, PATRICIA D. L. |
pt_BR |
dc.contributor.advisor2Lattes |
http://lattes.cnpq.br/2495918356675019 |
pt_BR |
dc.contributor.referee1 |
GOMES, Reinaldo Cézar de Morais. |
|
dc.contributor.referee1ID |
GOMES, Reinaldo Cézar de Morais. |
pt_BR |
dc.contributor.referee1ID |
Cezar de Morais Gomes, Reinaldo. |
pt_BR |
dc.contributor.referee1ID |
GOMES, R. |
pt_BR |
dc.contributor.referee1Lattes |
http://lattes.cnpq.br/8132074356628564 |
pt_BR |
dc.contributor.referee2 |
SOUTO, Sabrina de Figueiredo. |
|
dc.contributor.referee2ID |
SOUTO, S. F. |
pt_BR |
dc.contributor.referee2ID |
Sabrina Souto. |
pt_BR |
dc.contributor.referee2ID |
SOUTO, SABRINA. |
pt_BR |
dc.contributor.referee2Lattes |
http://lattes.cnpq.br/0595422027989879 |
pt_BR |
dc.contributor.referee3 |
ZORZO, Avelino Francisco. |
|
dc.contributor.referee3ID |
ZORZO, A. F. |
pt_BR |
dc.contributor.referee3ID |
ZORZO, A |
pt_BR |
dc.contributor.referee3ID |
Zorzo, A.F. |
pt_BR |
dc.contributor.referee3Lattes |
http://lattes.cnpq.br/4315350764773182 |
pt_BR |
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. |
pt_BR |
dc.publisher.country |
Brasil |
pt_BR |
dc.publisher.department |
Centro de Engenharia Elétrica e Informática - CEEI |
pt_BR |
dc.publisher.program |
PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO |
pt_BR |
dc.publisher.initials |
UFCG |
pt_BR |
dc.subject.cnpq |
Ciência da Computação |
pt_BR |
dc.title |
Uma técnica para detectar fraquezas de código em programas C. |
pt_BR |
dc.date.issued |
2022-03-04 |
|
dc.description.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. |
pt_BR |
dc.identifier.uri |
http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/27229 |
|
dc.date.accessioned |
2022-09-15T17:40:10Z |
|
dc.date.available |
2022-09-15 |
|
dc.date.available |
2022-09-15T17:40:10Z |
|
dc.type |
Tese |
pt_BR |
dc.subject |
Engenharia de Software |
pt_BR |
dc.subject |
Teste de Software |
pt_BR |
dc.subject |
Programas C |
pt_BR |
dc.subject |
Fraqueza |
pt_BR |
dc.subject |
Segurança – Sistemas de Software |
pt_BR |
dc.subject |
Software Engineering |
pt_BR |
dc.subject |
Software Testing |
pt_BR |
dc.subject |
C programs |
pt_BR |
dc.subject |
Weakness |
pt_BR |
dc.subject |
Security – Software Systems |
pt_BR |
dc.rights |
Acesso Aberto |
pt_BR |
dc.creator |
MUNIZ, Raphael de Carvalho. |
|
dc.publisher |
Universidade Federal de Campina Grande |
pt_BR |
dc.language |
por |
pt_BR |
dc.title.alternative |
A technique for detecting code weaknesses in C programs. |
pt_BR |
dc.identifier.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 |
pt_BR |