Mount Namespace
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Basic Information
Un mount namespace es una característica del núcleo de Linux que proporciona aislamiento de los puntos de montaje del sistema de archivos vistos por un grupo de procesos. Cada mount namespace tiene su propio conjunto de puntos de montaje del sistema de archivos, y los cambios en los puntos de montaje en un namespace no afectan a otros namespaces. Esto significa que los procesos que se ejecutan en diferentes mount namespaces pueden tener diferentes vistas de la jerarquía del sistema de archivos.
Los mount namespaces son particularmente útiles en la contenedorización, donde cada contenedor debe tener su propio sistema de archivos y configuración, aislados de otros contenedores y del sistema host.
How it works:
Cuando se crea un nuevo mount namespace, se inicializa con una copia de los puntos de montaje de su namespace padre. Esto significa que, al momento de la creación, el nuevo namespace comparte la misma vista del sistema de archivos que su padre. Sin embargo, cualquier cambio posterior en los puntos de montaje dentro del namespace no afectará al padre ni a otros namespaces.
Cuando un proceso modifica un punto de montaje dentro de su namespace, como montar o desmontar un sistema de archivos, el cambio es local a ese namespace y no afecta a otros namespaces. Esto permite que cada namespace tenga su propia jerarquía de sistema de archivos independiente.
Los procesos pueden moverse entre namespaces utilizando la llamada al sistema
setns()
, o crear nuevos namespaces utilizando las llamadas al sistemaunshare()
oclone()
con la banderaCLONE_NEWNS
. Cuando un proceso se mueve a un nuevo namespace o crea uno, comenzará a usar los puntos de montaje asociados con ese namespace.Los descriptores de archivo e inodos se comparten entre namespaces, lo que significa que si un proceso en un namespace tiene un descriptor de archivo abierto que apunta a un archivo, puede pasar ese descriptor de archivo a un proceso en otro namespace, y ambos procesos accederán al mismo archivo. Sin embargo, la ruta del archivo puede no ser la misma en ambos namespaces debido a las diferencias en los puntos de montaje.
Lab:
Create different Namespaces
CLI
Al montar una nueva instancia del sistema de archivos /proc
si usas el parámetro --mount-proc
, aseguras que el nuevo espacio de montaje tenga una vista precisa y aislada de la información del proceso específica de ese espacio de nombres.
Docker
Verifique en qué namespace se encuentra su proceso
Encontrar todos los espacios de nombres de montaje
Entrar dentro de un espacio de nombres de montaje
También, solo puedes entrar en otro espacio de procesos si eres root. Y no puedes entrar en otro espacio sin un descriptor que apunte a él (como /proc/self/ns/mnt
).
Debido a que los nuevos montajes solo son accesibles dentro del espacio, es posible que un espacio contenga información sensible que solo puede ser accesible desde él.
Montar algo
Referencias
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated