首页 -> 安全研究

安全研究

安全漏洞
Linux Kernel i2c整数溢出漏洞

发布日期:2004-06-16
更新日期:2004-06-18

受影响系统:
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.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
描述:
Linux是一款开放源代码操作系统。

Linux包含的'i2c'驱动存在整数溢出问题,本地攻击者可以利用这个漏洞提升权限。

问题存在于i2c-core.c的i2cproc_bus_read()函数中:

--- vuln code ---
ssize_t i2cproc_bus_read(struct file * file, char *
buf,size_t count,
                          loff_t *ppos)
{
         struct inode * inode =
file->f_dentry->d_inode;
         char *kbuf;
         struct i2c_client *client;
         int i,j,k,order_nr,len=0;
         size_t len_total;
         int order[I2C_CLIENT_MAX];

         if (count > 4000)
                 return -EINVAL;
         len_total = file->f_pos + count;
         /* Too bad if this gets longer (unlikely) */
         if (len_total > 4000)
                 len_total = 4000;
         for (i = 0; i < I2C_ADAP_MAX; i++)
                 if (adapters[i]->inode ==
inode->i_ino) {
                 /* We need a bit of slack in the
kernel buffer; this makes the
                    sprintf safe. */
                         if (! (kbuf = kmalloc(count +
80,GFP_KERNEL)))
                                 return -ENOMEM;

[...]

虽然对用户提供的变量'count'进行了安全检查,如不超过4000,但对其为负值没有进行处理,因此负的count参数可导致kmalloc()发生整数溢出,本地攻击者可以利用这个漏洞提升权限。

<*来源:shaun2k2 (shaunige@yahoo.co.uk
  
  链接:http://marc.theaimsgroup.com/?l=bugtraq&m=108742766813862&w=2
*>

建议:
临时解决方法:

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

* 在i2c-core.c文件中的i2cproc_bus_read()开始处增加如下检查:

---
if(count < 0)
        return -EINVAL;
---

然后重建内核。

厂商补丁:

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

http://www.kernel.org/

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