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 tornou-se uma grande preocupação de segurança, especialmente no mundo atual, onde aplicativos móveis (apps) são indispensáveis em nossas vidas diárias. Para mitigar esse problema, as equipes de desenvolvimento podem se beneficiar do uso de técnicas de análise estática e dinâmica para identificar possíveis vazamentos de dados sensíveis. Uma dessas técnicas é o algoritmo de Análise Estática Baseada em Fluxos Esparsos de Valores (SVFA), que se mostrou eficaz na detecção de vazamentos de dados em programas C e C++—embora o potencial benefício com o SVFA na análise de programas de bytecode Java permaneça pouco explorado. Um esforço colaborativo entre a Universidade de Brasília e a Universidade de Paderborn resultou na implementação inicial de um framework SVFA para bytecode Java. Esta implementação foi adaptada para identificar conflitos de mesclagem semântica e foi integrada a outros projetos de pesquisa. Apesar de sua utilidade, foi possível observar uma precisão relativamente baixa (61,53%) quando avaliada em uma suíte de testes do benchmark DroidBench, um dos benchmarks disponíveis na ferramenta de "taint-analysis" FlowDroid. O objetivo desta tese é aprimorar a implementação atual do SVFA usando a abordagem de Design Science Research (DSR), tomando como insumo para caracterização do problema os testes falhos no benchmark DroidBench. Para validar as melhorias, compararemos a precisão de nossa implementação final com dois benchmarks estabelecidos (DroidBench e TaintBench). Concluímos cinco ciclos de DSR e alcançamos uma precisão de 70,19% (testada usando o benchmark DroidBench). Ainda temos ciclos adicionais de DSR para aprimorar ainda mais a implementação do SVFA e integrá-la com nosso segundo benchmark (TaintBench). Essas tarefas restantes serão concluídas e documentadas na versão final deste documento.