首页
社区
课程
招聘
[求助][求助]有人研究过这个漏洞吗?cve-2008-1943
发表于: 2010-5-18 22:08 4318

[求助][求助]有人研究过这个漏洞吗?cve-2008-1943

2010-5-18 22:08
4318
最近在尝试做一些漏洞研究,这个漏洞是通过return-into-libc来溢出的,环境完全搭好了,就是不太理解从前端到后端怎么来做return-into-libc,请高人指教。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 3171
活跃值: (76)
能力值: (RANK:250 )
在线值:
发帖
回帖
粉丝
2
受影响系统:
XenSource Xen 3.2.1

描述:
--------------------------------------------------------------------------------
BUGTRAQ ID: 29183
CVE(CAN) ID: CVE-2008-1943

Xen是可用于Linux内核的一种虚拟化技术,允许同时运行多个操作系统。

Xen中超虚拟化帧缓冲区(PVFB)后端没有验证前端的帧缓冲区描述,这可能允许恶意用户导致拒绝服务或使用特制的前端入侵特权域Dom0。

帧缓冲区是由以下参数描述的:

* fb_len(共享帧缓冲区大小)
* width,height,depth
* row_stride,offset

在启动时fb_len是固定大小,前端可以通过发送XENFB_TYPE_RESIZE事件修改其他参数。如果存在后端配置参数videoram的话,xenfb_read_frontend_fb_config()会根据这个参数限制fb_len。xenfb_map_fb()使用fb_len映射前端的帧缓冲区,除非有videoram参数的限制,否则前端就可以使该函数映射任意大小。

xenfb_register_console()和xenfb_on_fb_event()向QEMU的DisplayState对象传送width、height、depth和rowstride参数。如果参数允许的话,DisplayState对象直接操作帧缓冲区(shared_buf为true),否则分配大小为height * width * depth/8的内部缓冲区(shared_buf为false)。

xenfb_on_fb_event()使用width和height参数确定升级事件的区域,然后将该区域传送给xenfb_guest_copy();xenfb_invalidate()将完整的屏幕区域传送给xenfb_guest_copy();除非shared_buf为true,否则xenfb_guest_copy()将参数区域(x,y,w,h)拷贝到内部缓冲区,这会拷贝h块内存;从0开始计算的第i次拷贝将共享帧缓冲区的w * depth/8字节 + offset + (y + i) * row_stride + x * depth/8拷贝到了内部缓冲区 + (y + i) * ds->linesize + x * ds->depth/8。(这里ds->linesize和ds->depth是后端所指定的内部缓冲区)

上述拷贝操作会导致读取读取共享的帧缓冲区并越界写入到内部缓冲区。前端可以利用这个漏洞写入到任意后端内存,导致拒绝服务或入侵特权域。

你可以到论坛译文区找找相关资料,很有帮助的
2010-5-19 10:14
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
老外的文章里说,在guest OS里要使用xenfb.ko和xenkbd.ko代替原来的
我的做法是在guestOS里先把vmlinuz-2.6.21-2950.fc8xen中这两个驱动对应的代码NOP掉,
然后生成自己的xenfb.ko和xenkdb.ko加载,不知道这样做对不对,这是问题之一;
问题二是不知道怎么修改代码使参数传递到Dom0的qemu进程对应的函数中。
有研究过这个漏洞的指导一下,一定当面感谢!
2010-5-19 17:31
0
游客
登录 | 注册 方可回帖
返回
//