Compartilhamento de tecnologia

Paper Study_Um estudo empírico de modelos de aprendizagem profunda para detecção de vulnerabilidades

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Introdução

Antecedentes da Pesquisa : Nos últimos anos, as ferramentas de detecção de vulnerabilidades de aprendizagem profunda alcançaram resultados promissores. O modelo de última geração relata uma pontuação F1 de 0,9 e supera o analisador estático. Os resultados são empolgantes porque o aprendizado profundo pode revolucionar a garantia de software. Portanto, empresas do setor como IBM, Google e Amazon estão muito interessadas e investem pesadamente no desenvolvimento de tais ferramentas e conjuntos de dados.

Problemas existentes : Embora a detecção de vulnerabilidades de aprendizagem profunda seja promissora, ela ainda não atingiu o nível de visão computacional e processamento de linguagem natural. Grande parte do foco da pesquisa atual está em experimentar modelos emergentes de aprendizagem profunda e aplicá-los a conjuntos de dados como os conjuntos de dados Devign ou MSR. No entanto, sabemos muito pouco sobre o modelo em si, por exemplo, quais tipos de programas o modelo pode efetivamente manipular, se devemos construir um modelo para cada tipo de vulnerabilidade ou se devemos construir um modelo unificado para todos os tipos de vulnerabilidade com bons dados de treinamento. a aparência do conjunto e quais informações o modelo usa ao tomar decisões. Saber as respostas a essas perguntas pode nos ajudar a desenvolver, depurar e aplicar melhor modelos. No entanto, estas questões são difíceis de responder dada a natureza da caixa preta da aprendizagem profunda. O objetivo do artigo não é fornecer soluções completas para esses problemas, mas explorar esses objetivos.

Questão científica : Neste artigo, o artigo investiga e reproduz uma série de modelos de detecção de vulnerabilidade de aprendizagem profunda de última geração e estabelece questões de pesquisa para compreender esses modelos, com o objetivo de tirar lições e orientações deles para melhor projetar e depurar modelos futuros.O artigo enquadra a questão de investigação e divide-a em três áreas, nomeadamenteCapacidades do modelodados de treinamentoeExplicação do modelo . Especificamente, o objetivo principal do artigo é compreender as capacidades do aprendizado profundo em problemas de detecção de vulnerabilidades, com foco especial nas seguintes questões de pesquisa:

  • Questão 1 : Diferentes modelos podem chegar a um consenso sobre a detecção de vulnerabilidades? Quais são as diferenças entre os diferentes modelos?
  • Questão 2 : Certos tipos de vulnerabilidades são mais fáceis de detectar? Você deve construir um modelo para cada tipo de vulnerabilidade ou um modelo que detecte todas as vulnerabilidades?
  • Questão 3 : Existem alguns padrões de código que são difíceis de prever pelo modelo? Se tal padrão de código existir, que tipo de padrão de código é esse?

O segundo foco de pesquisa do artigo são os dados de treinamento. O objetivo do artigo é compreender se e como o tamanho e a composição dos dados de treinamento afetam o desempenho do modelo. Especificamente, o artigo constrói as seguintes questões de pesquisa:

  • Pergunta 4: Aumentar o tamanho do conjunto de dados ajuda a melhorar o desempenho do modelo para detecção de vulnerabilidades?
  • Pergunta 5: Como a composição dos itens no conjunto de dados de treinamento afeta o desempenho do modelo?

Por fim, a terceira área de pesquisa da tese é a interpretação de modelos. O artigo usa a ferramenta de interpretação do modelo SOTA para investigar:

  • Pergunta 6 : Quais informações do código-fonte o modelo usa para previsão? O modelo é consistente em recursos importantes?

conteúdo de pesquisa : Para responder às perguntas acima, o artigo pesquisa modelos de aprendizagem profunda de última geração e reproduz com sucesso 11 modelos em seus conjuntos de dados originais. Esses modelos empregam diferentes arquiteturas de aprendizagem profunda, como GNN, RNN, LSTM, CNN e Transformers. Para comparar esses modelos, o artigo conseguiu executar 9 modelos com dois conjuntos de dados populares, Devign e MSR. As razões pelas quais o artigo escolhe esses dois conjuntos de dados são: (1) ambos os conjuntos de dados contêm projetos e vulnerabilidades do mundo real; (2) os modelos na maioria dos artigos são avaliados e ajustados usando o conjunto de dados Devign; , e os dados são anotados com tipos de vulnerabilidade, o que é crucial para a nossa questão de pesquisa. Através de experiências cuidadosamente concebidas e da consideração de ameaças, o artigo encontrou resultados para seis questões de investigação. No geral, as contribuições de pesquisa deste artigo incluem:

  • contribuição: 1: Este artigo conduz uma pesquisa abrangente sobre modelos de detecção de vulnerabilidades de aprendizagem profunda.
  • Contribua 2: O artigo fornece um repositório de código contendo 11 modelos de treinamento e conjuntos de dados para a estrutura de aprendizado profundo SOTA com vários ambientes de pesquisa.
  • Contribua 3: O artigo elabora 6 questões científicas para compreender as capacidades do modelo, dados de treinamento e interpretação do modelo.
  • Contribua 4: O artigo estrutura a pesquisa e obtém os resultados através de experimentos para a questão científica colocada.
  • Contribua 5: O artigo prepara exemplos e dados interessantes para investigar melhor a interpretabilidade do modelo.

2. Reprodução do modelo

A fim de coletar os modelos de aprendizagem profunda mais avançados, o artigo estudou artigos de 2018 a 2022 e referiu-se às classificações CodeXGLUE da Microsoft e às classificações D2A de detecção de defeitos da IBM. O artigo utilizou todos os modelos de código aberto disponíveis e reproduziu com sucesso 11 modelos. Uma lista completa de modelos, bem como os motivos pelos quais não conseguimos reproduzir alguns modelos, está incluída no pacote de replicação de dados do artigo.

Conforme mostrado na tabela acima, os modelos reproduzidos abrangem diversas arquiteturas de aprendizagem profunda. Devign e ReVeal usam GNN em gráficos de propriedades, integrando fluxo de controle, dependências de dados e AST. ReGVD usa GNN em tokens. Code2Vec usa um perceptron multicamada (MLP) no AST. VulDeeLocator e SySeVR são modelos de sequência baseados em RNN e Bi-LSTM. A detecção recente de aprendizado profundo usa transformadores pré-treinados, incluindo CodeBERT, VulBERTa-CNN, VulBERTa-MLP, PLBART e LineVul.

Em resposta às questões de pesquisa do artigo, o artigo selecionou conjuntos de dados Devign e MSR. O artigo estuda esses 11 modelos nos conjuntos de dados usados ​​em seus artigos originais, que são mostrados na tabela acima. O artigo descobriu que o conjunto de dados Devign foi usado para avaliar e ajustar 8 modelos. O conjunto de dados é um conjunto de dados equilibrado que contém números aproximadamente iguais de exemplos vulneráveis ​​e não vulneráveis, para um total de 27.318 pontos de dados (cada exemplo também é referido como um ponto de dados). LineVul usa o conjunto de dados MSR, que é um conjunto de dados disponível recentemente. O conjunto de dados está desequilibrado e contém 10.900 exemplos vulneráveis ​​e 177.736 exemplos não vulneráveis. Os exemplos têm seus projetos de origem, bem como entradas Common Weakness Enumeration (CWE) mostrando o tipo de vulnerabilidade. O artigo usa essas características do conjunto de dados para formular algumas questões de pesquisa.

O artigo reproduz os resultados do modelo com base no conjunto de dados e configurações originais, conforme mostrado na tabela acima. Entre elas, as colunas A, P, R e F representam indicadores comumente usados ​​na detecção de vulnerabilidades de aprendizagem profunda, incluindo exatidão, precisão, recall e pontuação F1. Comparados com o papel original, os resultados da reprodução do papel geralmente apresentam um erro de cálculo de 2%. Casos especiais são ReVeal, onde os autores confirmaram que nossos resultados corrigiram o erro de vazamento de dados no artigo original, e Devign, onde o artigo usou um código replicado de terceiros (publicado por Chakaborthy et al.), uma vez que o código Devign original não era Código aberto.