安全研究
安全漏洞
Borland InterBase畸形报文远程栈溢出漏洞
发布日期:2008-05-20
更新日期:2008-05-21
受影响系统:
Borland InterBase 2007 SP2描述:
BUGTRAQ ID: 29302
Borland InterBase是跨平台的高性能商业数据库。
Borland Interbase数据库在处理发送给默认TCP 3050端口的畸形报文时存在整数溢出漏洞,最终可能导致栈溢出,允许以系统权限执行任意指令。
Solaris版本中的漏洞代码段:
/-----------
inet_accept_connection+0x164: srl %o5, 0x10, %o7
inet_accept_connection+0x168: ld [%l0 + 0xcc], %l1
inet_accept_connection+0x16c: sth %o7, [%l1 + 8]
inet_accept_connection+0x170: ba +0x3a0
<inet_accept_connection+0x510>
inet_accept_connection+0x174: ld [%fp - 0x8c], %g2
inet_accept_connection+0x178: ld [%fp - 0x88], %g3
inet_accept_connection+0x17c: add %fp, -0x84, %g2
inet_accept_connection+0x180: st %g2, [%fp - 0x90]
inet_accept_connection+0x184: ldsb [%g3], %g4
inet_accept_connection+0x188: st %g4, [%fp - 0xa0]
inet_accept_connection+0x18c: ld [%fp - 0x88], %o5
inet_accept_connection+0x190: add %o5, 1, %o7
inet_accept_connection+0x194: st %o7, [%fp - 0x88]
inet_accept_connection+0x198: ld [%fp - 0xa0], %o4
inet_accept_connection+0x19c: st %o4, [%fp - 0x304]
inet_accept_connection+0x1a0: ld [%fp - 0x304], %l0
inet_accept_connection+0x1a4: st %l0, [%fp - 0x308]
inet_accept_connection+0x1a8: ld [%fp - 0x308], %l1
inet_accept_connection+0x1ac: cmp %l1, 0
inet_accept_connection+0x1b0: be,a +0x50
<inet_accept_connection+0x200>
inet_accept_connection+0x1b4: clr %g2.
- -----------/
在加载以下报文的有符字节时会出现整数溢出:
/-----------
inet_accept_connection+0x184: ldsb [%g3], %g4
g4 = 0xffffff80
- -----------/
然后将溢出g4的值移到l3用作计数器:
/-----------
inet_accept_connection+0x1b8: ld [%fp - 0x88], %g2
inet_accept_connection+0x1bc: ld [%fp - 0x90], %g4
inet_accept_connection+0x1c0: ldsb [%g2], %g3 *
inet_accept_connection+0x1c4: stb %g3, [%g4] **
inet_accept_connection+0x1c8: ld [%fp - 0xa0], %l1
inet_accept_connection+0x1cc: ld [%fp - 0x88], %o4
inet_accept_connection+0x1d0: sub %l1, 1, %l2
inet_accept_connection+0x1d4: st %l2, [%fp - 0xa0]
inet_accept_connection+0x1d8: add %o4, 1, %o5
inet_accept_connection+0x1dc: st %o5, [%fp - 0x88]
inet_accept_connection+0x1e0: ld [%fp - 0xa0], %l3
inet_accept_connection+0x1e4: cmp %l3, 0 ***
inet_accept_connection+0x1e8: ld [%fp - 0x90], %o7
inet_accept_connection+0x1ec: add %o7, 1, %l0
inet_accept_connection+0x1f0: st %l0, [%fp - 0x90]
inet_accept_connection+0x1f4: bne,a -0x38
<inet_accept_connection+0x1bc>
* g3指向报文字节
** 将报文字节拷贝到g4所指向的栈地址
*** 循环直至l3 = 0
- -----------/
对于Windows版本,以下位置出现整数溢出:
/-----------
0040F605 0FBE11 MOVSX EDX,BYTE PTR DS:[ECX]
- -----------/
这里将报文数据拷贝到栈:
/-----------
0040F62C 880A MOV BYTE PTR DS:[EDX],CL
- -----------/
在栈中源字符串指针后跟随0x40字节大小缓冲区:
/-----------
00ECF6CC 0000000
00ECF6D0 00000000
00ECF6D4 00000000
00ECF6D8 00000000
00ECF6DC 00000000
00ECF6E0 00000000
00ECF6E4 00000000
00ECF6E8 00000000
00ECF6EC 00000000
00ECF6F0 00000000
00ECF6F4 00000000
00ECF6F8 00000000
00ECF6FC 00000000
00ECF700 00000000
00ECF704 00000000
00ECF708 00000000
00ECF70C 00A9636D *
* 源字符串指针
- -----------/
如果在循环写入源指针时设置到受控数据的指针,就可以通过写入SEH完全控制程序流。
<*来源:Core Security Technologies
链接:http://marc.info/?l=bugtraq&m=121132164713358&w=2
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
建议:
厂商补丁:
Borland
-------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.borland.com/
浏览次数:2369
严重程度:0(网友投票)
绿盟科技给您安全的保障
