Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Linux Kernel 本地竞争条件漏洞

Linux Kernel是开放源码操作系统Linux所使用的内核,存在locks_remove_flock()本地竞争条件漏洞。受影响系统:Linux kernel 2.6.x不受影响系统:Linux kernel 2.6.25.6描述:--------------------------------------------------------------------------------BUGTRAQ ID: 33237CVE(CAN) ID: CVE-2008-4307Linux Kernel是开放源码操作系统Linux所使用的内核。RHEL4/5内核处理POSIX锁定时fcntl调用可能与关闭相同文件描述符出现竞争,本地攻击者可以利用这个漏洞导致拒绝服务或获得权限提升。fcntl以如下方式获得POSIX锁定:sys_fcntl()fget()do_fcntl()fcntl_setlk()fput()if(!count) __fput()locks_remove_flock()fcntl_setlk()调用可能阻塞很长时间,允许同一进程中的其他线程关闭文件描述符:sys_close()filp_close()locks_remove_posix()fput()if(!count) __fput()locks_remove_flock()如果其中一个线程仍在fcntl_setlk中阻断期间但在许可锁定之前(在将file_lock结构放置到inode的i_lock列表之前)从另一个线程关闭了文件描述符,关闭路径中的locks_remove_posix调用就会错过POSIX锁定。此时还无法调用locks_remove_flock,因为fcntl_setlk中线程仍持有对文件的引用。当__fput调用locks_remove_flock时,sys_fcntl返回路径的最终fput可以触发漏洞:/** This function is called on the last close of an open file.*/void locks_remove_flock(struct file *filp){[...]while ((fl = *before) != NULL) {if (fl->fl_file == filp) {if (IS_FLOCK(fl)) {locks_delete_lock(before);continue;}if (IS_LEASE(fl)) {lease_modify(before, F_UNLCK);continue;}if (IS_POSIX(fl))continue;/* What? */BUG(); <----}before = &fl->fl_next;}unlock_kernel();}建议:--------------------------------------------------------------------------------厂商补丁:Linux-----目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/old/patch-2.6.25-git6.log认识Linux防火墙IptablesLinux Kernel 64位ABI系统调用参数权限提升漏洞相关资讯      Linux Kernel  Linux漏洞 
  • Linux Kernel 3.14系列结束支持  (今 14:24)
  • Linux kernel 2.6.32 LTS 将于下个  (01月31日)
  • Linux Kernel 4.1.15发布  (12/15/2015 20:54:13)
  • Linux Kernel 开发报告 25 周年版  (09月10日)
  • 敲击28次退格键之后:Linux漏洞可  (12/18/2015 11:22:28)
  • Red Hat Linux 修补“libuser”库  (07/26/2015 06:39:34)
本文评论 查看全部评论 (0)
表情: 姓名: 字数