BLOG

Pesquisa diz: Segurança de contêineres (ainda) é motivo de preocupação

Miniatura de Lori MacVittie
Lori MacVittie
Publicado em 17 de dezembro de 2019

O uso de contêineres continua crescendo. Seja por meio de aplicativos nativos da nuvem e sem servidor ou pelo desejo de modernizar monólitos, os contêineres estão rapidamente se tornando a plataforma preferida para implantação de aplicativos.

A Sysdig lançou recentemente seu relatório de uso de contêineres de 2019 com base em dados coletados de clientes de seus serviços de nuvem pública e locais. Os dados cobriram mais de dois milhões de contêineres.

Além da descoberta realmente empolgante (se você for como eu) de que 60% desses contêineres estão executando o NGINX, a Sysdig revelou algumas estatísticas de segurança bastante preocupantes.

Considere isto: 54% dos contêineres duraram menos de cinco minutos. Em 2018, isso ocorreu em apenas 20%.

Por que isso é preocupante? Segurança, é claro. Se você estiver tentando proteger o acesso (e deveria estar) e tentar proteger o aplicativo ou a API em execução naquele contêiner, precisará garantir que seus serviços de segurança estejam constantemente ajustando as políticas para corresponder ao estado atual do cluster. Isso significa que as políticas precisam ser aplicadas aos contêineres quando eles são iniciados e removidas quando eles são desativados. São muitas mudanças acontecendo, o que significa muita sobrecarga operacional. Já é bastante difícil obter a segurança correta em um aplicativo relativamente estático. É muito difícil fazer isso em alta velocidade com um altamente volátil.

Se isso não te incomoda, tente esta estatística: embora 60% das imagens de contêiner sejam extraídas de registros privados (bom trabalho!), 52% delas falham nas verificações de imagem. Isso significa que eles tinham vulnerabilidades conhecidas com gravidade alta ou maior.

Eca. Eu nem consigo.

Acontece que muitas pessoas estão executando o contêiner como root (mediana por host: 21) ou em modo privilegiado (mediana por host: 4). Outros não têm privilégios restritos (mediana de 28 por host). Isso é particularmente frustrante porque o Docker (o ambiente de execução de contêiner mais predominante) começa com um conjunto restrito de recursos por padrão. Isso significa que alguém alterou propositalmente as configurações de segurança padrão. Executar sem restrições pode resultar na capacidade de escalar privilégios ou quebrar o contêiner (permitindo acesso ao sistema). 

Agora faremos uma pausa para relembrar os princípios básicos da segurança de contêineres:

  • Tranque a porta. A autenticação não é opcional. Certifique-se de exigir credenciais fortes e alterne-as com frequência. Use autenticação de dois fatores sempre que possível, especialmente para acesso privilegiado a consoles de orquestração e infraestrutura crítica.
  • Esconda seus objetos de valor. Não compartilhe inadvertidamente segredos (como chaves e credenciais) publicamente em um repositório ou fonte compartilhada de fácil acesso.
  • Filtre suas chamadas. Nem todas as solicitações são válidas e algumas contêm código malicioso. Seja um aplicativo ou um serviço de infraestrutura, inspecione e avalie o conteúdo em busca de intenções maliciosas. Otimize consolidando a varredura com terminação SSL/TLS para compensar a leve queda no desempenho.
  • Remende os furos. Se você sabe que uma imagem, serviço, carga de trabalho ou outro componente está vulnerável, aplique um patch nele. Isso é especialmente verdadeiro para vulnerabilidades em componentes de origem externa, pois são alvos de alto perfil. Isso ocorre porque é um campo rico de oportunidades quando uma vulnerabilidade aparece em aplicativos ou infraestrutura comumente implantados, como o Apache Struts, e requer pouco investimento de um invasor para encontrá-la e explorá-la.

É absolutamente essencial para a segurança dos aplicativos — e, portanto, dos negócios — que boas práticas de segurança de contêineres sejam realmente colocadas em prática. Nosso próximo relatório State of Application Services de 2020 descobriu que os microsserviços/nativos da nuvem representam, em média, 15% de um portfólio de aplicativos corporativos. Essa porcentagem ocorre apesar de descobertas que indicam longos atrasos para novos pedidos. Isso significa que os aplicativos em contêineres só vão crescer. E se não conseguimos proteger uma pequena porcentagem de aplicativos, como podemos esperar escalar para proteger uma porcentagem significativa deles?

Pratique a conteinerização segura.

Se você estiver interessado em uma atualização sobre os conceitos básicos de segurança de contêineres, confira esta série baseada na experiência do meu colega da F5, Jordan Zebor:

  1. Noções básicas de segurança de contêineres: Introdução
  2. Noções básicas de segurança de contêineres: Gasoduto
  3. Noções básicas de segurança de contêineres: Orquestração
  4. Noções básicas de segurança de contêineres: Carga de trabalho
  5. Noções básicas de segurança de contêineres: Conclusão