Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Segurança e hacking de containers Docker

Fernando Silva
September 25, 2017

Segurança e hacking de containers Docker

Nesta apresentação são abordados cenários comuns em que a utilização de containers Docker pode expor novos tipos de problemas de segurança, que talvez você não tenha considerado, algumas ferramentas de análise e hacking, assim como dicas que você pode usar para garantir que não deixe as portas abertas quando você implantar em produção.

Fernando Silva

September 25, 2017
Tweet

More Decks by Fernando Silva

Other Decks in Programming

Transcript

  1. Visão Geral - Estatísticas - Preocupações com segurança ao usar

    Docker - Práticas de segurança - Ferramentas de análise de segurança e hacking
  2. ∎ 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 Como verificar vulnerabilidades?
  3. 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)
  4. Como todos os containers compartilham recursos do kernel, se um

    container pode monopolizar o acesso a certos recursos, incluindo memória, 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)
  5. 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. Container breakouts (invasão de container)
  6. 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. Application secrets (segredos de aplicações)
  7. Como você sabe que as imagens que você está usando

    são seguras, não foram adulteradas, e vêm de onde elas afirmam vir? Poisoned images (imagens “envenenadas”)
  8. 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.
  9. Nuvem da Tesla foi invadida e usada para minerar criptomoeda

    https://blog.redlock.io/cryptojacking-tesla
  10. Tesla é vítima de cryptojacking Os hackers se infiltraram no

    console Kubernetes da Tesla, que não era protegido por senha. Em um pod Kubernetes, as credenciais de acesso foram expostas ao ambiente AWS da Tesla, que continha um bucket do Amazon S3 (Amazon Simple Storage Service) que tinha dados confidenciais, como telemetria.
  11. 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
  12. O Docker Secrets funciona como um cofre onde você pode

    colocar coisas sensíveis lá e só quem tem a chave do cofre consegue utilizar, no caso essa chave é designada aos nós dos serviços que a chave for atribuída. Docker Secrets Management http://www.mundodocker.com.br/docker-secrets/
  13. ∎ 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 Proteja seu host
  14. ∎ Tomar cuidado ao executar como root ∎ Crie namespaces

    isolados ∎ Limitar privilégios ao máximo ∎ Verifique se o container é confiável (verifique a imagem) Redução dos privilégios
  15. ∎ Limite os recursos no kernel ou no container ∎

    Fazer testes de carga antes de pôr em produção ∎ Implemente monitoramento e alertas Alto uso de recursos do container
  16. ∎ 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 Autenticidade da imagem
  17. ∎ 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 Vulnerabilidades de segurança presentes na imagem
  18. TLS precisa ser ativado especificando o sinalizador tlsverify e apontando

    o tlscacert do Docker para um certificado de CA confiável. Há um processo passo-a-passo explicado como proteger em https://docs.docker.com/engine/security/https. Proteja o soquete do daemon do Docker
  19. Open source project for the static analysis of vulnerabilities in

    appc and docker containers. github.com/coreos/clair
  20. 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-container s-docker • https://blog.sqreen.io/docker-security • https://blog.docker.com/2017/02/docker-secrets-management