| Name: | Description: | Size: | Format: | |
|---|---|---|---|---|
| 5.8 MB | Adobe PDF |
Authors
Abstract(s)
Artificial Intelligence (AI) tools are increasingly adopted for source code analysis, assisting in
tasks such as vulnerability detection, code generation, and automated review. However, despite
their growing capabilities, these models exhibit significant vulnerabilities when exposed
to adversarial environments, where subtle, functionality-preserving code transformations can
drastically reduce their performance. This weakness is particularly critical in CI/CD pipelines,
where undetected malicious code can compromise software integrity and security.
To address this issue, the present thesis introduces SCoPE2 (Source Code Processing Engine
2), an enhanced and more efficient version of the original SCoPE framework. SCoPE2
achieves substantial improvements in runtime performance, requiring only 2.7% of the execution
time of its predecessor, while offering greater extensibility. It is capable of generating
adversarial examples and applying a wide range of code transformations, enabling both the
evaluation of model robustness and the development of defensive strategies.
The proposed solution leverages SCoPE2 to implement two complementary defensive mechanisms:
adversarial fine-tuning, which retrains models on adversarial examples to enhance
their robustness, and an inference-time normalization layer that standardizes input code
before classification. Experimental results show that adversarial fine-tuning effectively recovers
model performance under adversarial conditions, reaching accuracy levels comparable
to those obtained on clean inputs. Meanwhile, the normalization strategy enhances resistance
to identifier-based manipulations, despite having a trade-off in overall accuracy.
Furthermore, an analysis of adversarial sample similarity reveals that examples with greater
syntactic divergence from the original code tend to be more successful at misleading the
models.
The main conclusion of this thesis is that, although AI-powered code analysis offers considerable
potential for software engineering, current models remain vulnerable to adversarial
attacks. This finding underscores the necessity of integrating robust and layered defence
mechanisms, as no single method offers complete protection against all adversarial threats.
As ferramentas de AI estão a ser cada vez mais adotadas na análise de código, apoiando tarefas como a deteção de vulnerabilidades, a geração e a revisão automatizada de código. No entanto, apesar das suas capacidades crescentes, estes modelos apresentam vulnerabilidades significativas quando expostos a ambientes adversariais, nos quais transformações subtis ao código, que preservam a sua funcionalidade, podem reduzir drasticamente o seu desempenho. Esta fragilidade é particularmente crítica em pipelines de CI/CD, onde código malicioso não detetado pode comprometer a integridade e a segurança do software. Para enfrentar este problema, esta tese apresenta o SCoPE2 (Source Code Processing Engine 2), uma versão melhorada e mais eficiente do framework original SCoPE. O SCoPE2 alcança melhorias substanciais ao nível do desempenho, requerendo apenas 2,7% do tempo de execução do seu antecessor, ao mesmo tempo que oferece uma maior extensibilidade. É capaz de gerar exemplos adversariais e de aplicar uma vasta gama de transformações ao código, possibilitando tanto a avaliação da robustez de modelos como o desenvolvimento de estratégias de defesa. A solução proposta utiliza o SCoPE2 para aplicar dois mecanismos defensivos complementares: o fine-tuning adversarial, que consiste no re-treino de modelos com exemplos adversariais para reforçar a sua robustez; e uma camada de normalização aplicada em tempo de inferência, que padroniza o código de entrada antes da classificação. Os resultados experimentais demonstram que o fine-tuning adversarial recupera eficazmente o desempenho dos modelos em cenários adversariais, atingindo níveis de precisão comparáveis aos obtidos com dados não alterados. A estratégia de normalização melhora a resistência a manipulações baseadas em identificadores, embora implique um compromisso ao nível da precisão global do modelo. Adicionalmente, uma análise da similaridade dos exemplos adversariais revela que os exemplos com maior divergência sintática face ao código original tendem a ser mais eficazes na tarefa de enganar os modelos. A principal conclusão desta tese é que, embora a análise de código suportada por IA apresente um potencial considerável para a engenharia de software, os modelos atuais continuam vulneráveis a ataques adversariais. Esta constatação realça a necessidade de integrar mecanismos de defesa robustos e em camadas, uma vez que nenhum método isolado oferece proteção completa contra as ameaças adversariais.
As ferramentas de AI estão a ser cada vez mais adotadas na análise de código, apoiando tarefas como a deteção de vulnerabilidades, a geração e a revisão automatizada de código. No entanto, apesar das suas capacidades crescentes, estes modelos apresentam vulnerabilidades significativas quando expostos a ambientes adversariais, nos quais transformações subtis ao código, que preservam a sua funcionalidade, podem reduzir drasticamente o seu desempenho. Esta fragilidade é particularmente crítica em pipelines de CI/CD, onde código malicioso não detetado pode comprometer a integridade e a segurança do software. Para enfrentar este problema, esta tese apresenta o SCoPE2 (Source Code Processing Engine 2), uma versão melhorada e mais eficiente do framework original SCoPE. O SCoPE2 alcança melhorias substanciais ao nível do desempenho, requerendo apenas 2,7% do tempo de execução do seu antecessor, ao mesmo tempo que oferece uma maior extensibilidade. É capaz de gerar exemplos adversariais e de aplicar uma vasta gama de transformações ao código, possibilitando tanto a avaliação da robustez de modelos como o desenvolvimento de estratégias de defesa. A solução proposta utiliza o SCoPE2 para aplicar dois mecanismos defensivos complementares: o fine-tuning adversarial, que consiste no re-treino de modelos com exemplos adversariais para reforçar a sua robustez; e uma camada de normalização aplicada em tempo de inferência, que padroniza o código de entrada antes da classificação. Os resultados experimentais demonstram que o fine-tuning adversarial recupera eficazmente o desempenho dos modelos em cenários adversariais, atingindo níveis de precisão comparáveis aos obtidos com dados não alterados. A estratégia de normalização melhora a resistência a manipulações baseadas em identificadores, embora implique um compromisso ao nível da precisão global do modelo. Adicionalmente, uma análise da similaridade dos exemplos adversariais revela que os exemplos com maior divergência sintática face ao código original tendem a ser mais eficazes na tarefa de enganar os modelos. A principal conclusão desta tese é que, embora a análise de código suportada por IA apresente um potencial considerável para a engenharia de software, os modelos atuais continuam vulneráveis a ataques adversariais. Esta constatação realça a necessidade de integrar mecanismos de defesa robustos e em camadas, uma vez que nenhum método isolado oferece proteção completa contra as ameaças adversariais.
Description
Keywords
Adversarial robustness Software Vulnerability Detection Machine learning Cybersecurity
