Skip to main content

Snyk Security com o Language Server Protocol

Escrito por
Headshot of Bastian Doetsch

Bastian Doetsch

feature dev challenge

6 de setembro de 2022

0 minutos de leitura

A Snyk oferece plugins ou extensões para Visual Studio Code, IDEs da JetBrains, como IntelliJ, WebStorm, PHPStorm e GoLand, e Visual Studio. Mas você já quis integrar a Snyk ao seu trabalho diário usando seu editor ou IDE favorito — Vim, Emacs, Sublime ou Eclipse? Em breve isso será possível: publicamos nosso plugin para Eclipse, que inclui o novo Snyk Language Server Protocol.

Uma variedade de editores e IDEs

Atualmente, a Snyk oferece plugins para Visual Studio Code, Visual Studio, Eclipse e a plataforma IntelliJ. Essas integrações são robustas, mas diferem em funcionalidade, pois são desenvolvidas e mantidas individualmente.

As quatro IDEs que já oferecemos atendem à maioria dos desenvolvedores que usam a Snyk. Mas algumas pessoas gostariam de ter ainda mais opções de IDEs e editores e desenvolver em outros ambientes, sem abrir mão de integrações robustas com todos os produtos da Snyk durante suas tarefas de engenharia. Até agora, não tínhamos uma solução integrada e precisávamos indicar a CLI. Isso está mudando com o Language Server.

Conheça o Language Server Protocol

O Language Server Protocol (LSP) foi criado pela Microsoft e disponibilizado como código aberto em 2016. Ele é amplamente usado pelo VSCode e define padrões de comunicação com uma IDE para destacar e anotar o código, além de oferecer correções e ajuda na programação — incluindo suporte para relatar problemas. O LSP tornou possível ter uma experiência de programação rica em praticamente qualquer ambiente, já que existem servidores de linguagem repletos de recursos para quase todas as linguagens de programação.

Na Snyk, discutimos como poderíamos aproveitar esse protocolo para disponibilizar nossas análises em diferentes IDEs e concluímos que o LSP poderia atender à nossa necessidade de identificar problemas e vulnerabilidades. Em vez de desenvolver integrações específicas para cada IDE, podemos aproveitar o suporte ao LSP já disponível em diversos ambientes de desenvolvimento. Muitos deles já oferecem essa funcionalidade por padrão: Eclipse, VSCode, Visual Studio, Sublime, Vim, Atom e muitos outros editores são compatíveis com o protocolo. Até mesmo o novo JetBrains Fleet oferece suporte ao LSP.

Além disso, o LSP pode ser ampliado quando novas funcionalidades são necessárias, e cada vez mais IDEs oferecem suporte ao protocolo.

O Snyk Language Server

Diagrama de arquitetura mostrando plugins da Snyk e protocolos de servidor de linguagem em vários IDEs, conectados por uma rede não local à API, à CLI e ao S

Quando começamos a encapsular os produtos da Snyk por meio do Language Server Protocol, decidimos começar pelo Eclipse como a primeira IDE a usar esse protocolo como backend da Snyk. Isso porque o plugin da Snyk para Eclipse não tinha tantos recursos quanto os das outras plataformas, e já havia um plugin de Language Server disponível para o Eclipse. A integração LSP LSP4e já era compatível com o Eclipse e só precisava ser ampliada e configurada para atender às nossas necessidades.

Nosso Snyk Language Server é implementado em Go, o que nos permite criar binários independentes para diversas plataformas. Acabamos de torná-lo disponível para o plugin da Snyk para Eclipse e estamos trabalhando para adicioná-lo aos outros plugins de IDE que oferecemos, levando melhorias mais rapidamente a todos os ambientes de desenvolvimento.

O novo plugin 2.0 para Eclipse

O Eclipse IDE exibe código-fonte JavaScript com um painel de vulnerabilidades do Snyk, que mostra um alerta CWE-770 de gravidade média e sugestões de correção.

Embora tenhamos testado o Language Server internamente no NeoVim, Sublime e outros editores, sem integrações personalizadas, o plugin da Snyk para Eclipse é a primeira integração que a Snyk oferece oficialmente com essa funcionalidade.

O novo plugin para Eclipse inclui não apenas o Snyk Open Source, mas também o Snyk IaC (infraestrutura como código) e os achados do Snyk Code, além de opções de configuração ampliadas. Antes, só havia suporte ao Snyk Open Source.

Autenticação e download

A autenticação e o download dos binários necessários agora são iniciados sob demanda, e o progresso das análises e as notificações ao usuário são exibidos. Se você não quiser que os binários sejam gerenciados automaticamente, pode desativar essa opção e selecionar caminhos personalizados para manter o controle total.

Janela de preferências do Eclipse com as configurações do Snyk, recursos beta ativados, caminhos do servidor de linguagem e da CLI e opções de telemetria

Além disso, a integração está muito mais completa. O plugin da Snyk para Eclipse agora destaca problemas no editor de código, marca arquivos com problemas nas visualizações Project e Package Explorer e identifica elementos na visualização Outline. Os problemas encontrados pela Snyk também são exibidos e podem ser filtrados na visualização Problems do Eclipse.

As análises são iniciadas automaticamente na inicialização do plugin e ao abrir ou salvar documentos, mas também podem ser iniciadas manualmente pelo menu de contexto do projeto.

Anotações e destaques

Quando a Snyk encontra um problema, a linha correspondente é destacada no editor com um sublinhado e uma marca à esquerda, ao lado dos números das linhas.

Trecho de código mostrando dependências JSON de adm-zip versão 0.4.7 e body-parser versão 1.17.1

Visualização Problems

Uma lista de todos os problemas é exibida na visualização Problems do Eclipse.

Resultados do Snyk em um editor de código que listam vulnerabilidades de execução arbitrária de código, injeção de código e injeção de comandos em pacotes.

Project Explorer

Os arquivos com problemas também são destacados nas visualizações Project Explorer e Package Explorer:

Árvore de arquivos mostrando uma pasta routes que contém um arquivo index.js

Dicas ao passar o cursor

Ao passar o cursor sobre um problema — neste caso, um problema do Snyk Code —, são exibidas informações adicionais para ajudar você a entendê-lo e corrigi-lo.

Verificação do Snyk Code mostrando uma vulnerabilidade CWE-770 de gravidade média, causada por uma operação de arquivo sem limitação de taxa.

Code Lenses

Code Lenses permitem interagir com o código no próprio editor e enviar comandos ao servidor de linguagem. Elas aparecem acima da linha de código à qual estão associadas. No nosso caso, exibimos o fluxo de dados do Snyk Code usando Code Lenses, para que você navegue com um único clique entre os diferentes pontos do fluxo.

Editor de código exibindo uma declaração da função exports.import com um marcador de aviso na linha 241.

Ações de código

Para o Snyk Open Source e o Snyk IaC, o plugin permite abrir em uma janela do navegador descrições detalhadas dos problemas destacados:

Editor de código exibindo a versão de uma dependência adm-zip e sugestões de segurança em janelas pop-up sobre vulnerabilidades de travessia de diretório e gravação arbitrária de arquivos.

A partir de agora, o Eclipse oferecerá suporte automático a todos os produtos da Snyk por meio do Snyk Language Server.

Tenha a Snyk sempre à mão, do seu jeito

Com o LSP, o suporte da Snyk passa a estar integrado a uma ampla variedade de novas IDEs e editores. Com o Eclipse, adicionamos mais uma ferramenta importante, mas praticamente todos os ambientes de desenvolvimento mais usados são compatíveis com o LSP. Experimente a Snyk gratuitamente no ambiente que você preferir: clique aqui e instale o plugin ideal para você. Desenvolva com segurança.

Comece a participar de desafios de Capture the Flag

Aprenda a resolver desafios de Capture the Flag assistindo sob demanda ao nosso workshop virtual introdutório.