Predição de Vulnerabilidades em Sistemas de Software Configuráveis: Uma abordagem baseada em Aprendizado de Máquina
Linhas de Produtos de Software, Detecção de Vulnerabilidades, Programação Segura, Aprendizado de Máquina
Sistemas de software configuráveis oferecem uma grande variedade de benefícios, incluindo o apoio à entrega de comportamentos personalizados para necessidades específicas de clientes. Por outro lado, a complexidade resultante das opções de configuração no código-fonte eleva o esforço de evolução e manutenção dos sistemas configuráveis, culminando em uma maior inserção de erros e incidência de vulnerabilidades. Por mais que a ocorrência de erros e vulnerabilidades possa ser verificada por meio de testes manuais e automatizados, exercitar sistemas de software dinamicamente é uma tarefa cara, e que pode se tornar impraticável quando se trata de sistemas configuráveis; contexto em que o número de variantes (produtos) cresce exponencialmente conforme o número de configurações aumenta. Para contornar esse problema, heurísticas de amostragem são geralmente empregadas na seleção de subconjuntos representativos e analisáveis de variantes de um sistema configurável. Entretanto, a eficácia dessas heurísticas depende da maneira como as variantes são selecionadas e às vezes, de fortes simplificações. Neste trabalho, propomos e avaliamos uma heurística de amostragem baseada em Aprendizado de Máquina. Nossas suposições são baseadas em características intrínsecas de vulnerabilidades no código-fonte. Neste caso, foram coletadas 53 métricas referentes à complexidade de software, probabilidade de incidência de vulnerabilidade, histórico de evolução e atuação de desenvolvedores de 11 projetos escritos em C. Esses dados foram submetidos a execuções em diferentes cenários, tais como Cross-validation e Cross-project-validation, buscando reduzir o número de variantes recomendadas pela heurística LSA (Linear Sampling Algorithm). Nossos resultados demonstram que por meio de uma heurística de amostragem baseada em Aprendizado de Máquina é possível reduzir o tamanho da amostra a ser analisada, enquanto se mantém uma boa cobertura de detecção.