Skip to main content

DeepCode AI Fix, recurso de correção automática do Snyk Code, ficou ainda melhor

feature-snyk-apprisk-globe

23 de abril de 2024

0 minutos de leitura

O DeepCode AI Fix é um recurso baseado em IA que oferece correções com segurança verificada em um clique no Snyk Code, uma ferramenta de SAST em tempo real com foco no desenvolvedor. Um dos primeiros recursos de correções semiautomáticas de segurança no IDE do mercado, a versão beta pública do DeepCode AI Fix foi anunciada como parte do lançamento da Snyk em abril de 2023. O produto oferecia correções para problemas de segurança detectados pelo Snyk Code em tempo real, em linha, e dentro do IDE. Desde então, percorremos em uma jornada para aprimorar essa funcionalidade avançada e inovadora para os usuários do Snyk Code. Hoje, depois de quase 12 meses de feedback de usuários da versão beta pública e melhorias iterativas, temos o prazer de anunciar novas melhorias de modelo no recurso de correção automática testado em campo. Agora o DeepCode AI Fix oferece:

  • Suporte a sete linguagens.

  • Tecnologia revolucionária com patente pendente que aumenta de modo considerável a precisão do DeepCode AI Fix da Snyk e de outros modelos nos quais testamos a tecnologia, como GPT-4, GPT-3.5 e Mixtral.

  • IA multimodal (nossa famosa abordagem de IA híbrida) para maximizar a robustez por meio da diversidade de modelos.

Abordagem da necessidade de correções automáticas ininterruptas com o DeepCode AI Fix

O Snyk Code analisa o código-fonte em que os desenvolvedores estão trabalhando em cada fase do ciclo de vida do desenvolvimento de software (SDLC), incluindo IDE, SCM e pipelines de CI/CD, para oferecer precisão, velocidade e correções proativas incomparáveis na identificação de problemas de segurança dentro do espaço do SAST.

Dependendo das políticas de segurança relevantes, após a identificação dos novos problemas de segurança, os desenvolvedores tentarão corrigi-los, mas nem sempre essa é uma tarefa simples. É preciso ter o contexto de como o código funciona dentro da base de código de modo geral, qual é o problema de segurança e a melhor forma de corrigi-lo.

O Snyk Code oferece aos desenvolvedores explicações detalhadas dos problemas de segurança detectados e exemplos de correções de repositórios reais com licença permissiva, que podem ser usados como inspiração para resolver os problemas. Antes do DeepCode AI Fix, o Snyk Code já oferecia um avanço significativo na redução da carga cognitiva do desenvolvedor. Entretanto, os desenvolvedores ainda precisavam encontrar uma maneira de corrigir os problemas de segurança por conta própria.

É por isso que tentamos facilitar ainda mais a correção de vulnerabilidades para os desenvolvedores com o DeepCode AI Fix, que é baseado no LLM do mecanismo do DeepCode AI (uma combinação de IA simbólica e aprendizado de máquina, incluindo nosso LLM). O DeepCode AI Fix ajudou os desenvolvedores a criar de forma segura e integrada, corrigindo automaticamente os problemas de segurança, inicialmente em projetos em JavaScript e TypeScript. Qualquer usuário do Snyk Code no Visual Studio Code ou Eclipse podia acionar ⚡Corrigir este problema quando surgiam novos problemas de segurança.

Aprendizado com nosso pioneirismo na versão beta inicial

Quando a Snyk lançou o DeepCode AI Fix na modalidade de acesso antecipado, ele foi adotado por muitas empresas de diversos portes e verticais do setor pela maneira singular de corrigir problemas de segurança que oferecia às equipes: é possível resolver os problemas diretamente no IDE, antes que as vulnerabilidades sejam implantadas em produção, e automatizar a correção. 

Estávamos à frente da concorrência quando lançamos um recurso de correção automática de código baseada em IA. Mesmo assim, como todos os recursos beta estão em fase de aprimoramento por natureza, queríamos continuar refinando o DeepCode AI Fix. Nossas áreas de interesse incluíam aumentar a consistência da "precisão" das correções, melhorar nossas regras de linguagem, aumentar a cobertura de linguagens, estender a acessibilidade (na época, estava disponível apenas dentro do IDE) e melhorar a experiência do usuário.

Como o número de áreas era elevado, consideramos cuidadosamente o feedback dos usuários e decidimos começar priorizando os itens de maior impacto:

  • Melhorar a qualidade dos resultados.

  • Oferecer linguagens adicionais.

A qualidade e a segurança das correções são imprescindíveis para uma funcionalidade como o DeepCode AI Fix, então decidimos intensificar nossos esforços para aprimorar o detalhamento e a abrangência das correções propostas.

Criação de um recurso de correção automática confiável em um mundo com IA

Um novo modelo LLM para oferecer velocidade e precisão

No lançamento, o DeepCode AI Fix usava uma versão do modelo T5 do Google, extensivamente ajustado pelos melhores especialistas em segurança da Snyk. Por que começamos com esse modelo? Para colocar a situação em perspectiva, estávamos liderando o setor e trabalhado há dois anos no DeepCode AI Fix quando lançamos o produto. Na época, os LLMs ainda estavam nos estágios iniciais. Com base nas opções viáveis disponíveis naquele momento, avaliamos que o T5 era a melhor opção para nossas necessidades. Ajustamos o modelo usando projetos de código aberto com licença permissiva que haviam corrigido problemas de segurança para ensiná-lo a implementar suas próprias correções. Antes de o DeepCode AI Fix propor uma correção de segurança, o mecanismo de IA híbrida da Snyk, o DeepCode AI, usava suas regras e algoritmos rigorosos de IA simbólica baseada em conhecimento para reanalisar a correção de código após a incorporação das nossas previsões de segurança, reduzindo a possibilidade de alucinações e correções insatisfatórias às quais todos os LLMs, incluindo o DeepCode AI Fix, são suscetíveis. Essa prática de verificar as correções propostas pelo DeepCode AI Fix permanece, mesmo após migrarmos o produto para um modelo LLM mais avançado (veja abaixo).

Com o que aprendemos nas fases iniciais do DeepCode AI Fix, decidimos adotar modelos LLM que nos ajudassem a gerar correções de problemas de segurança mais precisas. Testamos todos os LLMs possivelmente viáveis e interessantes para descobrir qual produzia os melhores resultados quando combinado com nossos métodos de ajuste fino. Pela sua precisão e velocidade, optamos pelo StarCoder como modelo de base e o ajustamos usando conjuntos de dados de treinamento.

As melhorias nos resultados foram incríveis:

blog-deepcode-ai-fix-graph-2023

O DeepCode AI Fix pode corrigir automaticamente vários tipos de problemas de segurança e codificação. Conforme as linhas na imagem acima, classificamos esses problemas em cinco categorias (AST, Interprocedural, Local, SecurityLocal e SecurityFlow\*) para resumir os resultados da avaliação. Para cada problema encontrado, o DeepCode AI Fix gera cinco propostas de correção diferentes. As três colunas na imagem acima (pass@1, pass@3 e pass@5) correspondem à porcentagem de saídas contendo uma correção precisa em respectivamente uma, três e cinco propostas de correção. Para garantir a precisão do DeepCode AI Fix, todas as previsões são verificadas usando nossas regras e base de conhecimento criadas por humanos (incorporadas em nossa IA simbólica). Uma previsão é aprovada nas verificações quando produz código sintaticamente correto e analisável e corrige o problema de segurança relevante sem introduzir novos problemas. Este é um diferencial exclusivo da Snyk: usamos nosso próprio analisador de código e base de conhecimento, ambos baseados em IA simbólica (veja aqui por que isso é importante), para filtrar correções possivelmente incorretas e alucinações geradas pelo LLM do DeepCode AI Fix antes que essas correções falhas cheguem aos clientes. Isso garante que o DeepCode AI Fix seja mais robusto e seguro do que outras soluções de correção automática com verificação de código que dependem exclusivamente de LLMs para corrigir (ou até mesmo verificar e corrigir) problemas. Para conferir informações detalhadas sobre nossas avaliações e categorias de problemas, confira o estudo sobre a tecnologia CodeReduce da Snyk (veja abaixo).

Tecnologia inovadora com patente pendente que aprimora de modo significativo a precisão até mesmo do GPT-4

Também trabalhamos para aprimorar a qualidade dos resultados, melhorando o processamento dos dados do usuário (ou seja, o código relevante) no prompt do LLM usado no DeepCode AI Fix. Essa tecnologia proprietária da Snyk, chamada CodeReduce, está agora com patente pendente. O CodeReduce usa a análise programática para manter o foco do mecanismo de atenção do LLM nas partes do código necessárias para realizar a correção, ajudando-o a se limitar ao fragmento de código menor que contém o defeito relatado e o contexto de código necessário. Em outras palavras, a Snyk está mais uma vez removendo o ruído e otimizando para oferecer resultados eficientes com o maior impacto. O CodeReduce reduz drasticamente a quantidade de código processada pelo DeepCode AI Fix. Por sua vez, isso ajuda a melhorar a qualidade e os padrões de geração de correções para todos os modelos testados (incluindo GPT-3.5, GPT-4 e Mixtral) e reduz a probabilidade de alucinações. Na verdade, melhoramos em até impressionantes 20% a precisão do GPT-4 (veja a imagem abaixo). Em breve, vamos conversar de novo sobre o funcionamento do CodeReduce. Fique de olho!

blog-deepcode-ai-fix-graph
Com a exceção de pass@5 para AST e exact@5 para Local, a Snyk supera em até 20% todas as métricas.

Suporte para sete linguagens e melhorias gerais nas regras e dados

Além de mudar o modelo base subjacente e aperfeiçoar o foco do DeepCode AI Fix para obter melhores resultados de qualidade, queríamos aumentar a abrangência e o detalhamento dos resultados das correções. Para isso, cooperamos com a equipe de rotulagem para aprimorar a qualidade do banco de dados de correções e verificar se os resultados gerados pelo DeepCode AI Fix eram precisos ou não, o que ajudou na melhoria contínua do modelo.

O resultado da nossa abordagem multidimensional para aprimorar o recurso de correção automática do Snyk Code foi passar de centenas de regras já existentes para JavaScript/TypeScript (consideramos ambas como uma linguagem) para um número muito maior de regras mais confiáveis para outras seis linguagens. Para lidar com as dez principais ameaças listadas pelo OWASP, é possível as seguintes linguagens:

  • JavaScript/TypeScript

  • Java

  • Python

  • C/C++

  • C# (suporte limitado)

  • Go (suporte limitado)

  • APEX (suporte limitado)

Também implementamos outras melhorias na forma como coletamos e processamos os dados. Elas resultaram em um salto na confiabilidade das correções para uma taxa média de precisão de 80%

O que vem pela frente?

Apesar dos enormes avanços alcançados na criação de um recurso de correção automática confiável, pretendemos continuar melhorando, otimizando e iterando o LLM do DeepCode AI Fix. Além disso, abordaremos a experiência do usuário dentro e fora do IDE. O que isso significa?

Aprimoramentos no modelo para correções ainda mais rápidas e melhores

Os LLMs ainda estão evoluindo em um ritmo acelerado. Modelos novos ou melhorados são lançados o tempo todo. O StarCoder 2, uma versão mais recente do StarCoder, já está disponível e vamos testá-lo. Se percebermos que mais melhorias são possíveis durante os testes, provavelmente mudaremos para o StarCoder 2. Além do LLM em si, também estamos direcionando nosso foco para:

  • Oferecer aos usuários correções mais rápidas com a otimização do modelo e do servidor neurais, reduzindo a latência da geração de correções de uma média de cerca de 12 segundos para menos de 6 segundos.

  • Ampliar a cobertura das regras e melhorar a qualidade das correções para as principais linguagens (JavaScript/TypeScript, Java, Python, C/C++ e C#).

Uma experiência de IDE simplificada para facilitar as correções

Agora os desenvolvedores que usam o DeepCode AI Fix podem ver correções propostas com mais facilidade, selecionar entre várias delas para escolher a mais adequada ao contexto de suas necessidades e visualizar as possíveis mudanças no código. Tudo isso acontece dentro do mesmo fluxo, antes da aplicação da correção proposta.

blog-deepcode-ai-fix-index-js

Todas essas funcionalidades ajudam os desenvolvedores a agilizar a codificação, reduzir o esforço e aumentar a segurança. Entretanto, o que realmente ajuda os desenvolvedores (além da precisão do DeepCode AI Fix) é o entendimento do contexto do código pelo LLM. Ao contrário de outras ferramentas de segurança, que somente entendem o código como texto simples, o DeepCode AI Fix entende o código dos desenvolvedores para corrigi-lo da mesma forma que um desenvolvedor. Suas sugestões são voltadas oferecer maior probabilidade de compilação e aplicação da correção de maior impacto e eficiência para resolver os problemas de segurança. 

Os usuários de todos os IDEs compatíveis, incluindo VS Code e Eclipse, poderão experimentar a correção automática de vulnerabilidades de forma simplificada. Em breve, essa funcionalidade também estará disponível para usuários do IDE JetBrains.

Uma experiência de correção automática pronta para os usuários com níveis inéditos de precisão, alta segurança e ampla aplicabilidade

No último ano, trabalhamos firme para responder ao feedback dos usuários sobre o DeepCode AI Fix. Conquistamos grandes avanços na melhoria da abrangência e do detalhamento dos resultados, bem como na qualidade geral das correções automáticas do DeepCode AI. Agora os usuários podem aproveitar a maior aplicabilidade, o aumento de precisão dos resultados de correção automática e a maior segurança das correções, tudo isso diretamente do IDE:

  • Sete linguagens compatíveis (considerando JavaScript e Typescript como uma linguagem).

  • Nossa tecnologia CodeReduce com patente pendente aumenta a precisão da correção automática não só para o DeepCode AI Fix, mas também para outros modelos de IA, como o GPT-4.

  • Vários modelos de IA para garantir a redução dos riscos inerentes aos LLMs e à homogeneidade dos modelos. Também é possível verificar as saídas do LLM com o mecanismo de análise estática e análises de IA simbólica baseadas em conhecimento, que filtram correções falhas e alucinações geradas pelo modelo antes que cheguem ao usuário final.

Os longos testes em campo que fizemos com o beta da correção automática nos permite oferecer uma experiência de usuário superior na teoria e na prática. Estamos orgulhosos das nossas conquistas, mas não pretendemos parar por aí. Continuaremos investindo no aprimoramento dos resultados do DeepCode AI Fix e da experiência dos usuários. 

Os clientes do Snyk Code podem experimentar o DeepCode AI Fix no IDE ativando "Snyk Code Fix Suggestions" (Sugestões de correção do Snyk Code) nas configurações de visualização da Snyk (veja a imagem abaixo). Há mais informações disponíveis na documentação.

blog-deepcode-ai-fix-snyk-preview

Você ainda não tem o Snyk Code, mas quer começar a fazer correções automáticas confiáveis com a velocidade da IA? Acesse esta página para criar sua conta da Snyk e começar a experimentar agora mesmo um fluxo de trabalho mais proativo, fácil e simplificado.