BLOG

Prática da conteinerização segura

Miniatura de Lori MacVittie
Lori MacVittie
Publicado em 20 de maio de 2019

Todo mundo sabe que o Kubernetes venceu a guerra dos contêineres. Só que o que o Kubernetes venceu foram as guerras de tempo de execução de contêineres. Veja, a guerra das imagens de contêiner foi vencida pelo Docker. Isso pode ser visto na estatística de que mais de 1 bilhão de contêineres Docker são baixados a cada duas semanas, de acordo com o Relatório de Segurança de Código Aberto de 2019 . O Docker Hub se tornou para as empresas o que a AppStore da Apple e o Google Play são para os consumidores.

As imagens de contêiner abrangem desde sistemas operacionais básicos até pilhas de aplicativos, de bancos de dados a middleware e mecanismos de aplicativos que oferecem suporte a node.js, Python e Go. Eles até incluem integrações de ecossistemas para serviços de aplicativos .

Se você faz parte da maioria das organizações que implantam contêineres, provavelmente está implantando imagens do Docker em um ambiente Kubernetes.

E se você estiver fazendo isso , provavelmente também estará implantando imagens de contêiner vulneráveis. A pesquisa mencionada anteriormente da Snyk descobriu que "cada uma das dez imagens padrão mais populares do Docker contém pelo menos 30 bibliotecas de sistema vulneráveis". É comum, continua o relatório, "que bibliotecas de sistema estejam disponíveis em muitas imagens do Docker, pois elas dependem de uma imagem pai que normalmente usa uma distribuição Linux como base".

OS Vulnus

Então, temos muitas imagens vulneráveis sendo baixadas por organizações o tempo todo. De acordo com Snyk, o número de vulnerabilidades está aumentando constantemente nas três principais distribuições Linux.

Não é nenhuma surpresa, então, que o relatório State of Container Security de 2019 da Tripwire tenha descoberto que 60% dos entrevistados sofreram um incidente de segurança de contêiner nos últimos doze meses. Para quase um em cada cinco (17%), isso provavelmente ocorre porque a organização estava ciente das vulnerabilidades, mas as implementou mesmo assim. Isso apesar da descoberta da Snyk de que, para 44% das imagens do Docker que continham vulnerabilidades conhecidas, havia imagens base mais novas e seguras disponíveis. Em outras palavras, simplesmente obter uma imagem atualizada teria mitigado o risco. Outros 22% dessas imagens com vulnerabilidades poderiam ter sido resolvidas simplesmente reconstruindo a imagem.

Realmente. Não consigo inventar essas coisas.

Grande parte do foco em "mover a segurança para a esquerda" está tanto na implantação de serviços de aplicativos de segurança apropriados (defesa de BOT, firewalls de aplicativos da web, controle de identidade e acesso) quanto na incorporação de práticas seguras no ciclo de vida de desenvolvimento e entrega.  Essas práticas incluem escanear códigos e contêineres em busca de vulnerabilidades conhecidas e, em seguida, lidar com elas .

Essa ênfase foi para os 17% de vocês que sabiam sobre vulnerabilidades em uma imagem de contêiner, mas implementaram sem remediar.

Podemos fazer melhor que isso. Sim, velocidade é importante, mas velocidade sem segurança é perigosa — não apenas para a organização, mas também para os clientes que, em última análise, usam os aplicativos que você está disponibilizando às pressas.

Se você ainda não pratica a conteinerização segura, considere colocar em prática estas etapas:

  1. Avalie o uso. Muitas organizações não têm consciência de quão difundido é o seu consumo de imagens/fontes abertas e de terceiros. Entender isso é um primeiro passo importante. Você não pode resolver vulnerabilidades em softwares que você nem sabe que está usando.
  2. Padronizar. Tente encontrar um ponto comum entre aplicativos e operações e padronize o menor número possível de imagens/componentes de contêiner. Isso distribuirá a carga de segurança por toda a organização e, por fim, resultará em melhor segurança para todos.
  3. Revisões de código seguras. Se você estiver incluindo componentes ou scripts de terceiros (e quase certamente está), revise-os e entregue/construa a partir de um repositório privado.
  4. Auditorias de contêineres seguros. Se você estiver consumindo imagens de terceiros, audite e certifique sua segurança e, em seguida, entregue a partir de um repositório privado.
  5. Assine os canais de segurança. Se você estiver contando com uma imagem ou código-fonte, encontre e assine o(s) canal(ais) através dos quais eles comunicam vulnerabilidades potenciais. Afinal, saber é metade da batalha.