Slide 1

Slide 1 text

Segurança em Ambientes Conteinerizados Ataque e Auditoria de Containers Docker e Clusters Kubernetes Fernando Silva fernando.poa.br

Slide 2

Slide 2 text

Sobre mim! Fernando Silva Application Security Analyst

Slide 3

Slide 3 text

Visão Geral ● Introdução ● Vetores de Ataque ● Ecossistema de Segurança de Contêineres ● Ataques Populares ● Como Melhorar a Segurança

Slide 4

Slide 4 text

Vazamento de Dados configuração incorreta

Slide 5

Slide 5 text

O que é Docker?

Slide 6

Slide 6 text

O que é Docker? Docker é uma plataforma Open Source que permite criar, executar, testar e implantar aplicações distribuídas dentro de containers.

Slide 7

Slide 7 text

Evolução

Slide 8

Slide 8 text

Container Vs Virtual Machine

Slide 9

Slide 9 text

Docker Engine Docker Engine abstrai as chamadas de SO das suas aplicações e utiliza as bibliotecas e binários já existentes

Slide 10

Slide 10 text

Onde usar Docker? Containers Docker estão em todos os lugares: Linux, Windows, Data center, Cloud, Serverless, etc.

Slide 11

Slide 11 text

Vetores de Ataque

Slide 12

Slide 12 text

Introdução a Kubernetes

Slide 13

Slide 13 text

Kubernetes Kubernetes (K8s) é um produto Open Source utilizado para automatizar a implantação, o dimensionamento e o gerenciamento de aplicativos em containers

Slide 14

Slide 14 text

Kubernetes Ele agrupa containers que compõem uma aplicação em unidades lógicas para facilitar o gerenciamento e a descoberta de serviço. O Kubernetes se baseia em 15 anos de experiência na execução de containers em produção no Google, combinado com as melhores ideias e práticas da comunidade.

Slide 15

Slide 15 text

Arquitetura Kubernetes

Slide 16

Slide 16 text

Arquitetura Kubernetes Cluster: conjunto dos componentes (Master, nodes, pods, contêineres, etc).

Slide 17

Slide 17 text

Arquitetura Kubernetes Master: ponto de controle central que provê uma visão unificada do cluster. É a máquina mestre que recebe as configurações preestabelecidas através dos arquivos .yaml.

Slide 18

Slide 18 text

Arquitetura Kubernetes Node: Uma máquina ativa (gerenciada pelo master), também conhecida como Minion. Dentro dele ficam os serviços necessários para rodar os pods. Os serviços em um node incluem Docker, Kubelet e kube-proxy.

Slide 19

Slide 19 text

Arquitetura Kubernetes Pods: menores unidades implantadas que podem ser criadas, escaladas e manuseadas. É uma coleção lógica de contêineres que pertencem a uma aplicação.

Slide 20

Slide 20 text

Arquitetura Kubernetes Obs: Um master pode gerenciar um ou mais nodes, um node pode conter um ou mais pods, e um pod pode conter um ou mais containers.

Slide 21

Slide 21 text

Vetores de Ataque

Slide 22

Slide 22 text

Análise do Ecossistema de Segurança de Contêineres

Slide 23

Slide 23 text

Análise do Ecossistema de Segurança de Contêineres A arquitetura de segurança do container depende de três componentes: isolamento de processos a nível do usuário gerenciado pelo daemon do Docker, aplicação do mecanismo de isolamento a nível do kernel e segurança das operações de rede Principais vulnerabilidades e soluções: ● API’s do Docker abertas; ● Fuga de Contêineres; ● Exploração do Kernel do Linux; ● Segredos de Aplicações; ● Imagens com Vulnerabilidades; ● Ataque de Negação de Serviço (DoS).

Slide 24

Slide 24 text

API’s do Docker abertas Mais de 15.000 servidores com API exposta em 2019 ● Atualmente uma das principais falhas de segurança no uso de contêineres é a configuração do ambiente Docker Fonte: Shodan (https://www.shodan.io/report/PCx2VyPJ) - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS

Slide 25

Slide 25 text

API’s do Docker abertas A execução do Docker em uma porta TCP pode causar sérios riscos à segurança dos ambientes conteinerizados: ● É essencial que as comunicações sejam criptografadas adequadamente usando o SSL, oferecendo acesso ao daemon sobre TCP ● Implementar regras iptables do firewall do kernel. ● Utilizar TLS, tivado especificando o sinalizador tlsverify, apontando para certificado de CA confiável - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS

Slide 26

Slide 26 text

Fuga de Contêineres Como todos os contêineres compartilham o mesmo kernel subjacente, qualquer código mal-intencionado pode comprometer todo o servidor - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS Fonte: Docker (https://docs.docker.com/get-started/)

Slide 27

Slide 27 text

Fuga de Contêineres Como todos os contêineres compartilham o mesmo kernel subjacente, qualquer código mal-intencionado pode comprometer todo o servidor - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS Fonte: Docker (https://docs.docker.com/get-started/)

Slide 28

Slide 28 text

Fuga de Contêineres Para evitar, reduzir os privilégios padrões dos contêineres: ● Minimizar a execução de contêineres privilegiados ● Cuidado com o mapeamento de diretórios ● Informar um usuário para reduzir os privilégios que são aplicados dentro do contêiner: - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS docker run -u -it /bin/bash

Slide 29

Slide 29 text

Exploração do Kernel do Linux Privilégios de root em um contêiner pode permitir que um invasor acesse esse contêiner e comprometa o servidor tendo acesso ao kernel - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS Fonte: Docker (https://docs.docker.com/get-started/)

Slide 30

Slide 30 text

Exploração do Kernel do Linux Docker recomenda as seguintes precauções, para implementar um ambiente de nuvem seguro: ● Configurar o AppArmor ou o SELinux ● Contêineres devem estar em grupos separados ● Docker Daemon não deve ser executado como root ● Minimizar a comunicação entre container - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS

Slide 31

Slide 31 text

Segredos de Aplicações Violação de segurança dos serviços e operações, através do acesso a chaves, tokens, usuários e senhas - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS

Slide 32

Slide 32 text

Segredos de Aplicações Armazenamento de dados sensíveis, como senhas, chaves privadas, tokens e chaves de APIs, com Docker Secrets Management - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS Fonte: Docker (https://blog.docker.com/2017/02/docker-secrets-management/)

Slide 33

Slide 33 text

Imagens com Vulnerabilidades Recentemente foi publicado um relatório onde mostra as 10 imagens mais populares e a quantidade de vulnerabilidades que as mesmas contêm - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS Fonte: Snyk (https://snyk.io/blog/top-ten-most-popular-docker-images-each-contain-at-least-30 -vulnerabilities/)

Slide 34

Slide 34 text

Imagens com Vulnerabilidades Confiança de conteúdo ou Docker Content Trust (DCT) é um recurso do Docker que oferece uma camada adicional de segurança para os contêineres - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS Fonte: Docker (https://docs.docker.com/notary/running_a_service/)

Slide 35

Slide 35 text

Ataque de Negação de Serviço (DoS) Na arquitetura de processamento baseada em contêineres, todos os contêineres compartilham recursos do kernel - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS Fonte: Docker (https://docs.docker.com/engine/docker-overview/) Servidor com 8 GB de memória e 4 contêineres em execução sem limitação de recursos

Slide 36

Slide 36 text

Ataque de Negação de Serviço (DoS) Na arquitetura de processamento baseada em contêineres, todos os contêineres compartilham recursos do kernel - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS Fonte: Docker (https://docs.docker.com/engine/docker-overview/) Servidor com 8 GB de memória e 4 contêineres em execução sem limitação de recursos Um dos contêineres monopoliza os 8GB de memória, “derrubar” os outros

Slide 37

Slide 37 text

Ataque de Negação de Serviço (DoS) Docker utiliza o cgroup, para oferecer uma maneira de contabilizar e limitar os recursos de cada contêiner. Por exemplo: - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS docker -d -storage-opt dm.basesize=5G docker run -it -cpuset=0,1 -c 2 ubuntu:latest /bin/bash ● Limitando o uso de CPU: ● Limitando o uso de armazenamento: docker run -it -m=128mb ubuntu:latest /bin/bash ● Definindo limite de memória para cada container:

Slide 38

Slide 38 text

Ataques populares em torno do ecossistema de Docker e Kubernetes

Slide 39

Slide 39 text

Nuvem da Tesla foi invadida e usada para minerar criptomoeda https://blog.redlock.io/cryptojacking-tesla

Slide 40

Slide 40 text

Julho de 2021: Global / > 39.000 APIs Expostas

Slide 41

Slide 41 text

Julho de 2021: Brasil / > 210 APIs Expostas

Slide 42

Slide 42 text

17 imagens Docker disponibilizadas por uma única conta durante 10 meses no Docker Hub, com mais de 5 milhões de pulls, podem ter minerado US $90.000 em criptomoedas Monero.

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

No content

Slide 46

Slide 46 text

No content

Slide 47

Slide 47 text

Grupo de hackers está sequestrando sistemas Docker com terminais de API expostos https://www.zdnet.com/article/a-hacking-group-is-hijacking-docker-systems-with-exposed-api-endpoints/

Slide 48

Slide 48 text

Anatomia do ataque ● verifica mais de 59.000 redes IP (netblocks) ● identifica um host exposto ● Inicia um container Alpine Linux OS ● instala um minerador de criptomoeda ● desinstala os agentes de monitoramento ● encerra os processos associados às botnets rivais ● criptografa e rouba arquivos de configuração ● cria contas de backdoor, deixando as chaves SSH

Slide 49

Slide 49 text

Dezembro de 2018: Global / > 1.300 APIs Expostas

Slide 50

Slide 50 text

Dezembro de 2018: Brasil / > 25 APIs Expostas

Slide 51

Slide 51 text

Abril de 2019: Global / > 4.900 APIs Expostas

Slide 52

Slide 52 text

Dezembro de 2019: Global / > 15.000 APIs Expostas

Slide 53

Slide 53 text

Dezembro de 2019: Brasil / > 840 APIs Expostas

Slide 54

Slide 54 text

Dezembro de 2021: Global / > 890 APIs Expostas

Slide 55

Slide 55 text

Dezembro de 2021: Brasil / 15 APIs Expostas

Slide 56

Slide 56 text

Acompanhamento das APIs Expostas - Global

Slide 57

Slide 57 text

Como Melhorar a Segurança

Slide 58

Slide 58 text

Ferramentas de Auditoria de Containers Docker

Slide 59

Slide 59 text

anchore.com/opensource

Slide 60

Slide 60 text

Análise de conformidade de container para garantir a segurança e a estabilidade

Slide 61

Slide 61 text

github.com/docker/docker-bench-security

Slide 62

Slide 62 text

O Docker Bench for Security é um script que verifica dezenas de boas práticas

Slide 63

Slide 63 text

O Docker Bench for Security é um script que verifica dezenas de boas práticas

Slide 64

Slide 64 text

github.com/aquasecurity/trivy

Slide 65

Slide 65 text

Scanner de vulnerabilidade de containers

Slide 66

Slide 66 text

falco.org

Slide 67

Slide 67 text

Container Native Runtime Security

Slide 68

Slide 68 text

Ferramentas de Auditoria de Clusters Kubernetes

Slide 69

Slide 69 text

kubesec.io

Slide 70

Slide 70 text

Análise de risco de segurança para recursos do Kubernetes

Slide 71

Slide 71 text

github.com/aquasecurity/kube-bench

Slide 72

Slide 72 text

Verifica se o Kubernetes é implantado de acordo com as melhores práticas de segurança

Slide 73

Slide 73 text

github.com/aquasecurity/kube-hunter

Slide 74

Slide 74 text

Busca por fraquezas de segurança nos clusters Kubernetes

Slide 75

Slide 75 text

DÚVIDAS? fernando.poa.br speakerdeck.com/fernandodebrando Perguntas?