Weaponizing Distroless
Qué es Distroless
Un contenedor distroless es un tipo de contenedor que contiene solo las dependencias necesarias para ejecutar una aplicación específica, sin ningún software o herramientas adicionales que no sean requeridos. Estos contenedores están diseñados para ser lo más ligeros y seguros posible, y su objetivo es minimizar la superficie de ataque eliminando cualquier componente innecesario.
Los contenedores distroless a menudo se utilizan en entornos de producción donde la seguridad y la fiabilidad son primordiales.
Algunos ejemplos de contenedores distroless son:
Proporcionados por Google: https://console.cloud.google.com/gcr/images/distroless/GLOBAL
Proporcionados por Chainguard: https://github.com/chainguard-images/images/tree/main/images
Armando Distroless
El objetivo de armar un contenedor distroless es poder ejecutar binarios y cargas arbitrarias incluso con las limitaciones implicadas por distroless (falta de binarios comunes en el sistema) y también protecciones comúnmente encontradas en contenedores como solo lectura o no ejecución en /dev/shm
.
A través de la memoria
Llegará en algún momento de 2023...
Mediante binarios existentes
openssl
****En este post, se explica que el binario openssl
se encuentra frecuentemente en estos contenedores, posiblemente porque es necesario para el software que va a ejecutarse dentro del contenedor.
Abusar del binario openssl
es posible para ejecutar cosas arbitrarias.
Última actualización