漏洞缓解
这些规则是针对特定漏洞的规则,用于阻断漏洞利用向量,在漏洞修复前进行防御。您可以参考以下格式定义策略:
policy:
enforcer: BPF
mode: EnhanceProtect
enhanceProtect:
vulMitigationRules:
- ingress-nightmare-mitigation
cgroups-lxcfs-escape-mitigation
缓解 cgroups & lxcfs 逃逸。
若用户将宿主机的 cgroupfs 挂载进容器,或使用 lxcfs 为容器提供资源视图。在这两种场景下可能存在容器逃逸风险,攻击者可以在容器内改写 cgroupfs 实施容器逃逸。
此规则也可用于防御 CVE-2022-0492 漏洞利用。
AppArmor Enforcer 阻止在容器内修改:
/**/release_agent/**/devices/device.allow/**/devices/**/device.allow/**/devices/cgroup.procs/**/devices/**/cgroup.procs/**/devices/task/**/devices/**/task
BPF Enforcer 阻止在容器内修改:
/**/release_agent/**/devices.allow/**/cgroup.procs/**/devices/tasks
- AppArmor
- BPF
runc-override-mitigation
缓解通过改写 runc 实现的容器逃逸。
此规则用于缓解通过改写宿主机 runc 从而实现容器逃逸的漏洞,例如 CVE-2019-5736。
禁止改写 /**/runc 文件。
- AppArmor
- BPF
dirty-pipe-mitigation
缓解利用 Dirty Pipe 漏洞实现的容器逃逸。
此规则用于防御利用 CVE-2022-0847 (Dirty Pipe) 漏洞进行容器逃逸的攻击,您可以使用此规则在升级内核前对容器进行加固。
注:尽管禁用 splice 系统调用可能会对一些软件包产生问题,但对大多数合法应用来说都不会产生影响,因为这个系统调用的使用相对罕见。
禁止调用 splice 系统调用。
- Seccomp
ingress-nightmare-mitigation
缓解 IngressNightmare 漏洞利用。
此规则用于缓解 Ingress-nginx 的 IngressNightmare (CVE-2025-1974) 漏洞。
Ingress-nginx 是 Kubernetes 的 Ingress 控制器,它使用 nginx 作为反向代理和负载均衡服务器。拥有 Pod 网络访问权限的攻击者,可利用此漏洞在 ingress-nginx controller 容器内执行任意代码,进而获取集群的所有 Secrets 并接管整个集群。您可以在升级 Ingress-nginx 到安全版本前,使用此规则进行缓解。
可参考下面的链接了解更多。
此规则禁止容器进程访问 ingress-nginx 和 kube-system 命名空间中的 ingress-nginx-controller-admission 服务及其端点。
如果您将 ingress-nginx 部署在其他命名空间,那么可以根据 vArmor 的 Service 接口自定义规则进行防御。
- BPF
copy-fail-mitigation
缓解利用 Copy Fail 漏洞实现的容器逃逸。
此规则用于缓解 Linux 内核的 CVE-2026-31431 (Copy Fail) 漏洞。
该漏洞源于 内核 authencesn 加密模板中的逻辑缺陷,允许非特权本地用户通过 AF_ALG 套接字结合 splice() 系统调用,对任意可读文件的 page cache 执行确定性的 4 字节可控写入。这可以实现本地权限提升,并可跨越容器边界(因为 page cache 在宿主机范围内共享)。您可以在升级或修补内核之前使用此规则进行缓解。
可参考下面的链接了解更多。
- AppArmor Enforcer 通过
network alg规则阻止容器内创建AF_ALG网络族套接字。 - BPF Enforcer 通过拒绝地址族为
AF_ALG(38)的套接字创建来阻断漏洞利用。
此规则阻止容器内进程创建 AF_ALG 套接字。由于 AF_ALG 套接字用于从用户空间访问内核加密子系统,阻断其创建即可消除漏洞利用向量。绝大多数容器化应用不需要通过 AF_ALG 直接访问内核加密子系统,因此此规则通常不会对正常工作负载产生影响。
- AppArmor
- BPF
注意:尽管 Seccomp 在技术上可以阻止 AF_ALG 套接字创建(通过对 socket() 系统调用进行参数匹配过滤),但此规则未将其作为内置 enforcer。原因如下:
- Seccomp 配置在容器创建时应用,运行期间无法动态更新或放宽,而 AppArmor 和 BPF enforcer 支持运行时策略更新。
- 将 Seccomp 作为内置 enforcer 可能导致用户在需要动态更新规则的场景下产生错误配置,使得安全策略无法在不重启工作负载的情况下进行调整。
如果您仍然希望使用 Seccomp,可以通过 syscallRawRules 手动配置:
policy:
enforcer: Seccomp
mode: EnhanceProtect
enhanceProtect:
syscallRawRules:
- names:
- socket
action: SCMP_ACT_ERRNO
args:
- index: 0
value: 38
op: SCMP_CMP_EQ