当前位置:  首页  >  服务器技术  >  Linux/unix  >  Linux教程

LinuxKerneldo_io_submit()函数整数溢出漏洞

文章标题:LinuxKerneldo_io_submit()函数整数溢出漏洞。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  发布日期:2010-09-21

  更新日期:2010-09-27

  受影响系统:

  Linux kernel 2.6.x

  不受影响系统:

  Linux kernel 2.6.36-rc4

  描述:

  --------------------------------------------------------------------------------

  BUGTRAQ  ID: 43353

  CVE(CAN) ID: CVE-2010-3067

  Linux Kernel是开放源码操作系统Linux所使用的内核。

  Linux Kernel的fs/aio.c文件中的do_io_submit函数存在整数溢出漏洞,本地用户可以通过io_submit调用导致拒绝服务。

  io_submit系统调用直接调用了do_io_submit()函数:

  SYSCALL_DEFINE3(io_submit, aio_context_t, ctx_id, long, nr,

  struct iocb __user * __user *, iocbpp)

  {

  return do_io_submit(ctx_id, nr, iocbpp, 0);

  }

  do_io_submit仅检查了nr是否小于0,但没有检查access_ok乘积是否会溢出:

  long do_io_submit(aio_context_t ctx_id, long nr,

  struct iocb __user *__user *iocbpp, bool compat)

  {

  ...

  if (unlikely(!access_ok(VERIFY_READ, iocbpp, (nr*sizeof(*iocbpp)))))

  return -EFAULT;

  ...

  之后对__get_user_nocheck()使用了这个循环,这并不安全:

  ...

  for (i=0; i

  struct iocb __user *user_iocb;

  struct iocb tmp;

  if (unlikely(__get_user(user_iocb, iocbpp + i))) {

  ret = -EFAULT;

  break;

  }

  ...

  建议:

  --------------------------------------------------------------------------------

  厂商补丁:

  Linux

  -----

  目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

  linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=75e1c70fc31490ef8a373ea2a4bea2524099b478">http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=75e1c70fc31490ef8a373ea2a4bea2524099b478

吐了个 "CAO" !
扫码关注 PHP1 官方微信号
PHP1.CN | 中国最专业的PHP中文社区 | PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | PHP问答
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有