Serverless é ótimo, mas e a segurança das minhas funções AWS Lambda e de suas dependências?
3 de julho de 2019
0 minutos de leituraAs plataformas de Function as a Service (FaaS) corrigem as dependências do sistema operacional para você, mas não fazem nada para proteger as dependências da sua aplicação, como as obtidas no npm, PyPI, Maven e similares. Essas bibliotecas são tão comuns e vulneráveis quanto as dependências do sistema operacional, e você — responsável pela aplicação — deve atualizá-las ou aplicar correções quando uma vulnerabilidade nelas é divulgada.
Além disso, como os invasores sabem que as dependências de servidor no nível do sistema operacional, cuja manutenção é responsabilidade do provedor de nuvem, recebem correções rapidamente, eles concentram a atenção no código da aplicação e em suas dependências.
Para destacar a complexidade de rastrear as dependências de uma função, no recente relatório State of Open Source Security 2019, a Snyk mostrou que as vulnerabilidades de segurança em dependências indiretas representam 78% do total.

Isso significa que, na maioria das vezes, as vulnerabilidades de segurança são encontradas em dependências indiretas instaladas pelas dependências de nível superior. No ecossistema npm, as dependências têm, em média, mais de 4 níveis de profundidade, o que torna difícil rastreá-las e acompanhar sua segurança.
Assim como no desenvolvimento de aplicações que não são serverless, você deve proteger as funções durante todo o ciclo de desenvolvimento. Comece pelo ambiente de desenvolvimento integrado (IDE), usando um plugin que avise sobre vulnerabilidades nas dependências necessárias durante o desenvolvimento, como no VSCode ou no IntelliJ. Depois, teste a segurança no CI durante o build e antes da implantação.
E se houvesse uma ferramenta para ajudar nos testes de segurança, abrindo pull requests automaticamente para corrigir vulnerabilidades assim que fossem descobertas ou interrompendo builds de integração contínua (CI) para evitar implantações quando novas vulnerabilidades fossem introduzidas?
Compartilhei mais informações sobre segurança serverless em uma publicação anterior, 10 práticas recomendadas de segurança serverless, que você pode ler depois. Mas, por enquanto, vamos à história do meu próprio projeto serverless:
Como testo a segurança das minhas funções serverless na AWS?
Em uma plataforma serverless, pode ser difícil monitorar as dependências de segurança das funções já implantadas. Quero mostrar rapidamente como faço isso com a Snyk no meu próprio projeto pessoal serverless, desenvolvido com Node.js e implantado no AWS Lambda.
Para encontrar e corrigir automaticamente vulnerabilidades nas dependências das suas funções, comece conectando a Snyk a um repositório Git de sua escolha.
Testei a ferramenta no meu repositório pessoal. Naveguei pelos meus repositórios do GitHub até encontrar o bazz, meu projeto serverless. Depois que o projeto foi analisado, também descobri vulnerabilidades de segurança nas dependências usadas pelas minhas funções Lambda:

Nossa! Encontrei várias vulnerabilidades tanto no meu projeto de frontend quanto no serviço de API das funções serverless! Está na hora de eliminá-las. Posso corrigi-las manualmente, abrindo um PR de correção na página de cada projeto pela interface da Snyk, ou o bot da Snyk pode identificá-las e abrir um PR automaticamente no meu repositório. Só preciso acompanhar os testes e fazer o merge do PR! Veja:

Imponha implantações seguras para funções serverless
Além do CI, do monitoramento do repositório de código-fonte e da aplicação proativa de correções para vulnerabilidades de segurança, o fluxo de implantação de uma função também deve passar por uma análise de segurança. As implantações devem ser interrompidas quando forem encontradas vulnerabilidades nas funções que estão sendo implantadas.
Exigir o monitoramento da segurança de código aberto nas implantações serverless acrescenta outra camada de proteção, garantindo que as funções não sejam implantadas nos ambientes de destino com vulnerabilidades conhecidas de código aberto nas dependências incluídas nelas.
O Serverless Framework é um kit de ferramentas bastante usado para desenvolver e implantar funções serverless. Sua arquitetura de plugins permite integrar fluxos de trabalho personalizados ao ciclo de vida das funções. A Snyk oferece um plugin do Serverless de código aberto que se integra perfeitamente ao framework.
A imagem a seguir mostra o plugin protegendo ativamente uma função contra a implantação, após detectar vulnerabilidades de segurança nas dependências de código aberto:

Também recomendamos configurar o plugin do Serverless Framework para registrar as dependências do projeto a cada implantação e monitorá-las, identificando novas vulnerabilidades assim que forem descobertas. Uma solução como a Snyk pode alertar você e corrigir o problema automaticamente, abrindo pull requests que corrigem as dependências vulneráveis.
Às vezes, o fluxo de trabalho de CI/CD serverless exige mais personalização e controle. É aí que o utilitário de linha de comando de código aberto da Snyk pode ajudar, oferecendo uma ferramenta de segurança flexível para desenvolvedores e profissionais de DevOps incorporarem aos seus fluxos de trabalho.
Você pode instalar a Snyk em um ambiente local ou em um job de CI no qual o projeto serverless está sendo compilado e executar snyk test para encontrar vulnerabilidades, como neste exemplo:
Corrigir vulnerabilidades de segurança o quanto antes é uma boa prática. Ainda assim, podem ocorrer divergências entre as versões das dependências no repositório de código-fonte e as versões na função efetivamente implantada. Isso acontece principalmente devido a atrasos na promoção do código para ambientes de homologação ou produção. Como resultado, a função implantada pode incluir dependências desatualizadas com vulnerabilidades conhecidas.
Por fim, não deixe de conferir a lista completa que preparei com 10 práticas recomendadas de segurança serverless! E crie uma conta gratuita na Snyk para começar a corrigir vulnerabilidades.
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.