Segurança de Aplicação

Segurança de containers: como a OWASP pode ajudar desenvolvedores

Você já se deparou com a situação de passar horas tentando descobrir o motivo de sua nova instalação de banco de dados, servidor web ou biblioteca Python não estar funcionando? Se sim, provavelmente compreende que utilizar containers pode ser uma boa saída para esse tipo de problema. Mas, é preciso se atentar a segurança de containers.

Uma plataforma de container, como o Docker, permite que desenvolvedores instalem e utilizem imagens pré-construídas de suas aplicações, tornando mais fácil e rápido rodá-las em diferentes ambientes. Isso é conhecido como containerização. Dessa forma, desenvolvedores podem garantir que suas aplicações funcionem de maneira consistente em diferentes sistemas operacionais e ambientes, sem precisar se preocupar com problemas de configuração e dependência.

Leia também: Como aumentar a segurança do seu container.

Desafios de segurança em containers

Lidar com containers como uma solução pode parecer fácil, mas há algo que muitos ignoram durante esse processo: a segurança. Containers podem ser portáteis e ágeis, mas também podem trazer ameaças para o ambiente da sua aplicação. Sua rápida implantação facilita que desenvolvedores os executem sem as verificações e configurações de segurança adequadas, por exemplo. Além de que o uso de imagens em camadas cria uma grande superfície de ataque, que pode ser difícil de defender. 

Nesse sentido, a segurança de containers é uma preocupação cada vez mais crescente. Com o aumento do uso de ferramentas de containerização como Docker e Kubernetes, tem se tornado essencial garantir que esses ambientes estejam protegidos contra possíveis ameaças. 

A OWASP (Open Web Application Security Project), organização líder em segurança de aplicações, oferece diretrizes e recursos para ajudar desenvolvedores e profissionais de segurança a garantir a segurança de seus containers. Vamos explorar como a OWASP pode fornecer recursos essenciais na proteção de seus containers.

Como a OWASP pode te ajudar na segurança de seus containers?

A OWASP SAMM (Software Assurance Maturity Model) é um framework que fornece diretrizes para garantir a segurança em diversos cenários de aplicação, incluindo a utilização de containers. Com ele, desenvolvedores podem seguir as boas práticas de segurança e evitar possíveis vulnerabilidades. 

Além disso, a OWASP oferece recursos adicionais, como a modelagem de ameaças para ambientes Docker e Kubernetes, que são úteis para identificar riscos desde o início do desenvolvimento de software, garantindo a segurança de tais componentes.

A OWASP também possui diversos outros trabalhos para ajudar desenvolvedores a garantir a segurança de suas aplicações, incluindo o projeto Docker-Security e o Docker Security Cheat Sheet

segurança em container

Utilizar o OWASP SAMM em conjunto com esses recursos garante uma abordagem completa e eficaz para segurança em containers.

TIP:

Uma das publicações da série Cheat Sheet da OWASP que é de grande valor para os desenvolvedores é o “cloud-native-application-security-top-10” (https://owasp.org/www-project-cloud-native-application-security-top-10/). Ele fornece informações específicas sobre segurança em aplicações nativas em nuvem, além de materiais de acordo com a linguagem de programação utilizada, o que facilita na compreensão e implementação das boas práticas de segurança.

Para garantir a segurança de suas aplicações em ambiente de nuvem, é crucial evitar a tentação de depositar toda a confiança em um provedor Cloud. Afinal, a segurança é uma responsabilidade compartilhada e cabe a nós desenvolvedores estar sempre atentos e preparados para possíveis ameaças.

Portanto, quando se trata de segurança em aplicações em nuvem, é preciso ter maturidade no desenvolvimento, considerando todos os contextos envolvidos, desde a criação da aplicação até o deploy.

Devemos superar a ideia de que a nuvem é insegura ou menos segura do que um ambiente on-premise. A segurança não é definida por essas características, tanto pode haver problemas de segurança em ambientes de nuvem quanto on-premise. 

Vale notar que os grandes provedores podem investir mais em ferramentas de segurança, o que pode tornar a segurança na nuvem superior em alguns casos. No entanto, tudo depende de uma série de fatores, incluindo a configuração.

Entendendo as nuances entre Segurança na Nuvem e Segurança de Nuvem

A maioria das falhas de segurança na nuvem são causadas por configurações dos clientes, e não dos provedores Cloud. Isso é reforçado pelo Gartner, que prevê que até 2025, 99% das falhas de segurança na nuvem serão culpa do cliente. (https://www.gartner.com/smarterwithgartner/is-the-cloud-secure)

Outro ponto a se considerar se deve ao fato de que os provedores de nuvem geralmente adotam um modelo de responsabilidade compartilhada, onde ambas as partes têm papéis e responsabilidades no que diz respeito à segurança. Isso é reforçado pelo modelo de responsabilidade compartilhada da Amazon, por exemplo. 

AWS

Em resumo, “segurança na nuvem” se concentra nas aplicações e dados que são executados e armazenados na nuvem, enquanto “segurança de nuvem” se concentra nas infraestruturas subjacentes da nuvem que suportam essas aplicações e dados. 

OWASP Docker TOP 10

Como desenvolvedores, é importante estarmos cientes dos desafios de segurança envolvendo o uso de containers, especialmente quando se trata de Docker. O OWASP SAMM aborda esses desafios e fornece diretrizes para garantir a segurança em cenários de Docker.

Uma das práticas abordadas é a gestão do ambiente, que se concentra em manter o ambiente limpo e seguro. Isso inclui elementos como sistemas operacionais, containers, frameworks, serviços, appliances e bibliotecas.

Além disso, ao criar imagens de Docker, é crucial seguir boas práticas de segurança, como o uso de Dockerfile e Docker Compose. É recomendado evitar o uso do comando ADD em favor do COPY e evitar o uso de “curl bashing” em diretivas RUN. Essas medidas podem ajudar a garantir que as imagens criadas sejam seguras e livres de vulnerabilidades conhecidas.

O Docker nos permite criar imagens customizadas e reutilizáveis, bem como gerenciar um ambiente com containers em execução. Isso inclui a comunicação com ambientes externos e a configuração de comandos pré-estabelecidos durante a construção da imagem.

Entretanto, ao trabalhar com imagens base, recomendamos considerar fontes confiáveis, como o Docker Hub e o ECR. Além disso, é preciso tomar cuidado para evitar bibliotecas vulneráveis.

No ambiente em execução, busque ter atenção à segurança da comunicação de rede, códigos, parâmetros, variáveis de ambiente e toda a estrutura que comporta o container em execução. Ao abordar esses aspectos, podemos entender melhor o OWASP Docker TOP 10.

A iniciativa OWASP Docker Top 10 fornece uma lista de dez pontos críticos de segurança a serem considerados ao planejar e implementar uma infraestrutura segura de contêiner. 

Esses dez pontos estão listados em ordem de importância, permitindo que você priorize as medidas de segurança mais importantes para sua aplicação:

D01 – Mapeamento seguro de usuários

Geralmente, a aplicação dentro do contêiner é executada com privilégios administrativos padrão: root. Isso viola o princípio de privilégios mínimos e dá ao atacante maiores chances de ampliar suas atividades se ele conseguir sair da aplicação e entrar no contêiner. Do ponto de vista do host, a aplicação nunca deve ser executada como root.

D02 – Estratégia de gerenciamento de patches

O host, a tecnologia de contenção, a solução de orquestração e as imagens do sistema operacional mínimo dentro do contêiner terão bugs de segurança. Uma vez conhecidos publicamente, é vital para a sua postura de segurança abordar esses bugs de maneira oportuna. Para todos esses componentes mencionados, você precisa decidir quando aplicar patches regulares e de emergência antes de colocá-los em produção.

D03 – Segmentação de rede e firewall

É crucial planejar a rede de forma adequada. As interfaces de gerenciamento da ferramenta de orquestração e, especialmente, os serviços de rede do host são cruciais e precisam ser protegidos em um nível de rede. Também é importante garantir que todos os outros microsserviços baseados em rede só sejam expostos ao consumidor legítimo desse microsserviço e não à rede inteira.

D04 – Padrões seguros e proteção

Dependendo da escolha do host e do sistema operacional do contêiner e da ferramenta de orquestração, é preciso ter cuidado para que nenhum componente desnecessário seja instalado ou iniciado. Além disso, todos os componentes necessários precisam ser configurados e bloqueados corretamente.

D05 – Manter Contextos de Segurança

Misturar contêineres de produção em um host com outros estágios de contêineres indefinidos ou menos seguros pode ser problemático. Além disso, misturar, por exemplo, front-end com serviços de back-end em um host pode ter impactos negativos na segurança.

D06 – Proteger Segredos

A autenticação e autorização de um microsserviço com um par ou um terceiro exige que os segredos sejam fornecidos. Para um invasor, esses segredos podem permitir que ele acesse mais dados ou serviços. Assim, quaisquer senhas, tokens, chaves privadas ou certificados precisam ser protegidos da melhor maneira possível.

D07 – Proteção de Recursos

Como todos os contêineres compartilham a mesma CPU física, discos, memória e redes, esses recursos físicos precisam ser protegidos para que um único contêiner fora de controle – intencional ou não – não afete os recursos de outros contêineres.

D08 – Integridade e origem da imagem do contêiner

O sistema operacional mínimo no contêiner executa seu código e precisa ser confiável, desde a origem até o deploy. É preciso garantir que todas as transferências e imagens em repouso não foram adulteradas.

D09 – Siga o Paradigma Imutável

Frequentemente, as imagens de contêiner não precisam ser gravadas em seu sistema de arquivos ou em um sistema de arquivos montado, uma vez configuradas e implantadas. Nesses casos, você terá um benefício extra de segurança se iniciar os contêineres no modo somente leitura.

D10 – Logging

Manter um registro é um aspecto crítico para ficar de olho nos riscos. Você deve habilitar os logs de segurança e logs de auditoria enquanto provisiona a infraestrutura, pois eles ajudam a avaliar os riscos de segurança relacionados aos ativos confidenciais.

Usando a Conviso Platform para obter containers mais seguros

O Secure Pipeline é um produto da Conviso Platform, projetado para garantir a segurança de aplicações de software durante o processo de integração e entrega contínuas. Ele inclui uma análise de Dockerfile de container, garantindo a segurança em todas as etapas do pipeline de CI/CD.

Ele fornece uma visão geral unificada das vulnerabilidades identificadas por todos os testes de segurança no CI/CD, incluindo SAST, SCA, IaC e Cloud, eliminando duplicações e correlacionando e priorizando os resultados de todos os scans.

Portanto, com a análise de Dockerfile de container do Secure Pipeline, é possível identificar problemas de segurança, como definir um usuário para o container para não usar diretamente o Root, exemplo abaixo, e agir rapidamente para corrigi-los:

análise de Dockerfile de container do Secure Pipeline

Criando contêineres mai seguros

A segurança de contêineres pode ser uma preocupação para muitos desenvolvedores, mas na verdade não é tão complexa quanto parece. Com a implementação de práticas seguras e o uso de ferramentas adequadas, é possível alcançar uma segurança eficaz de forma rápida e eficiente.  

Para isso, a OWASP fornece recursos valiosos para garantir a segurança de containers, como o OWASP SAMM que oferece diretrizes para garantir a segurança em diversos cenários de aplicação, incluindo a utilização de containers; e o OWASP Docker TOP 10, que é uma lista das 10 principais vulnerabilidades em segurança de containers e como corrigi-las. Utilizando esses recursos, desenvolvedores podem garantir que suas aplicações estejam seguras desde o início do desenvolvimento até o deploy.

Autores:

Danilo Costa – Squad Leader na área de segurança de aplicações
Evandro Pinheiro de Oliveira – Squad Leader na área de segurança de aplicações
Gabriel Galdino – Developer Advocate

Nova call to action
About author

Articles

Uma equipe de profissionais, altamente conectados com as notícias, técnicas e informações sobre a segurança de aplicações.
Related posts
Segurança de Aplicação

Desenvolvimento Seguro para Dispositivos de IoT: Garantindo a Resiliência na Era da Conectividade

Não é mais incomum olharmos para vários lugares e acharmos dispositivos IoT, estão em nossas…
Read more
Segurança de Aplicação

O Impacto da Inteligência Artificial no Desenvolvimento Seguro de Software

Não é segredo para ninguém, a Inteligência Artificial (IA) tem impactado significativamente…
Read more
Segurança de Aplicação

Secure By Design em ASPM - Como as ferramentas se integram ao processo

Neste artigo vamos trabalhar um pouco com os conceitos de Secure by Design em ASPM e como as…
Read more

Deixe um comentário

Descubra mais sobre Conviso AppSec

Assine agora mesmo para continuar lendo e ter acesso ao arquivo completo.

Continue reading