免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: kouu
打印 上一主题 下一主题

剖析一个由sendfile引发的linux内核BUG [复制链接]

论坛徽章:
0
51 [报告]
发表于 2010-01-17 12:08 |只看该作者
原帖由 Godbach 于 2010-1-17 12:03 发表
多谢WZT兄的详细解释。这个应该印证了我用标准的2.6.18编译之后可以exp的原因。

另外,为什么那个程序还要分出来一个run.c呢。他也就是设置一下PER_SVR4。不可以合并到同一个文件里吗?


兄弟的BLOG上不是有篇:空指针的乐趣(2)

另一个关于 map_min_addr 的方法也必须要谈到:一个带有 SVR4 个性化的特权进程在 exec() 的时候,会有一个只读页面映射到0页面。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
52 [报告]
发表于 2010-01-18 10:27 |只看该作者
Enable -fstack-protector buffer overflow detection (EXPERIMENTAL) ───────────────────┐
  │ CONFIG_CC_STACKPROTECTOR:                                                                              │  
  │                                                                                                        │  
  │ This option turns on the -fstack-protector GCC feature. This                                           │  
  │ feature puts, at the beginning of functions, a canary value on                                         │  
  │ the stack just before the return address, and validates                                                │  
  │ the value just before actually returning.  Stack based buffer                                          │  
  │ overflows (that need to overwrite this return address) now also                                        │  
  │ overwrite the canary, which gets detected and the attack is then                                       │  
  │ neutralized via a kernel panic.   

这个配置选项应该就是内核态配置,告诉GCC不要优化指针的初始化和操作把。

论坛徽章:
0
53 [报告]
发表于 2010-01-18 10:33 |只看该作者
原帖由 Godbach 于 2010-1-18 10:27 发表

这个配置选项应该就是内核态配置,告诉GCC不要优化指针的初始化和操作把。


这个是检查缓冲区溢出的选项吧?

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
54 [报告]
发表于 2010-01-18 10:41 |只看该作者
记得前一段时间还有一个sendmsg的漏洞,由于该指针被初始化了,随后使用的时候编译器做了优化,导致其为一个有效的指针。但实际上是有漏洞可利用的,后来就有篇文章说编译内核的时候告诉编译器不做这个优化,感觉也应该是一个内核配置项。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
55 [报告]
发表于 2010-01-18 11:00 |只看该作者
空指针的乐趣2上提到了,是-fno-delete-null-pointer-checks

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
56 [报告]
发表于 2010-01-18 11:02 |只看该作者
对比了一下2.6.18.3和2.6.32.3的内核Makefile,后者KBUILD_CFLAGS中多了-fno-delete-null-pointer-checks的编译选项

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
57 [报告]
发表于 2010-01-18 11:09 |只看该作者

回复 #53 W.Z.T 的帖子

有幸看到了兄台分析的udp_sendmsg漏洞,学习一下。。
http://hi.baidu.com/wzt85/blog/item/01c7f79052cd8584a877a4c4.html

论坛徽章:
0
58 [报告]
发表于 2010-01-18 17:17 |只看该作者
原帖由 Godbach 于 2010-1-18 10:41 发表
记得前一段时间还有一个sendmsg的漏洞,由于该指针被初始化了,随后使用的时候编译器做了优化,导致其为一个有效的指针。但实际上是有漏洞可利用的,后来就有篇文章说编译内核的时候告诉编译器不做这个优化,感 ...


现在我还是不太明白为什么关闭selinux就不能映射0地址了?

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
59 [报告]
发表于 2010-01-18 17:36 |只看该作者
原帖由 W.Z.T 于 2010-1-18 17:17 发表


现在我还是不太明白为什么关闭selinux就不能映射0地址了?


这个可能就是和SElinux有关了吧。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
60 [报告]
发表于 2010-01-18 17:40 |只看该作者
另外有个问题需要请教WZT兄。
在sendpage漏洞中,将返回的函数指向的0地址进行映射,因此可以直接执行kernel_code。

而在你分析的udp_sendmsg函数中,只是一个成员为NULL。所以这个时候exp程序要构造出那个结构,但是最终还是得捕捉到执行函数是跳转到exp指定的函数,这个时候内核是调用那个函数时发生的呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP