Modelos de Linguagem de Grande Escala para Reparo Automatizado de Vulnerabilidades em Múltiplas Linguagens de Programação
Segurança de software; Reparo automático de vulnerabilidades; Large Language Models; Reparo automático de programas; Avaliação empírica.
Large Language Models (LLMs) emergiram como ferramentas poderosas em diversos domínios, demonstrando grande potencial na realização de tarefas complexas. No contexto da engenharia de software, a capacidade dos LLMs de processar e compreender grandes volumes de código abre novos caminhos para aprimorar a segurança das aplicações desenvolvidas. Esta dissertação investiga o desempenho de LLMs na tarefa de reparo automatizado de vulnerabilidades de software em diferentes linguagens de programação.
Para tal, foi construído um dataset com 11.558 CVEs, abrangendo nove linguagens de programação (C, C++, Go, Java, JavaScript, PHP, Python, Ruby e TypeScript), a partir de projetos de código aberto hospedados no GitHub, com vulnerabilidades publicadas no National Vulnerability Database (NVD). A partir do dataset construído, foram realizados dois experimentos: no primeiro, foi selecionada uma amostra estratificada de 340 vulnerabilidades com o objetivo de avaliar quatro LLMs open-weight — Codestral, Codegemma, Deepseek-Coder-v2 e Codellama — sob duas estratégias de prompting: na primeira, apenas a descrição da tarefa e o código-fonte foram fornecidos como entrada; na segunda, o prompt foi enriquecido com informações sobre a CWE associada à vulnerabilidade. Os resultados mostraram que esses modelos foram em grande parte incapazes de corrigir vulnerabilidades de maneira satisfatória: o melhor modelo (Deepseek-Coder-v2) corrigiu corretamente apenas quatro das 340 vulnerabilidades mesmo sob prompting com contexto CWE. No segundo experimento, foi avaliado um conjunto de 852 vulnerabilidades em linguagens de programação voltadas para a web — JavaScript, TypeScript e PHP. Foram avaliados três LLMs comerciais de última geração: GPT-4.1, Claude Opus 4 e Gemini 2.5 Pro. Os reparos gerados foram avaliados de forma automática com a métrica CodeBLEU e por classificação manual. O GPT-4.1 obteve a maior acurácia geral de correção (47.2%), seguido por Claude Opus 4 (36.1%) e Gemini 2.5 Pro (30.6%). O Claude Opus 4 produziu os reparos estruturalmente mais similares aos reparos humanos em JavaScript e PHP, enquanto o TypeScript se mostrou consistentemente a linguagem mais desafiadora para todos os modelos.
Em conjunto, os resultados demonstram que os LLMs apresentam potencial genuíno como ferramentas assistivas para correção de vulnerabilidades, mas ainda não são suficientemente confiáveis para implantação autônoma em ambientes críticos de segurança.