Agentic SOC Summit: o novo padrão para defesa autônomaInscreva-se

Entenda os CNAPPs com o nosso guia

Veja os benefícios e as dicas de integração para plataformas de proteção de aplicação nativas em nuvem. Aprimore sua estratégia de segurança na nuvem.

Faça o download do guia agora

Entenda os CNAPPs com o nosso guia

Veja os benefícios e as dicas de integração para plataformas de proteção de aplicação nativas em nuvem. Aprimore sua estratégia de segurança na nuvem.

Faça o download do guia agora

Os containers são comumente usados no ciclo de vida da aplicação, pois resolvem o problema “funciona na minha máquina” ao permitir que uma aplicação seja executada de forma confiável em diferentes ambientes de computação. A segurança de containers visa protegê-los contra ataques à segurança em todos os estágios do ciclo de vida de desenvolvimento da aplicação.

Este artigo discute o conceito de segurança de containers e seus principais desafios, bem como as práticas recomendadas para o desenvolvimento de aplicações em containers seguros.

O que é segurança de container?

Segurança de container é o processo contínuo de uso de controles de segurança para proteger ambientes em containers contra riscos de segurança. Ambientes em containers incluem não apenas containers e as aplicações em execução neles, mas também a infraestrutura subjacente, como o tempo de execução do container, o kernel e o sistema operacional host.

De acordo com a Pesquisa CNCF de 2021, 93% das organizações já estavam usando containers na produção ou tinham planos de fazê-lo. Junto com essa tendência, as empresas estão migrando para arquiteturas nativas em nuvem e precisam atender às demandas por entrega mais rápida de aplicações. Isso significa que integrar as melhores práticas de segurança de containers em todo o ciclo de vida do DevOps é essencial para garantir aplicações de container seguras e evitar ataques graves à segurança e suas consequências.

cnapp-guide-temp

O Guia completo dos CNAPPs

Faça o download do Guia completo dos CNAPPs da CrowdStrike para entender melhor por que as plataformas de proteção de aplicações nativas em nuvem são componentes críticos das estratégias modernas de segurança na nuvem e como integrá-los melhor aos ciclos de vida de desenvolvimento.

Baixe agora

Desafios de segurança de containers

Os containers oferecem muitas vantagens para acelerar a entrega de aplicações, incluindo portabilidade entre diferentes plataformas e permitindo que aplicações independentes executem processos em ambientes isolados enquanto compartilham o kernel subjacente. Mas os containers não têm capacidades de segurança próprias; em vez disso, os containers recebem acesso ao hardware por meio do sistema operacional host. Um único container também pode ter várias imagens do container subjacentes, introduzindo ainda mais novas superfícies de ataque que apresentam alguns desafios de segurança exclusivos, alguns sobre os quais falaremos abaixo.

Erros de configuração do container

Uma armadilha comum ao desenvolver com containers é que alguns desenvolvedores geralmente têm uma mentalidade de “definir e esquecer”. E pode haver configurações padrão inseguras das quais eles podem não estar cientes. Erros comuns de configuração de segurança incluem:

  • Portas inseguras expostas que não são necessárias para a aplicação
  • Segredos e credenciais vazados, como senhas e tokens de autenticação
  • Privilégios de tempo de execução de container excessivamente permissivos, como executar containers como root

Se não forem verificadas antes da implementação, essas configurações incorretas podem expor os containers a um ataque à segurança ou deixar a porta aberta para ataques de elevação de privilégios.

Vulnerabilidades na infraestrutura de container

Um stack de infraestrutura de container normalmente consiste em código de aplicação, configurações, bibliotecas e pacotes que são criados em uma imagem do container executada dentro de um container no kernel do sistema operacional host por meio de um tempo de execução de container.

Cada estágio no ciclo de vida do container pode potencialmente introduzir vulnerabilidades de segurança na infraestrutura do container, aumentando a superfície de ataque que pode ser explorada durante o tempo de execução. Vulnerabilidades também podem ser herdadas de dependências externas incorporadas à imagem do container ou até mesmo existir no host e no tempo de execução do container dentro do stack.

Imagens do container também podem herdar vulnerabilidades de segurança de bibliotecas e pacotes de código aberto como parte da aplicação, tornando-as suscetíveis a ataques. Os desenvolvedores podem criar imagens do container usando imagens base de registros de container de terceiros, que podem conter vulnerabilidades de segurança involuntariamente ou podem ter sido substituídas intencionalmente por uma imagem comprometida por hackers.

Por fim, containers e hosts podem conter vulnerabilidades que podem ser exploradas por meio de redes, hosts e endpoints quando o container estiver em execução no kernel do sistema operacional host. Em particular, vulnerabilidades de escape de container no kernel do host e no tempo de execução do container podem abrir portas para vetores de ataque que aproveitam a elevação de privilégios locais para explorar vulnerabilidades do host e realizar o movimento lateral da rede, comprometendo toda a sua infraestrutura de nuvem.

Visibilidade em workloads dos containers

O principal desafio da segurança de containers é ter visibilidade das workloads dos containers. Como as workloads dos containers são altamente dinâmicas e geralmente efêmeras, pode ser difícil para as equipes de segurança monitorar e rastrear anomalias na atividade dos containers.

Como os problemas de segurança de containers podem se propagar rapidamente entre containers e aplicações, é essencial ter visibilidade das informações de tempo de execução em containers e hosts para que os protetores possam identificar e mitigar vulnerabilidades em ambientes em containers.

Problemas com a proteção de pipelines de CI/CD

A segurança do container requer a proteção de todas as fases do pipeline de CI/CD, desde o código da aplicação até a workload e a infraestrutura do container. Mas os desenvolvedores geralmente aplicam a segurança no final do ciclo de vida da aplicação, muitas vezes deixando pouco tempo para testes de segurança, pois os desenvolvedores correm para cumprir prazos apertados de entrega da aplicação.

7 práticas recomendadas para segurança de containers

Felizmente, existem maneiras estabelecidas de superar os desafios acima para otimizar a segurança do seu ambiente em container e do ciclo de vida da aplicação em todas as etapas.

1. Proteja suas imagens

Ao desenvolver aplicações em containers com imagens base de um registro de container externo, extraia imagens de fontes confiáveis e armazene-as em um registro privado seguro para minimizar o risco de adulteração. Os invasores ainda podem comprometer imagens em registros confiáveis, portanto, certifique-se de verificar as assinaturas das imagens por meio do Notary ou ferramentas semelhantes.

Além disso, as tags de imagem podem ser alteradas, resultando, por exemplo, em várias imagens tendo uma tag “mais recente” em diferentes momentos. Use tags de imagem fixas que sejam imutáveis, como o resumo da imagem, para garantir compilações automatizadas consistentes e evitar ataques que aproveitem a mutabilidade das tags.

Saiba mais

Saiba mais sobre por que executar varredura em seus containers e todos os seus componentes para descobrir possíveis ameaças ajudará sua organização e todos os seus ativos em containers a permanecerem protegidos.

Varredura de imagens de container

2. Gerencie segredos com segurança

Evite armazenar segredos e credenciais em arquivos de código ou configuração, incluindo um Dockerfile. Caso contrário, esses dados confidenciais serão copiados para containers e armazenados em cache em camadas intermediárias de containers, mesmo quando o container for removido. Uma prática recomendada comum no gerenciamento seguro de segredos é usar um gerenciador de segredos dedicado, como o Vault ou o AWS Secrets Manager, para armazenar e gerenciar segredos e credenciais.

3. Restrinja privilégios de container em tempo de execução

O princípio do privilégio mínimo se refere à concessão apenas do nível mínimo de permissões que um usuário precisa para executar uma determinada tarefa. Esse é um aspecto fundamental quando se trata de segurança e se aplica também à segurança do container em tempo de execução.

Os containers normalmente são executados como um usuário com privilégios de root para permitir várias operações do sistema dentro do container, como instalar pacotes e operações de leitura e gravação em arquivos de configuração do sistema. Mas executar containers com privilégios de root apresenta um grande risco de segurança, pois permite que invasores aproveitem a elevação de privilégios dentro do container se o tempo de execução do container for comprometido.

Isso torna essencial restringir os privilégios do container em tempo de execução para mitigar vulnerabilidades no kernel do host e no tempo de execução do container. Você pode conseguir isso executando containers no modo sem root, permitindo que você os execute como usuários não root. Ou opte por restringir as capacidades do kernel Linux àquelas explicitamente necessárias, descartando todas as capacidades padrão e adicionando apenas aquelas necessárias para a workload do container.

4. Identifique e remedie configurações incorretas de segurança

Identificar configurações incorretas de segurança ao criar imagens do container permite remediar vulnerabilidades antes de implementar aplicações em containers na produção. Esse processo envolve a verificação de parâmetros de configuração por meio de análise de configuração estática, algo que pode ser tedioso e propenso a erros humanos se feito manualmente.

Ferramentas de segurança em nuvem, como o gerenciamento de postura de segurança em nuvem (CSPM) CrowdStrike Falcon Horizon™, simplificam o gerenciamento de configurações de segurança comparando configurações com benchmarks e fornecendo remediação guiada que permite aos desenvolvedores mitigar riscos de segurança de quaisquer configurações incorretas encontradas.

5. Automatize a varredura e o gerenciamento de vulnerabilidades

Automatizar a varredura e o gerenciamento de vulnerabilidades no pipeline de CI/CD permite detectar vulnerabilidades de segurança em cada estágio do ciclo de vida do container e mitigar riscos de segurança antes que eles ocorram.

A varredura de código envolve a análise do código da aplicação em busca de vulnerabilidades de segurança e bugs de codificação. O teste de segurança de aplicação estática (SAST) detecta vulnerabilidades no código da aplicação. A análise de composição de software (SCA), por sua vez, fornece visibilidade aos componentes de código aberto na criação da aplicação, gerando uma lista de materiais de software (SBOM) e fazendo referência cruzada dos componentes com bancos de dados de vulnerabilidades de código aberto conhecidas.

A varredura de imagens envolve a análise do conteúdo e do processo de criação de imagens do container em busca de vulnerabilidades. Você pode fazer isso por meio de ferramentas de análise estática, como o Clair, que executa uma varredura em cada camada em busca de vulnerabilidades de segurança conhecidas. Ou use ferramentas de análise dinâmica como o CrowdStrike Container Security, que detecta riscos de segurança rastreando o comportamento de um container em execução.

Por último, mas não menos importante, a varredura do host envolve a inspeção dos componentes do host do container, incluindo o kernel e o sistema operacional host, em busca de vulnerabilidades no tempo de execução e configurações incorretas. Para isso, os desenvolvedores usam o teste dinâmico de segurança de aplicações (DAST), um teste de caixa preta que detecta vulnerabilidades por meio de ataques simulados à aplicação em container.

6. Configure o registro, monitoramento e alerta em tempo real

Melhorar a visibilidade das workloads de containers requer o uso de ferramentas de observabilidade que permitam o registro de eventos em tempo real, o monitoramento e o teste de vulnerabilidades em cada componente do ambiente em container. Você pode detectar ameaças à segurança do container auditando logs e métricas de diferentes fontes no stack do container, bem como analisando os detalhes e a atividade do container em busca de comportamento anômalo no sistema.

Configurar logs, monitoramento e alertas em tempo real fornece visibilidade, detecção contínua de ameaças e monitoramento contínuo de conformidade para garantir que vulnerabilidades e configurações incorretas sejam corrigidas assim que identificadas.

7. Adote a segurança “shift-left”

Em vez de adotar uma abordagem de “mudança para a direita”, que trata a segurança dos pipelines de CI/CD como uma reflexão tardia, você pode adotar uma abordagem mais proativa, movendo a segurança para a esquerda (antecipando).

Segurança “shift-left” refere-se à prática de transferir a segurança para as fases iniciais do ciclo de vida de desenvolvimento da aplicação. Ela permite que os desenvolvedores entreguem aplicações de container seguras sem atrasar o processo de desenvolvimento da aplicação, pois as equipes têm tempo para identificar e resolver problemas ou vulnerabilidades o mais cedo possível. A integração da varredura de vulnerabilidades em cada estágio do pipeline de CI/CD resulta em menos problemas de produção e permite que o DevOps e a segurança trabalhem em paralelo, acelerando a entrega de aplicações sem comprometer a segurança do container.

Conclusão

A implementação das práticas recomendadas de segurança de containers envolve proteger cada estágio do ciclo de vida do container, começando pelo código da aplicação e se estendendo além do tempo de execução do container. Como a segurança de containers é um processo contínuo e as ameaças à segurança evoluem com o tempo, você pode implementar gradualmente algumas dessas práticas integrando os produtos e serviços de segurança de containers da CrowdStrike.

Guilherme (Gui) Alvarenga é Gerente Sênior de Marketing de Produtos do portfólio de Segurança de Nuvem da CrowdStrike.  Ele tem mais de 15 anos de experiência com soluções de nuvem, software como serviço (SaaS), rede e ML para empresas como Check Point, NEC e Cisco Systems. Guilherme formou-se em Publicidade e Propaganda pela Universidade Paulista, no Brasil, e fez seu MBA na Universidade Estadual de San Jose.  Estudou Computação Aplicada na Universidade de Stanford e especializou-se em Segurança de Nuvem e Investigação de Ameaças.