• Entrar
    Ver item 
    •   Página inicial
    • BIBLIOTECA DIGITAL: Teses & Dissertações
    • 40001016034P5 Programa de Pós-Graduação em Informática
    • Teses
    • Ver item
    •   Página inicial
    • BIBLIOTECA DIGITAL: Teses & Dissertações
    • 40001016034P5 Programa de Pós-Graduação em Informática
    • Teses
    • Ver item
    JavaScript is disabled for your browser. Some features of this site may not work without it.

    JSTargetFuzzer : a history-based approach for fuzzing javascript engines

    Thumbnail
    Visualizar/Abrir
    R - T - BRUNO GONCALVES DE OLIVEIRA.pdf (3.140Mb)
    Data
    2025
    Autor
    Oliveira, Bruno Gonçalves de
    Metadata
    Mostrar registro completo
    Resumo
    Resumo: JavaScript é uma linguagem de programação amplamente adotada em ambientes web, de servidores e embarcados, que é executada por um motor Javascript, ou JavaScript engines, integrados a navegadores e outras plataformas. Esses motores são responsáveis por compilar e executar o código de forma dinâmica por meio de arquiteturas em múltiplos estágios, que incluem análise sintática, interpretação e compilação Just-In-Time (JIT). No entanto, a complexidade envolvida e o uso de linguagens inseguras quanto ao gerenciamento de memória os tornam suscetíveis a diversas falhas de segurança. Embora diversas ferramentas de fuzzing tenham sido desenvolvidas para identificar tais problemas, a maioria ainda depende de configurações estáticas e processos aleatórios apara gerar as entradas de teste, o que limita a capacidade de focar em componentes específicos dos motores JavaScript. Paralelamente, bases públicas de vulnerabilidades oferecem visibilidade limitada, enquanto a história dos commits permanecem subutilizadas, apesar de conterem informações valiosas relacionadas à segurança. Dadas estas limitações, esta tese apresenta JSTargetFuzzer, uma abordagem de fuzzing orientada por informação histórica de commits passados, que tem o objetivo de priorizar a exploração de áreas potencialmente sensíveis à segurança dentro de JavaScript engines. A abordagem proposta utiliza dados extraídos de commits passados relacionados à segurança para guiar o processo de fuzzing, incluindo a seleção de arquivos-alvo, geradores de sementes e operadores de mutação. Para fundamentar essa abordagem, foi conduzido um estudo empírico que analisou commits nos quais foram identificadas correções de vulnerabilidades em múltiplos JavaScript engines. A análise revelou tipos de vulnerabilidades recorrentes e componentes historicamente afetados, os quais definiram a configuração do fuzzer proposto. A implementação final da abordagem JSTargetFuzzer incorpora um sistema de flagging e envelhecimento para reter e priorizar entradas que atinjam regiões alvos do código. Resultados obtidos em quatro JavaScript engines demonstram que a abordagem é capaz de guiar o processo de fuzzing para áreas relevantes à segurança, exercitar o código-alvo, e cobrir mais ramos de execução, aumentando a probabilidade de identificar vulnerabilidades nessas regiões. JSTargetFuzzer também apresentou melhor desempenho na descoberta de crashes, evidenciando sua capacidade de gerar entradas que provocam esse comportamento nos engines. Por fim, a abordagem JSTargetFuzzer identificou vulnerabilidades na versão de produção mais recente do JavaScript engine Duktape, resultando na atribuição de três CVEs, o que evidencia o potencial da abordagem proposta e da sua relevância para garantir a segurança de software
     
    Abstract: JavaScript is a widely adopted programming language across web, server-side, and embedded environments, powered by execution engines integrated in browsers and other platforms. These engines dynamically compile and execute code using multi-stage architectures that include parsing, interpretation, and Just-In-Time (JIT) compilation. However, their complexity and the use of memory-unsafe languages make them vulnerable to various security flaws. Although many fuzzing tools have been developed to uncover such issues, most rely on static configurations and random fuzzing campaigns, limiting their ability to focus on specific components of the engines. At the same time, public vulnerability databases offer limited visibility, while commit histories remain underutilized despite holding valuable security-relevant insights. Motivated by these limitations, this work presents JSTargetFuzzer, a history-based fuzzing approach designed to prioritize the exploration of security-sensitive areas in JavaScript engines. Our approach leverages data extracted from historical security-related commits to guide the fuzzing process, including the selection of target files, seed generators, and mutation operators. We conducted an empirical study analyzing vulnerability-fixing commits with multiple engines. This analysis revealed recurring vulnerability types and historically affected components, which informed the design of the proposed fuzzing configuration. The final implementation of JSTargetFuzzer incorporates a flagging and aging mechanism to retain and prioritize inputs that reach critical code regions. Experimental results with four JavaScript engines demonstrate that our approach can guide the fuzzing toward security-relevant areas, exercise the target code, and reach more execution branches, increasing the likelihood of identifying vulnerabilities within those regions. JSTargetFuzzer also obtains better results in crash discovery, demonstrating the ability to generate inputs that can trigger this behavior in engines. Lastly, JStargetFuzzer uncovered previously unreported vulnerabilities in the latest production version of Duktape JavaScript engine and three CVEs were assigned, reinforcing the value of history-driven fuzzing in modern software security assessment
     
    URI
    https://hdl.handle.net/1884/97757
    Collections
    • Teses [136]

    DSpace software copyright © 2002-2022  LYRASIS
    Entre em contato | Deixe sua opinião
    Theme by 
    Atmire NV
     

     

    Navegar

    Todo o repositórioComunidades e ColeçõesPor data do documentoAutoresTítulosAssuntosTipoEsta coleçãoPor data do documentoAutoresTítulosAssuntosTipo

    Minha conta

    EntrarCadastro

    Estatística

    Ver as estatísticas de uso

    DSpace software copyright © 2002-2022  LYRASIS
    Entre em contato | Deixe sua opinião
    Theme by 
    Atmire NV