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

Segurança e hacking de containers Docker - Road...

Segurança e hacking de containers Docker - RoadSec POA 2018

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

August 31, 2018
Tweet

More Decks by Fernando Silva

Other Decks in Technology

Transcript

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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)
  6. 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)
  7. 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.
  8. 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.
  9. 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.
  10. Nuvem da Tesla foi invadida e usada para minerar criptomoeda

    https://blog.redlock.io/cryptojacking-tesla
  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. 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
  13. 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)
  14. 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
  15. 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
  16. 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
  17. Open source project for the static analysis of vulnerabilities in

    appc and docker containers github.com/coreos/clair
  18. 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
  19. 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
  20. 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
  21. 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