JSTargetFuzzer : a history-based approach for fuzzing javascript engines

Detalhes bibliográficos
Ano de defesa: 2025
Autor(a) principal: Oliveira, Bruno Gonçalves de
Orientador(a): Vergilio, Silvia Regina, 1966-
Banca de defesa: Não Informado pela instituição
Tipo de documento: Tese
Tipo de acesso: Acesso aberto
Idioma: eng
Instituição de defesa: Não Informado pela instituição
Programa de Pós-Graduação: Não Informado pela instituição
Departamento: Não Informado pela instituição
País: Não Informado pela instituição
Palavras-chave em Português:
Link de acesso: https://hdl.handle.net/1884/97757
Resumo: Orientador: Silvia Regina Vergilio
id UFPR_4bba62afbd5b3bead7eb251d3318bbfa
oai_identifier_str oai:acervodigital.ufpr.br:1884/97757
network_acronym_str UFPR
network_name_str Repositório Institucional da UFPR
repository_id_str
spelling Endo, André TakeshiUniversidade Federal do Paraná. Setor de Ciências Exatas. Programa de Pós-Graduação em InformáticaVergilio, Silvia Regina, 1966-Oliveira, Bruno Gonçalves de2025-08-05T18:37:37Z2025-08-05T18:37:37Z2025https://hdl.handle.net/1884/97757Orientador: Silvia Regina VergilioCoorientador: André Takeshi EndoTese (doutorado) - Universidade Federal do Paraná, Setor de Ciências Exatas, Programa de Pós-Graduação em Informática. Defesa : Curitiba, 10/07/2025Inclui referênciasÁrea de concentração: Ciência da ComputaçãoResumo: 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 softwareAbstract: 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 assessment1 recurso online : PDF.application/pdfJavaScript (Linguagem de programaçao de computador)Software - TestesCiência da ComputaçãoJSTargetFuzzer : a history-based approach for fuzzing javascript enginesinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesisengreponame:Repositório Institucional da UFPRinstname:Universidade Federal do Paraná (UFPR)instacron:UFPRinfo:eu-repo/semantics/openAccessORIGINALR - T - BRUNO GONCALVES DE OLIVEIRA.pdfapplication/pdf3292532https://acervodigital.ufpr.br/bitstream/1884/97757/1/R%20-%20T%20-%20BRUNO%20GONCALVES%20DE%20OLIVEIRA.pdf8dcb54aacd5a576c1ca1b261b17fc275MD51open access1884/977572025-08-05 15:37:37.41open accessoai:acervodigital.ufpr.br:1884/97757Repositório InstitucionalPUBhttp://acervodigital.ufpr.br/oai/requestinformacaodigital@ufpr.bropendoar:3082025-08-05T18:37:37Repositório Institucional da UFPR - Universidade Federal do Paraná (UFPR)false
dc.title.pt_BR.fl_str_mv JSTargetFuzzer : a history-based approach for fuzzing javascript engines
title JSTargetFuzzer : a history-based approach for fuzzing javascript engines
spellingShingle JSTargetFuzzer : a history-based approach for fuzzing javascript engines
Oliveira, Bruno Gonçalves de
JavaScript (Linguagem de programaçao de computador)
Software - Testes
Ciência da Computação
title_short JSTargetFuzzer : a history-based approach for fuzzing javascript engines
title_full JSTargetFuzzer : a history-based approach for fuzzing javascript engines
title_fullStr JSTargetFuzzer : a history-based approach for fuzzing javascript engines
title_full_unstemmed JSTargetFuzzer : a history-based approach for fuzzing javascript engines
title_sort JSTargetFuzzer : a history-based approach for fuzzing javascript engines
author Oliveira, Bruno Gonçalves de
author_facet Oliveira, Bruno Gonçalves de
author_role author
dc.contributor.other.pt_BR.fl_str_mv Endo, André Takeshi
Universidade Federal do Paraná. Setor de Ciências Exatas. Programa de Pós-Graduação em Informática
dc.contributor.advisor1.fl_str_mv Vergilio, Silvia Regina, 1966-
dc.contributor.author.fl_str_mv Oliveira, Bruno Gonçalves de
contributor_str_mv Vergilio, Silvia Regina, 1966-
dc.subject.por.fl_str_mv JavaScript (Linguagem de programaçao de computador)
Software - Testes
Ciência da Computação
topic JavaScript (Linguagem de programaçao de computador)
Software - Testes
Ciência da Computação
description Orientador: Silvia Regina Vergilio
publishDate 2025
dc.date.accessioned.fl_str_mv 2025-08-05T18:37:37Z
dc.date.available.fl_str_mv 2025-08-05T18:37:37Z
dc.date.issued.fl_str_mv 2025
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/doctoralThesis
format doctoralThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv https://hdl.handle.net/1884/97757
url https://hdl.handle.net/1884/97757
dc.language.iso.fl_str_mv eng
language eng
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv 1 recurso online : PDF.
application/pdf
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFPR
instname:Universidade Federal do Paraná (UFPR)
instacron:UFPR
instname_str Universidade Federal do Paraná (UFPR)
instacron_str UFPR
institution UFPR
reponame_str Repositório Institucional da UFPR
collection Repositório Institucional da UFPR
bitstream.url.fl_str_mv https://acervodigital.ufpr.br/bitstream/1884/97757/1/R%20-%20T%20-%20BRUNO%20GONCALVES%20DE%20OLIVEIRA.pdf
bitstream.checksum.fl_str_mv 8dcb54aacd5a576c1ca1b261b17fc275
bitstream.checksumAlgorithm.fl_str_mv MD5
repository.name.fl_str_mv Repositório Institucional da UFPR - Universidade Federal do Paraná (UFPR)
repository.mail.fl_str_mv informacaodigital@ufpr.br
_version_ 1847526128936288256