6.3.10.3. 漏洞利用缓解措施

6.3.10.3.1. kptr_restrict

在Linux内核漏洞利用中常常使用 commit_credsprepare_kernel_cred 来完成提权,其地址可以从/proc/kallsyms中读取。

因此Linux启用了kptr_restrict,其值和对应的功能如下:

  • 0: root和普通用户都可以读取

  • 1: root用户有权限读取, 普通用户没有权限

  • 2: 内核将符号地址打印为全0, root和普通用户都没有权限

该值可以通过 sysctl kernel.kptr_restrict 查看和修改

6.3.10.3.2. SMEP

SMEP(Supervisor Mode Execution Protection)是一种减缓内核利用的cpu策略,禁止内核态到用户态内存页的代码执行,每一页都有smep标识来标明是否允许ring0的代码执行。