Propostas submetidas

DEI - FCTUC
Gerado a 2024-04-23 10:43:44 (Europe/Lisbon).
Voltar

Titulo Estágio

Testes de Software para Encontrar Bugs de Código e Vulnerabilidade de Segurança

Áreas de especialidade

Engenharia de Software

Local do Estágio

DEI-FCTUC

Enquadramento

Esta tese tem como objetivo estudar as situações nas quais um bug de código se torna uma vulnerabilidade de segurança. A injeção de falhas de software (ou bugs) é hoje em dia utilizada em diversos cenários, com o objetivo de avaliar os componentes do projeto de software na presença de erros. No entanto, a emulação de bugs pode ser traiçoeira, e diferentes abordagens foram criadas e usadas por campos e comunidades diferentes.

Os dois maiores campos cujo funcionamento depende da injeção de falhas de software são Mutation Testing e Software Fault Injection. A importância da injeção de bugs nestas duas áreas leva a que seja necessário saber que bugs devem ser injetados, assim como outras restrições necessárias á emulação de forma fiel de bugs que estão presentes em código de produção. No entanto, neste ponto aparece uma grande divisão entre os dois campos. De um lado, a comunidade de Software Fault Injection deu particular atenção a este aspeto, e desenvolveu um conjunto de regras bem-definidas com base em estudos científicos para a emulação representativa de bugs. Do outro lado, a comunidade de Mutation Testing prefere criar bugs de forma empírica e livre.

Importa assim saber se algum destes dois métodos é capaz de emular bugs reais e qual o mais apropriado. Os resultados daqui obtidos irão pôr fim ao desentendimento que perdura desde largos anos, e possivelmente confirmar ou invalidar resultados apresentados em inúmeros artigos que fazem uso de injeção de falhas de software.

Ao mesmo tempo e apesar de os bugs de software e a segurança informática serem tópicos alvo de muito estudo, ainda existe pouca investigação relativamente às condições que levam um bug de software a tornar-se numa vulnerabilidade de segurança. O estudo desta questão poderá levar a vários resultados, inclusive ao desenvolvimento de um conjunto de regras para a emulação de vulnerabilidades de segurança, que por sua vez é essencial para um campo como o da injeção de vulnerabilidades (vulnerability injection).

Objetivo

Este estágio tem dois objetivos principais:

- Comparar Mutation Testing, Software Fault Injection, e o uso de bugs reais;

- Estudar e avaliar quais as condições que levam uma falha de software a tornar-se também numa vulnerabilidade de segurança.

Por forma a satisfazer o primeiro objetivo é necessário escolher e montar uma ferramenta de Mutation Testing e uma ferramenta de Software Fault Injection. Em relação à ferramenta de Software Fault Injection, já existe uma ferramenta adequada dentro do grupo e que deve ser usada. Será também necessário obter bugs reais, através da análise do repositório de bugs (por exemplo, Bugzilla, BugTraq) do(s) projecto(s) e da sua extração manual a partir daí.

Para satisfazer o segundo objetivo é necessário primeiro classificar os bugs extraídos do repositório consoante tenham causado uma vulnerabilidade de segurança ou não. Esta informação tem de ser usada no momento da análise dos resultados para inferir quais as condições que separam bugs que causam vulnerabilidades de bugs que não causam.

Plano de Trabalhos - Semestre 1

- Estudo do estado da arte. (Meses 1 e 2)

- A primeira fase consistirá em aprofundar conhecimentos nos tópicos relacionados com o estágio, com particular atenção a Mutation Testing e Software Fault Injection.

- Escolha de ferramentas e preparação. (Meses 2 e 3)

- Esta tarefa consiste em escolher as ferramentas a usar para Mutation Testing e Software Fault Injection, tendo em conta a informação obtida durante o estudo do estado da arte. Após a escolha da ferramenta é também preciso passar por um período de habituação e experimentação, de forma a ganhar familiaridade com as ferramentas e saber quais as suas limitações e pontos fortes.

- Escolha dos projetos que vão ser testados. (Mês 4)

- Esta tarefa consiste em escolher um ou dois projetos para servirem de suporte às experiências que irão ser feitas no segundo semestre. Estes projetos devem possuir uma forte componente de segurança e ser utilizados em serviços críticos em todo o mundo. Alguns exemplos de projetos que satisfazem estas condições são Xen, KVM, OpenSSH e Apache, no entanto existem muitos mais que podem ser usados.

- Escrita do relatório intermédio. (Meses 4 e 5)

- O estagiário deve apresentar as tarefas realizadas durante o primeiro semestre através da escrita de um relatório intermédio, seguido pela sua apresentação pública e discussão.

Plano de Trabalhos - Semestre 2

- Obtenção de bugs reais e sua classificação. (Meses 6 e 7)

- Utilizar os repositórios de bugs dos projetos que foram escolhidos para extrair bugs que tenham existido (entretanto foram corrigidos), ao mesmo tempo agrupando-os consoante tenham levado a uma vulnerabilidade de segurança ou não.

- Execução das experiências. (Meses 6, 7 e 8)

- Neste ponto, o estagiário deve executar experiências usando as ferramentas de Mutation Testing e Software Fault Injection, e também a injeção manual de bugs reais, de uma forma que permita comparar os resultados.

- É particularmente importante também ter estes resultados armazenados de forma a que sejam facilmente acedidos, analisados e partilhados. Este objetivo pode ser alcançado através do uso de uma base de dados relacional.

- Este ponto pode ser iniciado e desenvolvido em grande parte ao mesmo tempo da tarefa anterior (“Obtenção de bugs reais e sua classificação”),

- Análise dos resultados. (Meses 8 e 9)

- O estagiário deve recorrer a vários métodos estatísticos para estudar qual a relação encontrada entre Mutation Testing, Software Fault Injection, e bugs reais. O primeiro método que pode ser usado é o estudo da correlação de Pearson. Após obter este resultado, o estudo deve ser expandido, podendo incluir uma análise dos modos de avarias (failure modes). Interessa também dividir os resultados consoante possam levar a vulnerabilidades ou não, e assim conseguir inferir quais os fatores que levam um bug a tornar-se numa vulnerabilidade.

- Escrita do relatório final. (Mês 10)

- O estagiário deve escrever a sua tese de mestrado e preparar a respetiva apresentação, onde todo o trabalho efetuado durante o estágio será exposto.

Condições

O trabalho irá ser realizado no Departamento de Engenharia Informática da Universidade de Coimbra e será facultado o acesso a equipamento informático bem como aos laboratórios do DEI.

Observações

Nada a acrescentar.

Orientador

Raul Barbosa
rbarbosa@dei.uc.pt 📩