O recurso de correção automática do Snyk Code, Snyk Agent Fix, acaba de ficar ainda melhor
23 de abril de 2024
0 minutos de leituraSnyk Agent Fix é um recurso com tecnologia de IA que oferece correções verificadas quanto à segurança com um clique, dentro do Snyk Code, uma ferramenta SAST em tempo real voltada para desenvolvedores. Entre os primeiros recursos semiautomatizados de correção de segurança no IDE do mercado, a versão beta pública do Snyk Agent Fix foi anunciada como parte do Snyk Launch em abril de 2023. Ela corrigia, em tempo real e diretamente no IDE, os problemas de segurança detectados pelo Snyk Code. Desde então, temos trabalhado para aprimorar essa funcionalidade poderosa e transformadora para quem usa o Snyk Code. Hoje, após quase 12 meses de feedback de usuários da versão beta pública e melhorias iterativas, temos o prazer de anunciar novos aprimoramentos no modelo do nosso recurso de correção automática, testado em condições reais. O Snyk Agent Fix agora oferece:
Suporte a 8 linguagens
Uma tecnologia inovadora, com patente pendente, que aumenta significativamente a precisão não apenas do Snyk Agent Fix, mas também de outros modelos nos quais a testamos, como GPT-4, GPT-3.5 e Mixtral.
IA multimodal (nossa conhecida abordagem híbrida de IA) para maximizar a robustez por meio da diversidade de modelos.
Atendendo à necessidade de correções automáticas sem complicações com o Snyk Agent Fix
O Snyk Code analisa o código-fonte em que os desenvolvedores estão trabalhando em todas as etapas do ciclo de vida de desenvolvimento de software (SDLC) — do IDE ao SCM e aos pipelines de CI/CD —, oferecendo precisão, velocidade e correção proativa incomparáveis na identificação de problemas de segurança no universo do SAST.
De acordo com as políticas de segurança aplicáveis, depois que novos problemas são identificados, os desenvolvedores procuram corrigi-los. Mas nem sempre é simples resolver problemas de segurança. É preciso entender como o código funciona no contexto mais amplo da base de código, qual é o problema de segurança e qual é a melhor forma de corrigi-lo.
O Snyk Code oferece aos desenvolvedores explicações detalhadas sobre os problemas de segurança detectados e exemplos de correções de repositórios reais com licenças permissivas, que podem servir de inspiração para resolver esses problemas. Antes do Snyk Agent Fix, o Snyk Code já havia dado um grande passo para reduzir a carga cognitiva dos desenvolvedores. Ainda assim, eles precisavam encontrar uma forma de corrigir os problemas de segurança por conta própria.
Por isso, com o Snyk Agent Fix, buscamos facilitar ainda mais a correção de vulnerabilidades para os desenvolvedores. O recurso é baseado na parte de LLM da nossa máquina DeepCode AI (que combina IA simbólica e aprendizado de máquina, incluindo nosso LLM). O Snyk Agent Fix ajudou desenvolvedores a criar software seguro com mais facilidade, permitindo corrigir problemas de segurança automaticamente, começando por projetos em JavaScript e TypeScript. Quem usava o Snyk Code no Visual Studio Code ou no Eclipse podia selecionar ⚡Fix this issue ao encontrar novos problemas de segurança.
Aprendizados com nossa versão beta pioneira
Quando o Snyk lançou o Snyk Agent Fix em acesso antecipado, empresas de diversos portes e setores começaram a adotá-lo. O recurso oferecia às equipes uma forma inédita de corrigir problemas de segurança: resolvendo-os diretamente no IDE e automatizando as correções antes que as vulnerabilidades chegassem à produção.
Embora tenhamos sido pioneiros no lançamento de um recurso de correção automática de código com IA, toda versão beta está, por natureza, em fase de aprimoramento. Por isso, queríamos continuar refinando o Snyk Agent Fix. Entre nossos objetivos estavam aumentar a consistência e a precisão das correções, aprimorar as regras e ampliar a cobertura de linguagens, estender a acessibilidade (na época, o recurso só estava disponível no IDE) e melhorar a experiência do usuário.
Havia bastante a fazer. Com a colaboração e o feedback dos usuários, decidimos começar pelos pontos de maior impacto:
Melhorar a qualidade dos resultados
Oferecer suporte a mais linguagens
A qualidade e a segurança das correções são fundamentais em um recurso como o Snyk Agent Fix. Por isso, decidimos ampliar e aprofundar as correções propostas.
Criando um recurso confiável de correção automática em um mundo com IA
Um novo modelo de LLM para mais velocidade e precisão
Quando o Snyk Agent Fix foi lançado, ele usava uma versão do modelo T5 do Google, amplamente ajustada pelos principais especialistas em segurança da Snyk. Por que começamos com esse modelo? Para contextualizar, estávamos à frente do setor e trabalhávamos no Snyk Agent Fix havia dois anos quando ele foi lançado — numa época em que os LLMs ainda estavam dando os primeiros passos. Por isso, entre as opções viáveis disponíveis naquele momento, consideramos que o T5 era o mais adequado às nossas necessidades. Ajustamos o modelo com projetos de código aberto com licenças permissivas que já haviam corrigido problemas de segurança, para ensiná-lo a resolvê-los.
Antes de propor uma correção de segurança, o mecanismo híbrido de IA da Snyk, DeepCode AI, usava regras rigorosas e algoritmos de IA simbólica baseados em conhecimento para reanalisar a correção do código com nossas previsões de segurança incorporadas. Isso reduzia a possibilidade de alucinações e correções inadequadas, às quais todos os LLMs, inclusive o Snyk Agent Fix, estão sujeitos. Essa verificação das correções propostas pelo Snyk Agent Fix continua sendo feita, mesmo após a migração para um modelo de LLM diferente e mais avançado (veja abaixo).
Com base no que aprendemos nas etapas iniciais do Snyk Agent Fix, decidimos adotar modelos de LLM para gerar correções mais precisas para problemas de segurança. Testamos todos os LLMs potencialmente viáveis e promissores para descobrir qual oferecia os melhores resultados quando combinado com nossos métodos de ajuste fino. Com base na precisão e na velocidade, escolhemos o StarCoder como modelo-base e o ajustamos com nossos conjuntos de dados de treinamento.
Os resultados melhoraram de forma impressionante:

O Snyk Agent Fix pode corrigir automaticamente vários tipos de problemas de segurança e de código. Conforme as linhas da imagem acima, classificamos esses problemas em 5 categorias — AST, interprocedural, local, SecurityLocal, e SecurityFlow* — para resumir os resultados da avaliação. Para cada problema encontrado, o Snyk Agent Fix gera 5 possíveis correções. As 3 colunas da imagem acima — pass@1, pass@3 e pass@5 — indicam a porcentagem de resultados que contêm 1 correção precisa entre 1, 3 e 5 possíveis correções, respectivamente.
Para garantir a precisão do Snyk Agent Fix, todas as previsões são verificadas com base em regras criadas por especialistas e em nossa base de conhecimento (incorporadas à nossa IA simbólica). Uma previsão passa pelas verificações se gera código sintaticamente correto e analisável, além de corrigir o problema de segurança relevante sem introduzir novos problemas. Esse é um diferencial exclusivo da Snyk: usamos nosso próprio analisador de código e nossa base de conhecimento, ambos com tecnologia de IA simbólica (saiba aqui por que isso é importante), para filtrar correções incorretas e alucinações geradas pelo LLM que alimenta o Snyk Agent Fix, antes que qualquer correção defeituosa chegue aos nossos clientes.
Isso torna o Snyk Agent Fix mais robusto e seguro do que outras soluções de correção automática que analisam código e dependem exclusivamente de LLMs para corrigir problemas — ou até para verificá-los e corrigi-los. Confira detalhes sobre nossas avaliações e categorias de problemas no artigo de pesquisa sobre a tecnologia CodeReduce da Snyk (veja abaixo).
Tecnologia inovadora, com patente pendente, que aumenta significativamente a precisão até mesmo do GPT-4
Também trabalhamos para melhorar a qualidade dos resultados aprimorando a forma como os dados do usuário (ou seja, o código relevante) eram incluídos no prompt do LLM usado pelo Snyk Agent Fix. Essa tecnologia proprietária da Snyk, chamada “CodeReduce”, agora está com patente pendente. O CodeReduce usa análise de programas para direcionar a atenção do LLM apenas às partes do código necessárias para realizar a correção. Assim, o LLM pode se concentrar em um trecho menor, que contém o defeito identificado e o contexto de código necessário.
Em outras palavras, mais uma vez a Snyk elimina o ruído e simplifica o processo para gerar resultados eficientes e de maior impacto. Com isso, o CodeReduce reduz drasticamente a quantidade de código que o Snyk Agent Fix precisa processar, o que ajuda a melhorar a qualidade das correções geradas por todos os modelos testados (incluindo GPT-3.5, GPT-4 e Mixtral) e reduz as chances de alucinações. Na prática, aumentamos a precisão do GPT-4 em até impressionantes 20% (veja a imagem abaixo). Em breve, vamos explicar melhor como o CodeReduce funciona. Fique de olho!

Suporte a 8 linguagens e melhorias gerais nas regras e nos dados
Além de mudar o modelo-base e aprimorar o foco do Snyk Agent Fix para oferecer resultados melhores, também queríamos ampliar a abrangência e a profundidade das correções. Para isso, trabalhamos com nossa equipe de rotulagem para melhorar a qualidade do banco de dados de correções e verificar se os resultados gerados pelo Snyk Agent Fix eram precisos, aprimorando continuamente nosso modelo.
Com nossa abordagem multidimensional para aprimorar o recurso de correção automática do Snyk Code, passamos de centenas de regras compatíveis apenas com JavaScript/TypeScript (que contamos como uma única linguagem) para muito mais regras em 7 linguagens adicionais, com maior confiança em cada regra. Agora oferecemos suporte às seguintes linguagens para ameaças do OWASP Top 10:
JavaScript/TypeScript
Java
Python
C/C++
C# (suporte limitado)
Go (suporte limitado)
APEX (suporte limitado)
Também aprimoramos a forma de coletar e processar dados. Essas melhorias aumentaram significativamente a confiabilidade e elevaram a precisão média do nosso LLM para 80%, facilitando a verificação da segurança das correções sugeridas pelo LLM com nossa IA simbólica, como explicado acima. O que isso significa para você? Significa que você pode esperar que as sugestões do DeepCode AI Fix resolvam as vulnerabilidades relevantes em 100% dos casos, em menos tempo do que antes.
O que vem por aí?
Apesar dos grandes avanços na criação de um recurso confiável de correção automática, pretendemos continuar aprimorando, otimizando e iterando o LLM do Snyk Agent Fix. Também vamos trabalhar na experiência do usuário no IDE e além dele. O que isso significa?
Aprimoramentos no modelo para correções ainda mais rápidas e melhores
Os LLMs continuam evoluindo rapidamente, e novos modelos ou versões aprimoradas 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 os testes mostrarem que é possível alcançar ainda mais melhorias, provavelmente migraremos para o StarCoder 2. Além do LLM em si, também estamos investindo em:
Correções mais rápidas para os usuários, com a otimização do nosso modelo neural e do servidor, reduzindo a latência de geração de correções de cerca de 12 segundos, em média, para menos de 6 segundos.
Ampliar a cobertura de regras e melhorar a qualidade das correções nas principais linguagens: JavaScript/TypeScript, Java, Python, C/C++ e C#.
Uma experiência mais simples no IDE para corrigir problemas sem esforço
Agora, quem desenvolve com o Snyk Agent Fix consegue ver as correções propostas com mais facilidade, escolher entre várias opções a que melhor atende às suas necessidades e visualizar as possíveis alterações no código, tudo no mesmo fluxo, antes de aplicar a correção proposta.

Todos esses recursos ajudam os desenvolvedores a programar com mais rapidez, facilidade e segurança. Mas o que realmente ajuda os desenvolvedores — além da precisão do Snyk Agent Fix — é a compreensão do contexto do código pelo nosso LLM. Ao contrário de algumas ferramentas de segurança que entendem o código apenas como texto simples, o Snyk Agent Fix entende o código dos desenvolvedores e consegue corrigi-lo como um desenvolvedor faria: fazendo alterações com maior probabilidade de compilar e aplicando a correção mais impactante e eficiente para resolver os problemas de segurança.
Usuários de todos os IDEs compatíveis atualmente, incluindo VS Code e Eclipse, poderão aproveitar a correção de vulnerabilidades automática e simplificada. Também vamos ampliar o acesso para usuários dos IDEs JetBrains.
Correção automática pronta para uso, com precisão pioneira, alta segurança e ampla aplicabilidade
No último ano, trabalhamos bastante para atender aos comentários dos usuários sobre o Snyk Agent Fix e avançamos muito na amplitude e profundidade dos resultados, além de melhorar a qualidade geral das correções automáticas do DeepCode AI. Agora, os usuários contam com maior aplicabilidade, resultados mais precisos na correção automática e correções mais seguras, tudo diretamente no IDE:
Compatível com 8 linguagens.
Nossa tecnologia CodeReduce, com patente pendente, aumenta a precisão da correção automática não só do Snyk Agent Fix, mas também de outros modelos de IA, como o GPT-4.
Usamos vários modelos de IA para reduzir os riscos inerentes aos LLMs e à homogeneidade dos modelos. Também verificamos as respostas do nosso LLM com nosso mecanismo de análise estática e análises simbólicas de IA baseadas em conhecimento, que filtram correções incorretas e alucinações geradas pelo modelo antes que cheguem ao usuário final.
Um recurso de correção automática que passou por testes intensivos em beta por tanto tempo quanto o nosso proporciona uma experiência superior não apenas na teoria, mas também na prática. Temos orgulho do que conquistamos, mas não pretendemos nos acomodar. Continuaremos investindo para melhorar os resultados do Snyk Agent Fix e a experiência dos usuários.
Quem já é cliente do Snyk Code pode experimentar o Snyk Agent Fix no IDE ativando as sugestões de correção do Snyk Code nas configurações do Snyk Preview (veja a imagem abaixo). Saiba mais na nossa documentação.

Ainda não tem o Snyk Code, mas quer começar a corrigir problemas com confiança na velocidade da IA? Cadastre-se para criar uma conta Snyk aqui e comece hoje mesmo a trabalhar de forma mais proativa, simples e eficiente.
Assuma o controle da segurança de IA com a Snyk
Descubra como a Snyk ajuda a proteger o código gerado por IA pelas suas equipes de desenvolvimento, enquanto oferece às equipes de segurança visibilidade e controle completos.
*Para analisar o código, o Snyk Agent Fix usa o Snyk Code. Na versão de setembro de 2023, o Snyk Code implementa 156 verificações diferentes. Classificamos essas verificações em cinco categorias, de acordo com o tipo de análise necessário e se verificam propriedades de segurança:
AST: A maioria das verificações de AST só pode ser feita na árvore sintática abstrata. Muitas dessas regras verificam propriedades das extensões VueJS ou React da linguagem e incluem itens como tags ausentes, nomes de variáveis duplicados e padrões que normalmente não dependem da análise do fluxo de controle ou de dados do programa.
Interprocedural: As verificações interprocedurais também dependem da análise interprocedural. Diferentemente das verificações locais, porém, as propriedades verificadas por elas sempre envolvem funções ou métodos diferentes no programa. Essas regras identificam incompatibilidades entre a assinatura de um método, sua implementação ou seu uso. (Observe que, na pesquisa publicada sobre a nova tecnologia CodeReduce, usamos o termo Filewide para Interprocedural.)
Local: As verificações locais usam análise interprocedural para identificar valores incorretos que seriam passados a métodos que não os aceitam, recursos que não são liberados e expressões que não têm efeito ou sempre produzem resultados com semântica inesperada.
SecurityLocal: Assim como as verificações locais, as verificações SecurityLocal identificam usos incorretos de APIs do ponto de vista da segurança, além de outros tipos de configurações incorretas de segurança. Para isso, geralmente rastreiam todas as chamadas de métodos em um objeto ou os valores passados como parâmetros para chamadas de métodos ou funções.
SecurityFlow: As verificações SecurityFlow costumam ser as mais complexas oferecidas pelo analisador estático selecionado. Essa categoria inclui todas as regras de análise de taint que envolvem a análise interprocedural do fluxo de dados desde uma fonte de dados, além da detecção de vários padrões de sanitização de dados.
