Segurança em Go: anunciamos proteção aprimorada para aplicações Go
16 de dezembro de 2020
0 minutos de leituraTemos o prazer de anunciar o suporte aprimorado à segurança em Go no Snyk Open Source e no Snyk Container, ajudando equipes de desenvolvimento e segurança a encontrar e corrigir vulnerabilidades em aplicações Go com mais eficiência!
Agora, desenvolvedores Go podem testar e monitorar seus projetos em todas as etapas do SDLC — desde as primeiras linhas de código no IDE até o uso da CLI do Snyk em pipelines de CI/CD — e também em fluxos de trabalho baseados em Git, com a disponibilidade beta do suporte a Go Modules nas integrações de SCM do Snyk.
É tudo Go!
Na pesquisa deste ano da Stack Overflow, Go foi apontada como uma das cinco linguagens mais admiradas e desejadas, posição que mantém há alguns anos. O número de usuários de Go também vem crescendo, como mostra o State of the Octoverse do GitHub. Atualmente, Go é a 4ª linguagem do GitHub em número de pull requests.
O que explica essa popularidade? Go foi projetada para ser prática e fácil de usar. Ela oferece desempenho otimizado, arquitetura leve e sintaxe simples (Go não tem classes!). A concorrência proporcionada pelas goroutines é um exemplo do que faz Go ser considerada uma linguagem “eficiente” — a Uber aproveitou esse recurso para criar um serviço que, em 2017, era o da empresa com o maior número de consultas por segundo. E a Uber não está sozinha. Esses atributos fizeram de Go “a linguagem de programação da nuvem”, usada por empresas como Google, Netflix e Salesforce e presente em projetos como Docker e Kubernetes.
Por isso, não surpreende que essas tendências também se reflitam na Snyk. Observamos um aumento constante no número de projetos Go testados e monitorados em busca de vulnerabilidades de segurança e problemas de licença.
Segurança em Go na Snyk
Apesar de ser uma linguagem relativamente nova (Go existe há pouco mais de 10 anos), o número de vulnerabilidades de segurança conhecidas em pacotes Go cresce constantemente — assim como o risco de incluir esses pacotes nos projetos.
De acordo com a pesquisa da comunidade Go de 2019, 75% dos desenvolvedores Go consideram a segurança extremamente importante e estão satisfeitos com a segurança em Go. A equipe de Go também anunciou que pretende investir na curadoria e nos testes de vulnerabilidades. São sinais muito positivos, mas, assim como em ecossistemas mais consolidados, é preciso gerenciar e mitigar os riscos de incluir dependências de código aberto.
A Snyk oferece às equipes de desenvolvimento e segurança que buscam manter a proteção ao criar aplicações Go uma solução fácil de implementar, que agiliza as correções e é baseada em inteligência de segurança precisa:
Facilidade para desenvolvedores - A Snyk se integra perfeitamente aos fluxos de trabalho de desenvolvimento existentes, analisa projetos em segundos (até mesmo projetos do tamanho do Kubernetes!) e é muito fácil de usar, o que ajuda a ampliar a adoção e aumentar a produtividade.
Ampla cobertura - A Snyk identifica vulnerabilidades de segurança eproblemas de licença em todas as etapas do SDLC, oferecendo suporte a aplicações Go Modules, inclusive as executadas em contêineres.
Profundidade em segurança - Desde 2019, a Snyk adicionou centenas de vulnerabilidades de segurança em Go ao banco de dados de vulnerabilidades Snyk Intel. A maioria dessas vulnerabilidades é exclusiva, não consta no NVD e foi descoberta pela equipe de pesquisa de segurança da Snyk.

Testes de segurança em Go com a CLI do Snyk
A CLI do Snyk oferece funções de linha de comando para testar, monitorar e corrigir vulnerabilidades conhecidas nos pacotes Go de código aberto que você inclui na sua aplicação. Você pode usá-la sob demanda durante o desenvolvimento ou como parte do seu sistema de CI (Build). A forma como a Snyk analisa dependências, com base em DepGraphs, garante que até projetos grandes sejam testados em segundos.
Para usar a CLI do Snyk, primeiro você precisa instalá-la e, em seguida, autenticá-la com uma conta Snyk para obter um token de API. É grátis!
Depois, você pode usar o comando snyk test para testar seu projeto local em busca de vulnerabilidades conhecidas. Ele apresenta detalhes sobre os problemas identificados — gravidade, tipos e descrições, número de caminhos vulneráveis, ações de correção e muito mais.

O comando snyk monitor também executa snyk test, mas cria uma captura do seu projeto Go e envia os resultados para o app/UI da Snyk. Não se preocupe: capturamos apenas as dependências, não o código-fonte! A Snyk monitora seu projeto e avisa você quando novas vulnerabilidades ou correções forem encontradas.
Da mesma forma, se você quiser testar aplicações Go empacotadas em um contêiner — talvez contêineres de terceiros cujo código-fonte não possa ser testado diretamente —, em breve poderá analisá-las de uma só vez como parte das análises de contêineres. Para isso, basta importar uma imagem de um registro de contêiner ou usar a funcionalidade de contêiner da CLI do Snyk. A análise identificará tanto as vulnerabilidades do contêiner quanto as dos módulos Go. Embora esse tipo de análise de contêiner detecte problemas no contêiner e no código de uma só vez, você ainda poderá ver os resultados em projetos separados. Isso é útil quando equipes diferentes são responsáveis por corrigir os problemas do contêiner e do código e também facilita a geração de relatórios separados.
Antecipe os testes de segurança dos projetos Go para o seu IDE
Quanto mais cedo você realizar os testes de segurança, menor será o custo da correção. Desenvolvedores Go podem encontrar e corrigir vulnerabilidades desde as primeiras linhas de código, usando sua ferramenta de desenvolvimento favorita e a ampla variedade de plugins de IDE oferecidos pela Snyk. Entre eles, há um plugin para o GoLand, da JetBrains — o segundo IDE mais usado por desenvolvedores Go, depois do VS Code, segundo a pesquisa mencionada acima.
Para usar o plugin da Snyk, basta baixá-lo no GoLand, em Preferences e, depois, em Plugins.

Depois de instalado, o plugin baixará a versão mais recente da CLI do Snyk. Assim que o processo terminar, você poderá fazer uma análise e ver os resultados em poucos segundos. No exemplo abaixo, a análise do projeto Vault, da HashiCorp, encontrou alguns problemas de segurança que podemos examinar melhor para entender como corrigi-los:

Novidade! Integre testes de segurança em Go aos seus fluxos de trabalho Git (BETA)
A melhoria que anunciamos aqui — a possibilidade de testar e monitorar projetos Go Modules nos seus repositórios — torna os testes de segurança e licença com a Snyk ainda mais eficientes.
As integrações de gerenciamento de código-fonte (SCM) da Snyk permitem realizar continuamente análises de segurança e licença em todos os repositórios Go Modules integrados, identificando vulnerabilidades de segurança e problemas de licença nas dependências de código aberto.
Depois de configurar a integração com GitHub ou Bitbucket e importar seu projeto Go Modules, você poderá acompanhar os problemas na página Projects da interface da Snyk:

Esse recurso ainda está na versão beta e será disponibilizado gradualmente. Se quiser ativá-lo para seus projetos Go, entre em contato com nossa equipe de suporte!
Se forem identificadas novas vulnerabilidades divulgadas nas suas dependências Go ou se um patch ou caminho de upgrade, antes indisponível, passar a existir, a Snyk avisará você pelo canal de notificações configurado.
Preparar, apontar... Go (com segurança)!
Essa melhoria vem na sequência de aprimoramentos recentes no desempenho dos testes de segurança de projetos Go pela CLI do Snyk e complementa a solução da Snyk para proteger aplicações Go, fácil de usar por desenvolvedores, abrangente e com profundidade em segurança.
Com a popularidade crescente e a rápida adoção de Go, e para atender às necessidades cada vez maiores dos nossos usuários, estamos comprometidos em aprimorar o suporte a esse ecossistema. Em 2021, também vamos melhorar os fluxos de trabalho de correção para facilitar a correção automática de vulnerabilidades em Go.
Usa Go e quer começar? Experimente a Snyk grátis!
Comece a jogar Capture the Flag
Aprenda a resolver desafios de Capture the Flag assistindo à gravação sob demanda do nosso workshop virtual introdutório.
