发新话题
打印

OpenBSD 核心整型溢出漏洞

OpenBSD 核心整型溢出漏洞

涉及
[url=/code/]程序[/url]

OpenBSD 核心
  
描述
OpenBSD 核心整型溢出
[url=/bugs/]漏洞[/url]

  
详细
OpenBSD 是一款免费、基于 BSD 多平台的类 Unix 操作
[url=/jsj/system/]系统[/url]
。OpenBSD 3.3 及之前的版本的核心存在整型溢出条件,可导致即使是在securelevel(7)
[url=/]安全[/url]
等级下 root 也可“半任意”写核心内存,
[url=/]攻击[/url]
者可以绕过
[url=/]安全[/url]
等级限制修改核心,植入后门
[url=/code/]程序[/url]
。  对 semget(2)
[url=/jsj/system/]系统[/url]
调用整型溢出:
sys_semget() 分配缓冲区:
src/sys/kern/sysv_sem.c:
sys_semget():
semaptr_new-%26gt;sem_base = malloc(nsems * sizeof(struct sem),
    M_SEM, M_WAITOK);  校验通过:
src/sys/kern/sysv_sem.c:
sys_semget():
if (nsems %26lt;= 0 || nsems %26gt; seminfo.semmsl) {
    DPRINTF(("nsems out of range (0%26lt;%d%26lt;=%d)", nsems,
     seminfo.semmsl));
    return (EINVAL);
}
if (nsems %26gt; seminfo.semmns - semtot) {
    DPRINTF(("not enough semaphores left (need %d, got %d)",
     nsems, seminfo.semmns - semtot));
    return (ENOSPC);
}  如果校验通过并且成功分配缓冲,nsems 的值和 semaphore 的配置:
src/sys/kern/sysv_sem.c:
sys___semctl():
semaptr_new-%26gt;sem_nsems = nsems;  注意,此处的 int 指定为 short 型,这也存在
[url=/bugs/]漏洞[/url]
。由于 root 可以通过 sysctl 使 seminfo.semmns 和 seminfo.semmsl 为任意值,可能使分配的缓冲大小错误,通过 semctl(2)
[url=/jsj/system/]系统[/url]
调用来读写内存。  受影响
[url=/jsj/system/]系统[/url]

OpenBSD kernel 3.3 及之前的版本

解决方案
最新版本版已修正该缺陷,请用户及时访问下列站点进行升级:http://openbsd.org/                                  



[url=java:copyUrl(]复制地址,推荐给QQ、MSN上的好友[/url]


[url=/bbs/]进入黑客手册技术论坛和大家一起讨论[/url]

TOP

发新话题