用途
kernel-security 是一个 Linux 内核安全技能,用于引导智能体完成内核安全相关的配置、加固与漏洞分析工作。其覆盖范围包括 LSM 框架(SELinux、AppArmor)、seccomp-bpf 与 libseccomp、KASLR 及其绕过缓解、Intel CET(Shadow Stack + IBT)、ARM PAC 与 BTI、内核内存检测工具(KASAN、KMSAN),以及内核漏洞的 CVE 分诊。
主要能力
LSM 框架
技能给出应用系统调用经过的安全检查链路:DAC(uid/gid、文件模式)→ LSM 钩子(SELinux/AppArmor/Yama 等)→ 能力检查 → seccomp 过滤器 → 内核。可通过 cat /sys/kernel/security/lsm 查看当前启用的 LSM,常见组合为 lockdown、capability、yama、apparmor、safesetid。
SELinux 策略
提供状态检查命令(getenforce、sestatus)、文件与进程上下文查看(ls -Z、ps -eZ)、拒绝审计(ausearch -m avc -ts recent、sealert),以及策略模块示例(myapp.te),包含类型定义、init_daemon_domain、allow 规则,以及 checkmodule、semodule_package、semodule -i 的编译安装流程。
AppArmor 配置
提供生成 complain 模式配置(aa-genprof)、强制模式(aa-enforce)、状态查看(aa-status),并给出 /etc/apparmor.d/usr.bin.myapp 配置示例,包含 include、文件读写权限、网络绑定与 deny 规则。
seccomp-bpf 与 libseccomp
给出使用 libseccomp 的 C 代码示例:初始化过滤器为 SCMP_ACT_KILL_PROCESS,允许 read/write/exit_group/mmap/brk,对 open/openat 返回 EPERM,并通过 seccomp_load 加载。还提供导出 BPF 过滤器用于审计(seccomp_export_bpf)以及用 strace -c 找出所需系统调用的方法。
KASLR
说明如何检查 KASLR 是否启用(/proc/sys/kernel/randomize_va_space、dmesg、/proc/cmdline),并列出针对 KASLR 信息泄露的缓解措施:不向不可信方暴露 /proc/<pid>/maps、%pK printk 指针哈希、限制非特权 eBPF。
Intel CET
提供编译选项 -fcf-protection=full,以及用 readelf 验证 SHSTK 与 IBT 的方法。说明 SHSTK 防护 ROP 返回地址覆写,IBT 防护跳转到非 ENDBR 目标,并指出需要支持 CET 的 CPU(Intel Tiger Lake+;AMD Zen 3+ 且支持 shadow stack)与内核支持。
ARM PAC 与 BTI
提供编译选项 -mbranch-protection=standard,以及用 readelf、llvm-objdump 验证的方法。说明 PAC 使用加密密钥对返回地址和指针签名(ARMv8.3+),BTI 标记合法分支目标,非法跳转将触发故障。
内核内存检测
说明通过内核 .config 中 CONFIG_KASAN=y 构建 KASAN 内核,可报告 use-after-free、越界访问并附带调用栈;CONFIG_KMSAN=y 用于未初始化内存检测。并给出 KASAN 报告示例字段。
CVE 分诊
提供分诊流程:检查内核版本(uname -r)、查阅发行版安全跟踪(Ubuntu security notices、RHEL errata)、NVD 查询、检查补丁是否回移(zgrep 查 changelog)。分诊清单包括:受影响子系统(net、fs、drivers)、本地或远程利用、是否已在当前内核版本修复、无补丁时的缓解措施(禁用模块、sysctl)。
使用方式
该技能以工作流形式组织,每个主题包含命令、代码示例与配置片段,可直接用于实际操作。常见问题表列出症状、原因与修复方法,例如 SELinux 拒绝需用 audit2allow 细化策略、AppArmor 配置路径不匹配需更新路径或使用通配符、seccomp 杀死应用需用 strace 补充允许规则、CET 未激活需检查 CPU 标志、KASAN 内核性能开销为 2-5 倍仅建议在测试虚拟机使用。
适用场景
- 为受限服务编写 SELinux 或 AppArmor 策略
- 使用 seccomp-bpf 过滤器对进程进行沙箱化
- 使用 CET、PAC 或 BTI 加固二进制
- 在内核构建中启用 KASAN 进行漏洞研究
- 评估内核 CVE 对发行版/内核版本的影响
- 设计容器或微服务的安全边界
限制
技能强调纵深防御,指出 LSM 可能因内核漏洞被绕过,不能仅依赖单一机制,需保持内核更新。KASAN 内核存在 2-5 倍性能开销,仅建议在测试虚拟机中使用。CET 需要特定 CPU 与内核支持,旧硬件无法启用。