Linux Kernel多个本地MOXA串行驱动缓冲区溢出漏洞
发布日期:2005-01-07
更新日期:2005-01-13
受影响系统:Linux kernel 2.6.9
Linux kernel 2.6.8
Linux kernel 2.6.7
Linux kernel 2.6.6
Linux kernel 2.6.5
Linux kernel 2.6.4
Linux kernel 2.6.3
Linux kernel 2.6.2
Linux kernel 2.6.10
Linux kernel 2.6.1
Linux kernel 2.6
Linux kernel 2.4.9
Linux kernel 2.4.8
Linux kernel 2.4.7
Linux kernel 2.4.6
Linux kernel 2.4.5
Linux kernel 2.4.4
Linux kernel 2.4.3
Linux kernel 2.4.28
Linux kernel 2.4.27
Linux kernel 2.4.26
Linux kernel 2.4.25
Linux kernel 2.4.24
Linux kernel 2.4.23
Linux kernel 2.4.22
Linux kernel 2.4.21
Linux kernel 2.4.20
Linux kernel 2.4.2
Linux kernel 2.4.19
Linux kernel 2.4.18
Linux kernel 2.4.17
Linux kernel 2.4.16
Linux kernel 2.4.15
Linux kernel 2.4.14
Linux kernel 2.4.13
Linux kernel 2.4.12
Linux kernel 2.4.11
Linux kernel 2.4.10
Linux kernel 2.4.1
Linux kernel 2.4
描述:
BUGTRAQ ID:
12195
Linux Kernel是一款开放源代码操作系统。
Linux Kernel的MOXA串口驱动不正确检查用户拷贝的数据,本地攻击者可以利用这个漏洞可能可以用于提升特权。
问题存在于'drivers/char/moxa.c'文件中,执行'copy_from_user()'函数时拷贝用户提供的用户空间数据到固定大小的10240字节的静态内核缓冲区(moxaBuff)中,不过由于利用由'MoxaDriverIoctl()'函数传递的用户提供的长度参数,可导致不正确的边界操作,触发本地缓冲区溢出。
<*来源:Brad Spengler (
spender@grsecurity.net)
*>
建议:
厂商补丁:
Linux
-----
相关补丁:
--- drivers/char/moxa.c 2005-01-05 09:37:08 -0500
+++ drivers/char/moxa.c 2005-01-05 09:38:38 -0500
@@ -1668,6 +1668,8 @@
return -EFAULT;
if(dltmp.cardno < 0 || dltmp.cardno >= MAX_BOARDS)
return -EINVAL;
+ if(dltmp.len < 0 || dltmp.len > sizeof(moxaBuff))
+ return -EINVAL;
switch(cmd)
{
@@ -2822,8 +2824,6 @@
void __iomem *baseAddr;
int i;
- if(len > sizeof(moxaBuff))
- return -EINVAL;
if(copy_from_user(moxaBuff, tmp, len))
return -EFAULT;
baseAddr = moxaBaseAddr[cardno];
浏览次数:3002
严重程度:0(网友投票)