Linux 内核漏洞提权

一、 内核提权的核心原理

Linux 采用权限分级机制 (root:0,普通用户:1-65535),内核运行在最高权限的内核态(Ring 0) ,用户程序运行在用户态(Ring 3)。内核提权的本质是:

  1. 低权限用户通过系统调用触发内核漏洞;
  2. 利用漏洞执行任意内核态代码 (如修改当前进程的 uid/gid 为 0);
  3. 从内核态返回用户态时,已获得 root 权限。

二、 常见内核漏洞类型及利用场景

1. 内存破坏类漏洞(最主流)

内核对内存操作的校验不严格,导致攻击者可篡改内核内存数据,执行恶意代码。

  • 缓冲区溢出(Buffer Overflow)
    • 原理:内核函数对输入数据长度校验不足,导致超出缓冲区的恶意数据覆盖内核栈 / 堆中的关键信息(如返回地址、函数指针)。
    • 典型案例:CVE-2017-16995(eBPF 权限提升漏洞)、CVE-2021-4034(Polkit pkexec 本地提权,虽非纯内核漏洞,但利用了内核与用户态交互缺陷)。
  • 使用后释放(Use-After-Free, UAF)
    • 原理:内核释放内存对象后未清空指针,攻击者通过竞争条件重新控制该内存区域,伪造内核数据结构。
    • 典型案例:CVE-2022-0847(Dirty Pipe,通过管道缓冲区越界写入修改文件内容,间接实现提权)、CVE-2019-13272(overlayfs 权限检查漏洞)。
  • 越界读写(Out-of-Bounds Read/Write)
    • 原理:内核数组 / 链表操作时未校验索引范围,导致攻击者读取或修改内核敏感内存区域。

2. 权限检查绕过类漏洞

内核在执行敏感操作时(如文件访问、进程管理),权限校验逻辑存在缺陷,导致低权限用户绕过限制。

  • 典型案例:CVE-2021-3493(Ubuntu overlayfs 漏洞,低权限用户可通过挂载 overlayfs 修改任意文件权限)。

3. 配置与设计缺陷

  • 内核模块加载漏洞 :部分系统允许普通用户加载自定义内核模块(modprobe 权限配置错误),攻击者可通过恶意模块直接获取 root 权限。
  • SUID/SGID 程序滥用:内核对 SUID 程序的权限管控不严,攻击者通过触发特定内核行为,让 SUID 程序执行恶意代码。

三、 内核提权的典型利用流程(渗透测试视角)

  1. 信息收集

    • 目标主机内核版本:uname -r(如 5.4.0-125-generic)、cat /proc/version
    • 操作系统发行版:cat /etc/os-release(Ubuntu、CentOS、Debian 等,不同发行版的内核补丁差异大)。
    • 已安装内核补丁:dpkg -l | grep linux-image(Debian/Ubuntu)、rpm -qa | grep kernel(CentOS/RHEL)。
    • 关键配置:sysctl kernel.modules_disabled(是否禁止加载内核模块)。
  2. 漏洞匹配

    • 根据内核版本 + 发行版,查询公开漏洞库(CVE Details、Exploit-DB、GitHub),寻找对应的公开 EXP
    • 核心工具:
      • searchsploit:本地漏洞库查询,如 searchsploit Linux kernel 5.4.0 Ubuntu
      • exploitdb:在线搜索,匹配精准漏洞 EXP。
  3. EXP 编译与执行

    • 多数内核提权 EXP 为 C 语言编写,需在目标主机编译(需安装 gcc):gcc exp.c -o exp -static(静态编译避免依赖缺失)。
    • 执行 EXP:./exp,成功后返回 root 权限 shell(如 # 提示符)。
  4. 绕过防御机制

    • SELinux 绕过 :若 SELinux 开启(getenforce 显示 Enforcing),部分 EXP 需添加 SELinux 绕过逻辑,或临时关闭(setenforce 0,需特定权限)。
    • AppArmor 绕过:修改 EXP 规避 AppArmor 对敏感路径的限制。
    • 内核防护机制绕过:如 KASLR(内核地址空间随机化),部分旧漏洞 EXP 需泄露内核基地址才能利用。

四、 蓝队防御与检测策略

1. 核心防御措施:阻断漏洞源头

  • 及时更新内核补丁

    • 定期升级内核至最新稳定版本:
      • Debian/Ubuntu:apt update && apt install linux-image-generic -y && reboot
      • CentOS/RHEL:yum update kernel -y && reboot
    • 关注厂商安全公告,优先修复高危提权漏洞(如 CVE 评分 ≥9.0)。
  • 限制内核模块加载

    • 配置 sysctl kernel.modules_disabled=1,禁止加载自定义内核模块(需重启生效)。
    • 对必须加载的模块,通过 /etc/modprobe.d/ 配置白名单。
  • 最小权限原则

    • 禁止普通用户执行 sudo 权限下的敏感命令(如 modprobemount)。
    • 清理系统中不必要的 SUID/SGID 程序:find / -perm -4000 -ls,移除非必要程序的 SUID 权限。
  • 启用内核安全机制

    安全机制 作用 启用方式
    KASLR 随机化内核内存地址,增加 EXP 编写难度 内核编译时开启 CONFIG_RANDOMIZE_BASE,多数发行版默认启用
    SMEP/SMAP 禁止内核态执行用户态内存 / 禁止内核态访问用户态内存 需 CPU 支持,内核默认启用
    SELinux/AppArmor 强制访问控制,限制进程权限 设为 Enforcing 模式,配置严格规则

2. 检测手段:发现提权行为

  • 日志监控
    • 监控内核日志:dmesg 中异常信息(如 segmentation faultkernel panicinvalid opcode),可能是 EXP 执行失败导致的内核崩溃。

    • 监控进程权限变更:通过 auditd 配置规则,记录 setuid(0) 等敏感系统调用,如:

      bash

      运行

      复制代码
      auditctl -a exit,always -F arch=b64 -S setuid -k privilege-escalation
    • 监控可疑文件:检测 /tmp 目录下的恶意可执行文件、内核模块文件(.ko)。

  • 行为检测
    • 部署 HIDS(主机入侵检测系统,如 OSSEC、Wazuh),监控以下异常行为:
      • 低权限用户突然执行 root 权限命令(如 passwd/bin/bash)。
      • 异常的内核模块加载(如 insmodmodprobe 调用)。
      • /proc/kcore(内核内存镜像)的访问。
  • 定期自查
    • 使用工具扫描内核漏洞:lynis audit system(系统安全审计工具)、rkhunter(rootkit 检测工具)。
    • 模拟攻击:使用公开 EXP 对测试机进行提权测试,验证防御有效性。

五、 典型内核提权 EXP 示例(以 Dirty Pipe 为例)

CVE-2022-0847(Dirty Pipe)影响 Linux 内核 5.8 ~ 5.16.11,攻击者可通过管道缓冲区越界写入,修改任意只读文件(如 /etc/passwd),实现提权。

  1. 核心思路:向管道写入大量数据,触发内核缓冲区溢出,覆盖只读文件的内存映射区域。

  2. 简化 EXP 逻辑: c

    运行

    复制代码
    #include <unistd.h>
    #include <fcntl.h>
    #include <stdio.h>
    #include...
  3. 执行效果:运行 EXP 后,可将普通用户添加到 /etc/passwd 并赋予 root 权限。

相关推荐
大模型玩家七七8 小时前
基于语义切分 vs 基于结构切分的实际差异
java·开发语言·数据库·安全·batch
寻星探路13 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
Binary-Jeff13 小时前
一文读懂 HTTPS 协议及其工作流程
网络协议·web安全·http·https
Hello.Reader16 小时前
Flink ZooKeeper HA 实战原理、必配项、Kerberos、安全与稳定性调优
安全·zookeeper·flink
智驱力人工智能16 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
盟接之桥16 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
数据与后端架构提升之路17 小时前
论系统安全架构设计及其应用(基于AI大模型项目)
人工智能·安全·系统安全
会员源码网17 小时前
理财源码开发:单语言深耕还是多语言融合?看完这篇不踩坑
网络·个人开发
米羊12118 小时前
已有安全措施确认(上)
大数据·网络
市场部需要一个软件开发岗位18 小时前
JAVA开发常见安全问题:Cookie 中明文存储用户名、密码
android·java·安全