ps aux
PID 1 systemd
PID 842 sshd
PID 1201 nginx
PID 2300 node
PID 1 systemd
PID 842 sshd
PID 1201 nginx
PID 2300 node
PID 1 systemd
PID 842 sshd
PID 1201 nginx
PID 2300 node
PID 1 app
PID 7 worker
PID 12 shell
PID 1 app
PID 7 worker
PID 12 shell
PID 1 app
PID 7 worker
PID 12 shell
PID 34520 app
PID 34541 worker
PID 34610 shell
PID 34520 app
PID 34541 worker
PID 34610 shell
PID 34520 app
PID 34541 worker
PID 34610 shell
docker run my-api
docker run my-api
docker run my-api
tini
dumb-init
tini
dumb-init
tini
dumb-init
docker run --rm -it ubuntu ps aux
docker run --rm -it ubuntu ps aux
docker run --rm -it ubuntu ps aux
docker run --rm -it --pid=host ubuntu ps aux
docker run --rm -it --pid=host ubuntu ps aux
docker run --rm -it --pid=host ubuntu ps aux
/proc/<pid>/ns/pid
readlink /proc/$$/ns/pid
readlink /proc/$$/ns/pid
readlink /proc/$$/ns/pid
pid:[4026531836]
pid:[4026531836]
pid:[4026531836]
readlink /proc/1/ns/pid
readlink /proc/$$/ns/pid
readlink /proc/1/ns/pid
readlink /proc/$$/ns/pid
readlink /proc/1/ns/pid
readlink /proc/$$/ns/pid
ps aux
readlink /proc/1/ns/pid
readlink /proc/$$/ns/pid
readlink /proc/1/ns/pid
readlink /proc/$$/ns/pid
readlink /proc/1/ns/pid
readlink /proc/$$/ns/pid
docker inspect --format '{{.State.Pid}}' <container_id>
docker inspect --format '{{.State.Pid}}' <container_id>
docker inspect --format '{{.State.Pid}}' <container_id>
readlink /proc/<host_pid>/ns/pid
readlink /proc/<host_pid>/ns/pid
readlink /proc/<host_pid>/ns/pid
lsns -t pid
lsns -t pid
lsns -t pid
pstree -p
ps -eo pid,ppid,cmd
ps -eo pid,ppid,cmd
ps -eo pid,ppid,cmd
--pid=host
--privileged
--privileged
--privileged
-v /proc:/host/proc
-v /:/host
-v /var/run/docker.sock:/var/run/docker.sock
-v /proc:/host/proc
-v /:/host
-v /var/run/docker.sock:/var/run/docker.sock
-v /proc:/host/proc
-v /:/host
-v /var/run/docker.sock:/var/run/docker.sock
SYS_ADMIN
SYS_PTRACE
NET_ADMIN
DAC_READ_SEARCH
SYS_ADMIN
SYS_PTRACE
NET_ADMIN
DAC_READ_SEARCH
SYS_ADMIN
SYS_PTRACE
NET_ADMIN
DAC_READ_SEARCH
hostPID: true
privileged: true
allowPrivilegeEscalation: true
hostPID: true
privileged: true
allowPrivilegeEscalation: true
hostPID: true
privileged: true
allowPrivilegeEscalation: true
docker inspect <container_id> | grep -i pid
docker inspect <container_id> | grep -i pid
docker inspect <container_id> | grep -i pid
docker inspect <container_id> | grep -i cap
docker inspect <container_id> | grep -i cap
docker inspect <container_id> | grep -i cap
--cap-drop=ALL
--cap-drop=ALL
--cap-drop=ALL
docker inspect <container_id> | grep -i privileged
docker inspect <container_id> | grep -i privileged
docker inspect <container_id> | grep -i privileged
docker exec -it <container_id> ps aux
docker exec -it <container_id> ps aux
docker exec -it <container_id> ps aux
ps aux | grep Z
ps aux | grep Z
ps aux | grep Z
readlink /proc/1/ns/pid
readlink /proc/$$/ns/pid
readlink /proc/1/ns/pid
readlink /proc/$$/ns/pid
readlink /proc/1/ns/pid
readlink /proc/$$/ns/pid
hostPID: true
securityContext: privileged: true allowPrivilegeEscalation: true
hostPID: true
securityContext: privileged: true allowPrivilegeEscalation: true
hostPID: true
securityContext: privileged: true allowPrivilegeEscalation: true
SysProcAttr: &syscall.SysProcAttr{ Cloneflags: syscall.CLONE_NEWPID,
}
SysProcAttr: &syscall.SysProcAttr{ Cloneflags: syscall.CLONE_NEWPID,
}
SysProcAttr: &syscall.SysProcAttr{ Cloneflags: syscall.CLONE_NEWPID,
}
docker run --pid - one PID inside the container
- another PID on the host - PID namespaces
- mount namespaces
- network namespaces
- UTS namespaces
- IPC namespaces
- user namespaces - dangerous Linux capabilities
- privileged containers
- host filesystem mounts
- exposed Docker socket
- weak seccomp, AppArmor, or SELinux profiles
- kernel vulnerabilities
- bad Kubernetes security context settings - who becomes PID 1
- whether PID 1 launches the user command directly
- whether you need a small init process
- how signals are forwarded
- how child processes are reaped
- what happens when PID 1 exits - inside the container
- from the host - privileged mode
- host mounts
- excessive capabilities
- exposed Docker socket - Linux man-pages: PID namespaces
- Linux Kernel Documentation: Namespaces
- Docker documentation: docker run --pid
- OWASP Docker Security Cheat Sheet