容器加固
加固具有特权的容器
disallow-write-core-pattern
禁止改写 procfs 的 core_pattern。
攻击者可能会在特权容器(Privileged Container)中,通过改写 procfs core_pattern,来实施容器逃逸。或者在特权容器(w/ CAP_SYS_ADMIN)中,卸载特定挂载点后改写 procfs core_pattern,来实施容器逃逸。
禁止修改 procfs 的 core_pattern。
- AppArmor
- BPF
disallow-mount-securityfs
禁止挂载 securityfs。
攻击者可能会在特权容器(w/ CAP_SYS_ADMIN)中,以读写权限挂载新的 securityfs 并对其进行修改。
禁止挂载新的 securityfs。
- AppArmor
- BPF
disallow-mount-procfs
禁止重新挂载 procfs。
攻击者可能会在特权容器(w/ CAP_SYS_ADMIN)中,以读写权限重新挂载 procfs,然后再通过改写 core_pattern 等方式进行容器逃逸、修改系统配置。
- 禁止挂载新的 procfs。
- 禁止使用 bind, rbind, move, remount 选项重新挂载
/proc**。 - 使用 BPF enforcer 时,还将禁止卸载
/proc**。
- AppArmor
- BPF
disallow-write-release-agent
禁止改写 cgroupfs 的 release_agent。
攻击者可能会在特权容器(Privileged Container)中,通过改写 cgroupfs release_agent,来实施容器逃逸。
禁止修改 cgroupfs 的 release_agent。
- AppArmor
- BPF
disallow-mount-cgroupfs
禁止重新挂载 cgroupfs。
攻击者可能会在特权容器(w/ CAP_SYS_ADMIN)中,以读写权限重新挂载 cgroupfs。然后再通过改写 release_agent、设备访问权限等方式进行容器逃逸、修改系统配置。 Attackers may attempt to escape from containers (w/ CAP_SYS_ADMIN) by remounting cgroupfs with read-write permissions. Subsequently, they can modify release_agent and device access permissions, among other things.
- 禁止挂载新的 cgroupfs。
- 禁止使用 bind, rbind, move, remount 选项重新挂载
/sys/fs/cgroup**。 - 禁止使用 rbind 选项重新挂载
/sys**。 - 使用 BPF enforcer 时,还将禁止卸载
/sys**。
- AppArmor
- BPF
disallow-debug-disk-device
禁止调试磁盘设备。
攻击者可能会在特权容器(Privileged Container)中,通过调试宿主机磁盘设备,从而实现宿主机文件的读写。
建议配合 disable-cap-mknod 使用,从而防止攻击者利用 mknod 创建新的设备文件,从而绕过此规则。
动态获取宿主机磁盘设备文件,并禁止在容器内以读写权限访问。
- AppArmor
- BPF
disallow-mount-disk-device
禁止挂载宿主机磁盘设备并访问。
攻击者可能会在特权容器(Privileged Container)中,挂载宿主机磁盘设备,从而实现宿主机文件的读写。
建议配合 disable-cap-mknod 使用,从而防止攻击者利用 mknod 创建新的设备文件,从而绕过此规则。
动态获取宿主机磁盘设备文件,并禁止在容器内挂载。
- AppArmor
- BPF
disallow-mount
禁用 mount 系统调用。
MOUNT(2) 常被用于权限提升 、容器逃逸等攻击。而几乎所有的微服务应用都无需 mount 操作,因此建议使用此规则限制容器内进程访问 mount 系统调用。
注:当 spec.policy.privileged 为 false 时,将默认禁用 mount() 系统调用。
禁用 mount 系统调用。
- AppArmor
- BPF
disallow-umount
禁用 umount 系统调用。
UMOUNT(2) 可被用于卸载敏感的挂载点(例如 maskedPaths),从而导致权限提升、信息泄露。而几乎所有的微服务应用都无需 umount 操作,因此建议使用此规则限制容器内进程访问 umount() 系统调用。
禁用 umount 系统调用。
- AppArmor
- BPF
disallow-insmod
禁止加载内核模块。
攻击者可能会在特权容器中(w/ CAP_SYS_MODULE),通过执行内核模块加载命令 insmod,向内核中注入代码。