快速业务通道

Linux Kernel do_io_submit()函数整数溢出漏洞

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-15

  发布日期: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<nr; 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

Empire CMS,phome.net

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号