Slide 1

Slide 1 text

Segurança e hacking de containers Docker Fernando Silva / Software Developer Analyst at KingHost

Slide 2

Slide 2 text

Visão Geral 1 - Estatísticas 2 - Preocupações com segurança ao usar Docker 3 - Práticas de segurança 4 - Ferramentas de análise de segurança e hacking

Slide 3

Slide 3 text

O que é Docker? VMs Containers

Slide 4

Slide 4 text

O que é Docker? VMs Containers

Slide 5

Slide 5 text

O que é Docker? VMs Containers

Slide 6

Slide 6 text

O que é Docker? VMs Containers

Slide 7

Slide 7 text

Estatísticas Pesquisa realizada entre 14 e 25 de agosto 2017 36 participantes

Slide 8

Slide 8 text

Já utilizou Docker em produção?

Slide 9

Slide 9 text

Verifica vulnerabilidades nas imagens utilizadas?

Slide 10

Slide 10 text

Como verificar vulnerabilidades? ● Processo de análise manual, analisando o dockerfile e suas dependências

Slide 11

Slide 11 text

Como verificar vulnerabilidades? ● Processo de análise manual, analisando o dockerfile e suas dependências ● Autenticação, permissões e qualquer tipo de comunicação com o host é mapeada

Slide 12

Slide 12 text

Como verificar vulnerabilidades? ● Processo de análise manual, analisando o dockerfile e suas dependências ● Autenticação, permissões e qualquer tipo de comunicação com o host é mapeada ● Clair, TwistLock e Aqua

Slide 13

Slide 13 text

Como verificar vulnerabilidades? ● Processo de análise manual, analisando o dockerfile e suas dependências ● Autenticação, permissões e qualquer tipo de comunicação com o host é mapeada ● Clair, TwistLock e Aqua ● Mais de 80% não verifica

Slide 14

Slide 14 text

Preocupações com segurança ao usar Docker

Slide 15

Slide 15 text

Kernel exploits (exploração do kernel)

Slide 16

Slide 16 text

Ao contrário de uma VM, o kernel é compartilhado entre todos os containers e o host, aumentando a importância de qualquer vulnerabilidade que explore o kernel. Kernel exploits (exploração do kernel)

Slide 17

Slide 17 text

Denial-of-service attacks (ataque de negação de serviço)

Slide 18

Slide 18 text

Como todos os containers compartilham recursos do kernel, se um container pode monopolizar o acesso a certos recursos, incluindo memória, processamento, ou até IDs de usuário (UIDs), pode faltar recursos para outros containers, resultando em uma negação de serviço (DoS). Denial-of-service attacks (ataque de negação de serviço)

Slide 19

Slide 19 text

Denial-of-service attacks (ataque de negação de serviço)

Slide 20

Slide 20 text

Container breakouts (invasão de container) Um invasor que tem acesso a um container não pode ter acesso a outros containers ou ao host. Se você usa root no container, você será root no host.

Slide 21

Slide 21 text

Application secrets (segredos de aplicações)

Slide 22

Slide 22 text

Application secrets (segredos de aplicações) Quando um container acessa um banco de dados ou serviço, provavelmente exigirá credenciais, como um token ou mesmo usuário e senha. Se um invasor tiver acesso ao container terá acesso a estes dados.

Slide 23

Slide 23 text

Poisoned images (imagens “envenenadas”)

Slide 24

Slide 24 text

Poisoned images (imagens “envenenadas”) https://hub.docker.com/r/fernandosilva/nginx-trojanized/

Slide 25

Slide 25 text

Poisoned images (imagens “envenenadas”) https://hub.docker.com/r/fernandosilva/nginx-trojanized/

Slide 26

Slide 26 text

Poisoned images (imagens “envenenadas”) https://medium.com/@FernandoDebrand/docker-hackers-conteinerizacao-a9e2b267676a 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 27

Slide 27 text

Poisoned images (imagens “envenenadas”)

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

Poisoned images (imagens “envenenadas”) https://github.com/docker/hub-feedback/issues/1554

Slide 30

Slide 30 text

https://blog.aquasec.com/cryptocurrency-miners-abusing-containers-anatomy-of-an-attempted-attack Anatomy of an (Attempted) Attack (Anatomia de um Ataque (Tentativa) )

Slide 31

Slide 31 text

Anatomy of an (Attempted) Attack (Anatomia de um Ataque (Tentativa) )

Slide 32

Slide 32 text

Práticas de segurança

Slide 33

Slide 33 text

Como devemos armazenar dados sensíveis, como senhas, chaves privadas, tokens, chaves de APIs?

Slide 34

Slide 34 text

Como não devemos armazenar dados sensíveis

Slide 35

Slide 35 text

Não use variáveis de ambiente ou incorpore na imagem de container https://wycd.net/posts/2017-02-21-ibm-whole-cluster-privilege-escalation-disclosure.html

Slide 36

Slide 36 text

Docker Secrets Management

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

Vault HashiCorp

Slide 40

Slide 40 text

Proteja seu host ❖ Certifique-se de que seu host e a configuração do Docker engine sejam seguras ❖ Mantenha seu SO atualizado ❖ Impor controle de acesso para evitar operações indesejadas, tanto no host como nos containers, usando ferramentas como SecComp, AppArmor ou SELinux

Slide 41

Slide 41 text

Redução dos privilégios ❖ Tomar cuidado ao executar como root ❖ Crie namespaces isolados ❖ Limitar privilégios ao máximo ❖ Verifique se o container é confiável (verifique a imagem)

Slide 42

Slide 42 text

Alto uso de recursos do container ❖ Limite os recursos no kernel ou no container ❖ Fazer testes de carga antes de pôr em produção ❖ Implemente monitoramento e alertas

Slide 43

Slide 43 text

Autenticidade da imagem ❖ De onde veio? ❖ Você confia no criador? ❖ Quais políticas de segurança está usando? ❖ Identificação do autor ❖ Não use se não confia na fonte ❖ Use um servidor Docker Registry próprio ❖ Verifique a assinatura da imagem

Slide 44

Slide 44 text

Vulnerabilidades de segurança presentes na imagem ❖ Inspecionar as imagens ❖ Atualize para pegar novos patches de segurança ❖ Utilize uma ferramenta de scanner de vulnerabilidades ❖ Integre esse scanner como etapa do seu CI/CD

Slide 45

Slide 45 text

Ferramentas

Slide 46

Slide 46 text

Docker Security Scanning

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

No content

Slide 52

Slide 52 text

No content

Slide 53

Slide 53 text

Discover, Analyze, and Certify Container Images anchore.io

Slide 54

Slide 54 text

microbadger.com

Slide 55

Slide 55 text

Demonstração

Slide 56

Slide 56 text

Open source project for the static analysis of vulnerabilities in appc and docker containers github.com/coreos/clair

Slide 57

Slide 57 text

Online automatic analysis quay.io

Slide 58

Slide 58 text

No content

Slide 59

Slide 59 text

Container Security for Docker, Kubernetes and Beyond twistlock.com

Slide 60

Slide 60 text

No content

Slide 61

Slide 61 text

Aqua Container Security Platform aquasec.com

Slide 62

Slide 62 text

No content

Slide 63

Slide 63 text

No content

Slide 64

Slide 64 text

https://blog.aquasec.com/aqua-microscanner-free-image-vulnerability-scanning-plug-in-for-jenkins

Slide 65

Slide 65 text

No content

Slide 66

Slide 66 text

No content

Slide 67

Slide 67 text

https://blog.aquasec.com/kube-hunter-kubernetes-penetration-testing

Slide 68

Slide 68 text

No content

Slide 69

Slide 69 text

The Behavioral Activity Monitor With Container Support github.com/draios/falco

Slide 70

Slide 70 text

github.com/kost/dockscan

Slide 71

Slide 71 text

Docker Scan github.com/cr0hn/dockerscan

Slide 72

Slide 72 text

Principais Funcionalidades ❖ Faz scan de uma rede tentando localizar os Docker Registries ❖ Registry ❖ Delete: Exclui image / tag remota ❖ Info: Mostra informações de registros remotos ❖ Push: Envia uma imagem ❖ Upload: Upload de arquivo

Slide 73

Slide 73 text

Principais Funcionalidades ❖ Image ❖ Analyze ■ Busca por informações confidenciais em uma imagem ■ Busca por senhas em variáveis de ambiente ■ Busca por qualquer URL / IP em variáveis de ambiente ■ Tenta identificar o usuário usado para executar o software

Slide 74

Slide 74 text

Principais Funcionalidades ❖ Image ❖ Extract: extrair uma imagem ❖ Info: Obtém meta-informação da imagem ❖ Modify: ➢ entrypoint: altere o ponto de entrada em um docker ➢ trojanize: injeta um reverser shell em uma imagem docker ➢ user: altere o usuário em execução em uma imagem docker

Slide 75

Slide 75 text

Exemplo DockerScan

Slide 76

Slide 76 text

Exemplo DockerScan

Slide 77

Slide 77 text

Mais conteúdo sobre... scaledocker.com cisecurity.org/benchmark/docker

Slide 78

Slide 78 text

Mais conteúdo sobre... oreilly.com/docker-security docker.com/docker-security

Slide 79

Slide 79 text

Referências / Links ● https://gianarb.it/blog/Docker-Security-Benchmark ● https://sysdig.com/blog/20-docker-security-tools ● https://sysdig.com/blog/7-docker-security-vulnerabilities ● http://techfree.com.br/2015/06/seguranca-no-docker ● https://blog.docker.com/2016/05/docker-security-scanning ● https://blog.docker.com/2015/05/understanding-docker-security-and-best-practices ● http://rancher.com/container-security-tools-breakdown ● https://medium.com/enterstone/protegendo-docker-f95a831a31f3 ● https://securitytraning.com/docker-containers-security ● https://www.tripwire.com/state-of-security/featured/security-risks-consider-deploying-containers-d ocker ● https://blog.sqreen.io/docker-security ● https://blog.docker.com/2017/02/docker-secrets-management ● http://kingho.st/fernando-silva

Slide 80

Slide 80 text

Obrigado! Perguntas? contato@fernando.poa.br @FernandoDebrand