Sparse Value Flow Analysis para Java Byte Code Um Estudo Empírico
Análise Estática de Programas
Análise Estática Baseada em Fluxos Esparsos de Valores
Vazamento de Dados Sensíveis
Java Byte Code
O vazamento de dados sensíveis é uma importante preocupação de segurança em sistemas de software modernos. A análise estática de fluxo de informações (taint analysis) tem se mostrado eficaz na identificação de possíveis vazamentos ao rastrear como os valores de dados se propagam ao longo de um programa. A Análise de Fluxo de Valores Esparso (Sparse Value Flow Analysis – SVFA) é uma técnica de análise estática que apresentou bons resultados na detecção de vazamentos de dados em programas escritos em C e C++. No entanto, sua aplicabilidade para programas em bytecode Java ainda é pouco explorada.
Esta dissertação investiga a eficácia do JSVFA, um analisador estático baseado em SVFA voltado para aplicações Java e Android. O trabalho apresenta um estudo empírico que compara a acurácia do JSVFA com ferramentas de ponta para análise de fluxo de informações em Java — FlowDroid e Joana — utilizando o conjunto de testes SecureBench. Além disso, o trabalho aprimora a implementação existente do JSVFA, buscando melhorar sua precisão, revocação (recall) e capacidade geral de análise. A nova versão também é integrada ao TaintBench, um conjunto de benchmarks voltado para aplicações Android, a fim de avaliar sua eficácia nesse ambiente.
Os resultados experimentais mostram que o JSVFA aprimorado supera significativamente sua versão anterior em termos de revocação, F-score e taxa de sucesso nos casos de teste dos benchmarks, embora apresente uma leve redução na precisão. Em comparação com o FlowDroid e o Joana, o JSVFA alcança um equilíbrio entre precisão, revocação e F-score, posicionando-se como uma alternativa competitiva. Experimentos adicionais no contexto Android revelam que o JSVFA identificou 86 e 655 novos vazamentos, respectivamente, que não estavam nos relatórios originais do TaintBench, mas foram posteriormente confirmados como verdadeiros positivos. No entanto, o JSVFA ainda falha em identificar alguns caminhos source-sink reportados como reais pelo ground truth do benchmark.
Em conclusão, o JSVFA demonstra desempenho competitivo para a análise de código Java e apresenta resultados promissores para aplicações Android. Entretanto, é necessário um estudo mais aprofundado sobre o ciclo de vida das aplicações Android para aumentar sua cobertura e precisão na detecção de vazamentos de dados.