安全研究

安全漏洞
Linux Kernel本地IO访问权限继承漏洞

发布日期:2004-05-07
更新日期:2004-05-14

受影响系统:
Linux kernel 2.6.5
Linux kernel 2.6.4
Linux kernel 2.6.3
Linux kernel 2.6.2
Linux kernel 2.6.1
Linux kernel 2.6
描述:
BUGTRAQ  ID: 10302

Linux是一款开放源代码操作系统。

Linux内核存在一个IO访问继承漏洞,本地攻击者可以利用这个漏洞使系统挂起,进行拒绝服务攻击,可能也存在权限提升问题。

任何进程通过ioperm()获得一个IO访问权限,IO权限就会被所有系统中其他进程"继承"。不过看起来exit_thread()仅仅使per-thread io_bitmap指针无效,而没有正确的处理使per-TSS io_bitmap指针无效,因此per-TSS针对对其他进程来说还是有效,滥用此指针可导致程序死锁,造成拒绝服务。存在权限提升可能。

<*来源:Stas Sergeev
  
  链接:http://www.ussg.iu.edu/hypermail/linux/kernel/0405.0/1242.html
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

Stas Sergeev 提供了如下测试方法:

#include <stdio.h>
#include <asm/io.h>

int main()
{
outb(0x20, 0x20);
printf("Fine, I am alive!\n");
return 0;
}

建议:
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

* Stas Sergeev提供如下第三方补丁:

--- linux/arch/i386/kernel/process.c 2004-04-14 09:41:14.000000000 +0400
+++ linux/arch/i386/kernel/process.c 2004-05-07 14:54:13.000000000 +0400
@@ -293,8 +293,11 @@

/* The process may have allocated an io port bitmap... nuke it. */
if (unlikely(NULL != tsk->thread.io_bitmap_ptr)) {
+ int cpu = smp_processor_id();
+ struct tss_struct *tss = init_tss + cpu;
kfree(tsk->thread.io_bitmap_ptr);
tsk->thread.io_bitmap_ptr = NULL;
+ tss->io_bitmap_base = INVALID_IO_BITMAP_OFFSET;
}
}

厂商补丁:

Linux
-----
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.kernel.org/

浏览次数:3583
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障