Abrindo caminho para a segurança de aplicações cloud native
21 de dezembro de 2020
0 minutos de leitura2020 foi um ano extremamente desafiador para todos nós. Mas, com o início de um novo ano logo ali, esta é uma ótima oportunidade para reservar alguns momentos e reconhecer o trabalho das nossas equipes de engenharia e produto. Um trabalho árduo, realizado em circunstâncias difíceis e desgastantes, que ajudou a posicionar a Snyk como a principal solução de segurança de aplicações cloud native do mercado, criada para desenvolvedores.
O que é segurança de aplicações cloud native?
O desenvolvimento de software como conhecíamos até poucos anos atrás mudou.
Os processos de desenvolvimento e implantação de aplicações mudaram para permitir implantações mais rápidas e frequentes. O código que compõe as aplicações também mudou: cada vez mais, ele combina código open source, código proprietário, contêineres e infraestrutura como código.
Do ponto de vista da segurança de aplicações, essas mudanças trazem um desafio único, que exige uma solução igualmente única. Por isso, na SnykCon deste ano, anunciamos nossa plataforma de segurança de aplicações cloud native, a única do setor criada para desenvolvedores e que permite desenvolver toda a aplicação cloud native com rapidez e segurança em um ambiente DevOps.
Vamos começar a retrospectiva?
1. Integração desde o início e em todo o SDLC
O primeiro passo no gerenciamento de vulnerabilidades é identificar que existe um problema. Em 2020, nos dedicamos bastante a facilitar a implementação da Snyk nas diferentes etapas do ciclo de vida de uma aplicação. Esse trabalho incluiu novos plugins para IDEs, melhorias nas integrações com GitHub e Bitbucket e novas integrações com registros privados e de contêineres.
IDEs
Integrar os testes de segurança ao ambiente de desenvolvimento local é fundamental para antecipar a segurança no ciclo de desenvolvimento. Isso permite que os desenvolvedores encontrem e corrijam problemas o mais cedo possível, antes que o custo da correção aumente. Em 2020, a Snyk ampliou o suporte já existente para Eclipse e IntelliJ e passou a oferecer suporte a todas as principais IDEs da JetBrains: WebStorm, PyCharm, PhpStorm, GoLand e outras.

Snyk CLI
Com a adição de Snyk Container e Snyk IaC, a Snyk CLI pode fazer mais do que nunca. Para isso, foi preciso atualizar o funcionamento da CLI e dar suporte aos recursos existentes e futuros. O resultado foi um fluxo de trabalho aprimorado e novos recursos.
Teste do Snyk Container
O comando anterior snyk test --docker foi substituído pelo novo comando snyk container test e pelo subcomando monitor correspondente. Além da sintaxe da CLI, o novo comando container traz várias melhorias internas:
Como você deve imaginar pela mudança no nome, agora podemos analisar muito mais do que apenas contêineres Docker. A Snyk funciona muito bem com qualquer contêiner OCI, mesmo que você não tenha um mecanismo Docker em execução. Se você usa podman ou cria aplicações com ferramentas como jib para seus aplicativos Java, a Snyk pode fazer a análise.
Se você extraiu um arquivo com os arquivos de uma imagem de contêiner e quer analisar esse conteúdo em vez da própria imagem, agora o Snyk Container também faz isso.
E, se você usa imagens distroless para reduzir as vulnerabilidades da imagem base, a nova Snyk CLI também faz a análise corretamente.
Além disso, agora que há subcomandos para
containereiac, o sistema de ajuda integrado foi simplificado e aprimorado. Assim, você pode acessar a ajuda contextual quando precisar.
Teste do Snyk IaC
Snyk Infrastructure as Code (IaC) foi nosso terceiro grande lançamento de produto no ano passado — falaremos mais sobre isso adiante. Inicialmente, o Snyk IaC permitia fazer análises apenas em repositórios Git. Mas, como mais clientes queriam automatizar os testes nos próprios pipelines de CI, adicionamos suporte a esses testes na Snyk CLI. Você pode analisar arquivos do Kubernetes e do Terraform com o comando snyk iac test.
Fluxos de trabalho baseados em Git
Neste ano, também nos concentramos em aprimorar nossas integrações com os diversos sistemas de gerenciamento de código-fonte baseados em Git, tornando-as mais intuitivas para desenvolvedores e garantindo uma experiência mais integrada para os respectivos usuários.
GitHub
Como você provavelmente imagina, nossa integração com o GitHub é o ponto de integração mais popular da Snyk. Por isso, estamos sempre lançando novos recursos para tornar essa experiência o mais simples possível.
Primeiro, adicionamos a opção de configurar a conta do GitHub em nome da qual a Snyk abre PRs de correção e atualização, além da possibilidade de atribuir esses PRs a um colaborador específico do repositório. Também passamos a permitir que um colaborador solicite a omissão de um teste da Snyk que falhou.

Integração de segurança do GitHub
Em outubro, o GitHub lançou seus recursos de integração de segurança de terceiros, permitindo que apresentássemos resultados do Snyk Container e do Snyk IaC diretamente na aba Security dos repositórios do GitHub. Já oferecíamos suporte a GitHub Actions há algum tempo. Esse novo recurso permite que desenvolvedores que já usam bastante o GitHub acessem relatórios detalhados de segurança na interface do GitHub.

Análise de Dockerfiles a partir do SCM
Apesar de todas as vantagens dos contêineres, um efeito colateral é que as imagens ficam armazenadas separadamente dos Dockerfiles usados para criá-las. Do ponto de vista da segurança, isso significa que você não sabe se o contêiner é “seguro” até depois de criá-lo e analisá-lo com um scanner.
Isso ficou para trás. A Snyk já se integra às suas ferramentas de SCM favoritas e, como provavelmente seu Dockerfile está armazenado junto com o código, adicionamos a possibilidade de detectar e analisar o Dockerfile diretamente em um repositório. Em seguida, verificamos qual imagem base você selecionou e informamos as vulnerabilidades presentes nela. Esse recurso facilita começar a fazer análises de contêineres e mostra resultados imediatos, já que a imagem base costuma ser a origem da maioria das vulnerabilidades no início.
Outro benefício é que agora você pode associar as imagens de contêiner detectadas nos testes ao Dockerfile correspondente. Essa associação entre os dois objetos já era possível no Snyk Container, mas agora o processo ficou mais simples: você não precisa mais procurar o Dockerfile nos repositórios Git e pode identificar facilmente quais imagens estão vinculadas a cada Dockerfile.
Bitbucket
Os usuários do Bitbucket Cloud ficaram felizes em saber que a Snyk adicionou suporte ao Code Insights, permitindo que eles visualizem problemas diretamente na interface do Bitbucket. Também aprimoramos o Snyk Pipe — usado para analisar vulnerabilidades nos pipelines de CI/CD do Bitbucket —, que também passou a oferecer suporte ao Code Insights.
Azure Repos
Também adicionamos suporte ao Azure Repos Server, complementando nossa cobertura em todo o ecossistema Microsoft Azure: do Azure Repos (na nuvem e, agora, também localmente) ao Azure Pipelines, Azure Container Registry e Azure Functions.
2. Ampliando o suporte ao ecossistema
Em 2020, também ampliamos a cobertura das linguagens de programação já disponíveis e estendemos os testes de segurança da Snyk para oferecer suporte a mais gerenciadores de pacotes e ecossistemas.
Java
Aprimoramos a análise de segurança de projetos Java Gradle importados de repositórios Git (GitHub/GitLab/Bitbucket/Azure Repos) com a inclusão de suporte a arquivos gradle.lockfile. O uso de arquivos de lock traz vários benefícios e, no contexto dos testes de segurança da Snyk, garante resultados mais precisos e completos. Saiba mais aqui.
Python
Acompanhando a popularidade desse ecossistema, observamos um aumento constante no número de projetos Python analisados por usuários da Snyk. Por isso, neste ano fizemos várias melhorias para ajudar as organizações que usam Python a proteger melhor suas bases de código. Adicionamos suporte ao Poetry, permitindo que usuários desse gerenciador de pacotes e projetos Python em ascensão analisem e monitorem seus projetos pela Snyk CLI. Também incluímos suporte ao Pipenv nas integrações de SCM. Para facilitar a correção de vulnerabilidades em Python, adicionamos fluxos de trabalho de correção automatizada para Python.

Análise de um projeto Poetry na Snyk CLI
Golang
O Golang cresceu exponencialmente nos últimos anos e também é uma das linguagens favoritas dos usuários da Snyk. Em 2020, investimos em melhorias de desempenho e cobertura para essa linguagem. A migração para depGraphs aprimorou significativamente a experiência de análise de projetos Go, permitindo analisar com rapidez projetos grandes, como o Kubernetes! O suporte a projetos Go Modules, que já estava disponível nas análises pela CLI, foi ampliado para incluir nossas integrações de SCM baseadas em Git. Também trabalhamos para permitir a detecção de vulnerabilidades em contêineres Go.

Kubernetes e Terraform
Em 2020, lançamos nosso terceiro produto oficial: Snyk Infrastructure as Code (Snyk IaC). Com ele, você pode analisar as configurações de implantação enquanto ainda estão no código e, assim, saber que os recursos criados estão configurados corretamente quando chegar a hora de implantar. Com cada vez mais aplicações e infraestruturas em nuvem definidas em manifestos declarativos, mais desenvolvedores precisam garantir que seus aplicativos e serviços estejam seguros. E, como as alterações podem ocorrer a cada commit de código, a única forma de escalar é integrar a segurança ao pipeline para encontrar e corrigir problemas antes da implantação.

3. Priorizando o backlog de vulnerabilidades
Os backlogs de vulnerabilidades costumam acumular milhares de problemas rapidamente. É impossível — e, em geral, desnecessário — resolver todos eles. Mas por onde começar?
Por isso, neste ano nos dedicamos especialmente a ajudar equipes de desenvolvimento e segurança a decidir onde concentrar esforços para obter o maior impacto na segurança. Para isso, lançamos uma série de recursos de priorização criados para desenvolvedores, que oferecem às equipes as ferramentas e o contexto de segurança necessários para analisar os problemas e priorizar as correções com eficiência.
Pontuação de prioridade
O novo Priority Score da Snyk é um sistema avançado de pontuação integrado, baseado em um algoritmo proprietário que analisa diversos fatores, como a pontuação CVSS, a disponibilidade de uma correção, a existência de exploits conhecidos, a idade da vulnerabilidade e se ela pode ser explorada no contexto da aplicação. A pontuação aparece nos cartões de cada problema na interface da Snyk e permite filtrar e classificar o backlog rapidamente.

Vulnerabilidades alcançáveis
Vulnerabilidades alcançáveis é uma ferramenta de análise avançada que oferece contexto sobre vulnerabilidades no nível da aplicação e ajuda você a determinar se uma função vulnerável pode ser alcançada durante a execução da aplicação. Usuários da Snyk já usam o recurso Reachable Vulnerabilities para orientar as decisões de correção em projetos Java Maven e Gradle. No próximo ano, ampliaremos o suporte a outros ecossistemas.

Maturidade do exploit e importância relativa das vulnerabilidades no Linux
O recurso de pontuação de prioridade também funciona com o Snyk Container e considera detalhes adicionais específicos de contêineres. Por exemplo, se uma vulnerabilidade tem um exploit maduro e está sendo executada em um cluster Kubernetes, sua pontuação de prioridade aumenta. Se a configuração do pod do Kubernetes aumenta o risco — como ao executar o contêiner como root —, isso também é levado em conta na pontuação de prioridade.
Além disso, as vulnerabilidades em pacotes Linux podem variar de acordo com a distribuição Linux escolhida para as imagens dos seus contêineres. Uma vulnerabilidade de alto risco em um pacote Linux pode ser considerada de baixa gravidade em uma distribuição específica, como Debian ou Ubuntu. A Snyk leva as duas classificações em conta, mas considera os mantenedores da distribuição a fonte oficial. Por isso, atribuímos à vulnerabilidade a classificação da distribuição — baixa, neste exemplo.

Snyk Container com detalhes de segurança específicos de cada distribuição
4. Corrija mais problemas com mais facilidade e confiança
Há muitas ferramentas que analisam seu código em busca de problemas. Ajudar você a agir e corrigir esses problemas é outra história. A correção automatizada e acionável é um componente essencial da plataforma Snyk e, naturalmente, foi uma das prioridades das equipes de produto e desenvolvimento da Snyk neste ano.
Mantenha suas dependências atualizadas
Em março, anunciamos uma parceria entre a Snyk e a Neighbourhoodie Software, criadora do Greenkeeper. Essa parceria possibilitou o lançamento de atualizações automáticas de dependências da Snyk, que criam automaticamente pull requests acionáveis e contextualizados quando novas versões de dependências são identificadas, ajudando os desenvolvedores a manter seus projetos mais saudáveis e seguros.
Mescle correções com confiança
Para ajudar os desenvolvedores a mesclar com mais confiança os PRs de correção da Snyk, lançamos o Merge Advice — um novo selo adicionado aos pull requests que indica se a correção provavelmente causará alterações incompatíveis. Assim, os desenvolvedores têm as informações necessárias para decidir se devem ou não mesclar o PR.

Ignorar o teste de PR da Snyk
A Snyk executa automaticamente testes de segurança e licença para qualquer novo pull request aberto por você ou por outro colaborador em um repositório do GitHub. Para minimizar os impactos no fluxo de desenvolvimento, adicionamos a opção de consultar os detalhes completos dos motivos da falha do pull request e solicitar ao administrador que ignore o teste para aprovar o pull request à força.
Orientações para infraestrutura como código
Snyk IaC oferece uma interface exclusiva que mostra os problemas de IaC e orienta os usuários sobre como corrigi-los. Em nossas conversas com clientes, percebemos que muitas organizações ainda estão começando a formalizar seus processos de IaC. Há diferentes níveis de conhecimento e, principalmente quando se trata de segurança, muitos usuários precisam de orientação adicional. Além disso, os problemas de IaC nem sempre são vulnerabilidades no sentido tradicional. Portanto, mesmo que houvesse tempo para pesquisar cada problema, nem sempre seria possível consultar uma fonte como a NVD para encontrar informações e referências. Por isso, incorporamos orientações ao Snyk IaC para contextualizar os problemas identificados e avaliar seus impactos.

5. Gerencie segurança e conformidade em grande escala
Para gerenciar programas de segurança de aplicações que abrangem milhares de aplicações e projetos, as organizações precisam encontrar maneiras de maximizar a eficiência e a produtividade. Por isso, em 2020, a Snyk investiu em recursos de governança em grande escala e lançou várias funcionalidades importantes no Snyk Open Source, no Snyk Container e no Snyk IaC.
Políticas de segurança e licenças
Para ajudar as organizações a controlar com mais facilidade a segurança e a conformidade em diferentes projetos e equipes, a Snyk lançou um novo mecanismo de políticas que permite definir, personalizar e aplicar políticas de licença e segurança.
Com as políticas de licença, as organizações podem definir limites legais aceitáveis e aplicá-los em toda a empresa. As políticas de licença da Snyk também permitem que os responsáveis incluam instruções jurídicas práticas para orientar os desenvolvedores quando encontrarem um problema relacionado a uma licença específica.
As políticas de segurança permitem definir regras para priorizar ou reduzir automaticamente a prioridade das vulnerabilidades. Cada política inclui uma ou mais regras que determinam exatamente como as vulnerabilidades devem ser tratadas. As regras acionam ações com base em condições. No momento, elas podem alterar a gravidade das vulnerabilidades de acordo com o tipo (usamos a CWE, um padrão comum para categorizar vulnerabilidades com base em características compartilhadas) e a maturidade do exploit. Por exemplo, uma política pode incluir uma regra para aumentar a gravidade de todas as vulnerabilidades de XSS (cross-site scripting) com exploits maduros e outra para reduzir a gravidade das vulnerabilidades de RCE (execução remota de código).

Gerenciamento de projetos
Gerenciar milhares de projetos diferentes, cada um com milhares de problemas de segurança, pode ser uma tarefa avassaladora. Até mesmo encontrar um projeto pode ser difícil, sem falar em identificar aqueles que precisam de atenção urgente.
Os atributos e as tags de projeto da Snyk ajudam você a organizar os projetos no Snyk Open Source, no Snyk Container e no Snyk IaC de maneira padronizada, associando a eles metadados sobre impacto nos negócios e pilha tecnológica. Assim, fica mais fácil pesquisar e encontrar projetos, além de direcionar seus esforços para projetos específicos com base no ambiente de implantação, estágio do ciclo de vida, pontuação de prioridade e outras características importantes para sua organização.
Gerenciamento do backlog
O Gerenciamento do backlog, anunciado na SnykCon há apenas alguns meses, abre pull requests de correção direcionados para resolver vulnerabilidades no backlog, com base na pontuação de prioridade. Isso permite reduzir o backlog de vulnerabilidades em um ritmo mais administrável.
Gerenciamento da conformidade de licenças
As dependências de código aberto incorporadas ao seu projeto representam riscos tanto de segurança QUANTO jurídicos. Neste ano, anunciamos os recursos de gerenciamento da conformidade de licenças da Snyk, criados para desenvolvedores, que ajudam você a gerenciar e cumprir com mais facilidade as licenças de código aberto que utiliza.
A Snyk oferece um gerenciamento da conformidade de licenças abrangente, integrando-se a todas as etapas do SDLC (CLI, IDE, SCM, CI/CD) e permitindo detectar licenças em dependências diretas e transitivas. Há suporte para as linguagens de programação mais populares, incluindo, sem ordem específica de importância, Java, JavaScript, Scala, Go, Python, Ruby, PHP, Swift, Objective-C e .NET.
Os problemas de licença identificados são apresentados com todo o contexto de que os desenvolvedores precisam para avaliar o escopo do problema e agir, incluindo instruções jurídicas detalhadas que especificam as próximas etapas para cumprir as políticas da empresa. Diversos recursos de painéis e relatórios permitem que os responsáveis consultem e compartilhem listas detalhadas das licenças utilizadas, incluindo um relatório de lista de materiais (BoM) com todos os componentes e licenças de código aberto, além das informações de direitos autorais.
O que vem por aí em 2021 (alerta de spoiler!)
2020 foi um ano repleto de novidades da Snyk. E você ainda não viu o que preparamos para 2021!
Os pilares da Snyk — facilidade de uso para desenvolvedores, correção automatizada e acionável e profundidade em segurança — continuarão sendo fundamentais nos próximos anúncios. Vamos adicionar suporte a um ecossistema muito importante e reforçar algumas das funcionalidades exclusivas que fazem da Snyk uma solução de ponta para segurança de aplicações cloud native.
Desejamos a todos um feliz e saudável ano novo!