当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-082315

漏洞标题:Linux 内核: isofs 死循环问题

相关厂商:kernel官方

漏洞作者: 龙猫

提交时间:2014-11-10 15:07

修复时间:2015-02-08 15:08

公开时间:2015-02-08 15:08

漏洞类型:拒绝服务

危害等级:高

自评Rank:10

漏洞状态:未联系到厂商或者厂商积极忽略

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-11-10: 积极联系厂商并且等待厂商认领中,细节不对外公开
2015-02-08: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

该问题的现象和 CVE-2014-5472 非常相似,但根因不同, 都是内核在处理ISO9660类型文件的Rock Ridge扩展时死循环的问题。

详细说明:

该问题来源于内核中isofs模块parse_rock_ridge_inode_internal函数中,对于"CE"类型Entry的处理没有考虑死循环的情况(CVE-2014-5472 是在对"CL"类型Entry处理时没有考虑).
如果对于一个包含Rock Ridge扩展的ISO文件做特殊修改,把CE Entry 里面的扩展位置指向它自己,则kernel在处理时就会进入死循环.

漏洞证明:

在Ubuntu 14.10 版本做了测试,首先测试了 CVE-2014-5472 中提供的两个测试iso文件(deadlock.iso和recurse.iso),结果都没有问题,说明这个版本中已经包含了对CVE-2014-5472 bug的修复.
然后测试了自己制作的1个 test.iso, 执行mount之后,通过top查看,mount一直占CPU 100%
如图所示:

1.JPG


通过查看对应任务调用栈,一直在parse_rock_ridge_inode_internal函数中,如下:
root@ubuntu-kylin:/home/ubuntu-kylin# cat /proc/5807/stack
[<c11cf928>] __getblk+0x38/0x350
[<ffffffff>] 0xffffffff
root@ubuntu-kylin:/home/ubuntu-kylin#
root@ubuntu-kylin:/home/ubuntu-kylin# cat /proc/5807/stack
[<c11cf928>] __getblk+0x38/0x350
[<c11cfca7>] __bread+0x17/0xe0
[<f951aac4>] rock_continue+0x84/0x130 [isofs]
[<f951b208>] parse_rock_ridge_inode_internal.part.7+0x108/0x660 [isofs]
[<f951b9db>] parse_rock_ridge_inode+0x3b/0x70 [isofs]
[<f95188dd>] isofs_read_inode+0x2ad/0x6f0 [isofs]
[<f95190b6>] __isofs_iget+0x66/0x90 [isofs]
[<f9519d9c>] isofs_fill_super+0x91c/0xdb0 [isofs]
[<c11a2c23>] mount_bdev+0x183/0x1b0
[<f9518e83>] isofs_mount+0x33/0x40 [isofs]
[<c11a33d1>] mount_fs+0x31/0x190
[<c11bc878>] vfs_kern_mount+0x48/0xf0
[<c11becc9>] do_mount+0x1f9/0x9c0
[<c11bf774>] SyS_mount+0xa4/0x110
[<c16c329f>] sysenter_after_call+0x0/0x16
[<ffffffff>] 0xffffffff
root@ubuntu-kylin:/home/ubuntu-kylin#
root@ubuntu-kylin:/home/ubuntu-kylin# cat /proc/5807/stack
[<c11cf928>] __getblk+0x38/0x350
[<ffffffff>] 0xffffffff
root@ubuntu-kylin:/home/ubuntu-kylin# cat /proc/5807/stack
[<ffffffff>] 0xffffffff
root@ubuntu-kylin:/home/ubuntu-kylin# cat /proc/5807/stack
[<ffffffff>] 0xffffffff
root@ubuntu-kylin:/home/ubuntu-kylin# cat /proc/5807/stack
[<ffffffff>] 0xffffffff
root@ubuntu-kylin:/home/ubuntu-kylin# cat /proc/5807/stack
[<c10cc589>] tick_program_event+0x29/0x30
[<c10833df>] hrtimer_interrupt+0x15f/0x2d0
[<c11cf928>] __getblk+0x38/0x350
[<c11cfca7>] __bread+0x17/0xe0
[<f951aa9e>] rock_continue+0x5e/0x130 [isofs]
[<f951b208>] parse_rock_ridge_inode_internal.part.7+0x108/0x660 [isofs]
[<f951b9db>] parse_rock_ridge_inode+0x3b/0x70 [isofs]
[<f95188dd>] isofs_read_inode+0x2ad/0x6f0 [isofs]
[<f95190b6>] __isofs_iget+0x66/0x90 [isofs]
[<f9519d9c>] isofs_fill_super+0x91c/0xdb0 [isofs]
[<c11a2c23>] mount_bdev+0x183/0x1b0
[<f9518e83>] isofs_mount+0x33/0x40 [isofs]
[<c11a33d1>] mount_fs+0x31/0x190
[<c11bc878>] vfs_kern_mount+0x48/0xf0
[<c11becc9>] do_mount+0x1f9/0x9c0
[<c11bf774>] SyS_mount+0xa4/0x110
[<c16c329f>] sysenter_after_call+0x0/0x16
[<ffffffff>] 0xffffffff
root@ubuntu-kylin:/home/ubuntu-kylin# cat /proc/5807/stack
[<ffffffff>] 0xffffffff

修复方案:

建议内核增加对CE Entry的特殊处理.

版权声明:转载请注明来源 龙猫@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝