Weaponizing Distroless
O que é Distroless
Um container distroless é um tipo de container que contém apenas as dependências necessárias para executar uma aplicação específica, sem nenhum software ou ferramenta adicional que não seja necessário. Esses containers são projetados para serem o mais leves e seguros possível, e visam minimizar a superfície de ataque removendo quaisquer componentes desnecessários.
Containers distroless são frequentemente usados em ambientes de produção onde segurança e confiabilidade são primordiais.
Alguns exemplos de containers distroless são:
Fornecidos pelo Google: https://console.cloud.google.com/gcr/images/distroless/GLOBAL
Fornecidos pela Chainguard: https://github.com/chainguard-images/images/tree/main/images
Armamento do Distroless
O objetivo de armar um container distroless é ser capaz de executar binários e payloads arbitrários mesmo com as limitações implicadas pelo distroless (falta de binários comuns no sistema) e também proteções comumente encontradas em containers, como somente leitura ou não-execução em /dev/shm
.
Através da memória
Chegando em algum momento de 2023...
Via Binários Existentes
openssl
****Neste post, é explicado que o binário openssl
é frequentemente encontrado nesses containers, potencialmente porque é necessário pelo software que vai ser executado dentro do container.
Abusar do binário openssl
é possível para executar coisas arbitrariamente.
Last updated