以下是小编整理的Microsoft Windows图形设备接口库拒绝服务漏洞(共含5篇),欢迎阅读与收藏。同时,但愿您也能像本文投稿人“鱼蛋”一样,积极向本站投稿分享好文章。
来源:绿盟科技
受影响系统:
Microsoft Windows Server SP4
Microsoft Windows 2000 Server SP3
Microsoft Windows 2000 Server SP2
Microsoft Windows 2000 Server SP1
Microsoft Windows 2000 Server
Microsoft Windows 2000 Professional SP4
Microsoft Windows 2000 Professional SP3
Microsoft Windows 2000 Professional SP2
Microsoft Windows 2000 Professional SP1
Microsoft Windows 2000 Professional
Microsoft Windows 2000 Datacenter Server SP4
Microsoft Windows 2000 Datacenter Server SP3
Microsoft Windows 2000 Datacenter Server SP2
Microsoft Windows 2000 Datacenter Server SP1
Microsoft Windows 2000 Datacenter Server
Microsoft Windows 2000 Advanced Server SP4
Microsoft Windows 2000 Advanced Server SP3
Microsoft Windows 2000 Advanced Server SP2
Microsoft Windows 2000 Advanced Server SP1
Microsoft Windows 2000 Advanced Server
描述:
--------------------------------------------------------------------------------
BUGTRAQ ID: 12834
Windows 2000是微软推出的用途非常广泛的操作系统,
Windows 2000的GDI32.DLL GetEnhMetaFilePaletteEntries API不能正确的处理EMF文件,导致调用API的应用程序在读取某些特制的EMF文件时可能崩溃。
有漏洞的代码如下:
----------------------------------------------------------
反编译的GDI32.GetEnhMetaFilePaletteEntries()
----------------------------------------------------------
77F68CC7 PUSH ESI
77F68CC8 PUSH EDI
77F68CC9 PUSH 460000
77F68CCE PUSH DWORD PTR SS:[ESP+10]
77F68CD2 CALL GDI32.77F48A89
77F68CD7 TEST EAX,EAX
77F68CD9 JNZ SHORT GDI32.77F68CE0
77F68CDB OR EAX,FFFFFFFF
77F68CDE JMP SHORT GDI32.77F68D11
77F68CE0 MOV EDI,DWORD PTR SS:[ESP+14]
77F68CE4 TEST EDI,EDI
77F68CE6 JNZ SHORT GDI32.77F68CF0
77F68CE8 MOV EAX,DWORD PTR DS:[EAX+C]
77F68CEB MOV EAX,DWORD PTR DS:[EAX+44]
77F68CEE JMP SHORT GDI32.77F68D11
77F68CF0 MOV ECX,DWORD PTR DS:[EAX+C]
77F68CF3 MOV EAX,DWORD PTR DS:[ECX+44]
77F68CF6 CMP DWORD PTR SS:[ESP+10],EAX
77F68CFA JNB SHORT GDI32.77F68D00
77F68CFC MOV EAX,DWORD PTR SS:[ESP+10]
77F68D00 MOV EDX,DWORD PTR DS:[ECX+30]
77F68D03 ADD EDX,ECX
77F68D05 MOV ECX,EAX
77F68D07 SUB EDX,DWORD PTR DS:[EDX-4]
77F68D0A MOV ESI,DWORD PTR DS:[EDX+C]
77F68D0D ADD ESI,EDX
77F68D0F REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
77F68D11 POP EDI
77F68D12 POP ESI
77F68D13 RETN 0C
-----------------------------------------------------------
翻译为C代码
-----------------------------------------------------------
UINT GetEnhMetaFilePaletteEntries(
HENHMETAFILE hemf, // handle of enhanced metafile
UINT cEntries, // count of palette entries
LPPALETTEENTRY lppe // address of palette-entry array
)
{
char *begin, *end, *emreof, *palent;
DWORD count, i;
// ......
begin = emf file offset in memory;
// get the count of palette entries from the emf file
count = *((DWORD *)(begin + 0x44));
if (lppe == 0)
return count;
if (size > count)
size = count;
// find the end of the emf file
end = begin + *((DWORD *)(bigin + 0x30));
// find the offset of emreof
emreof = end - *((DWORD *)(end - 0x04));
// find the offset of palentries
palent = emreof + *((DWORD *)(emreof + 0x0c));
// copy the palent from the file to palette-entry array
for (i = 0; i < size; i++)
memcpy(lppe + i, palent + i * 4, 4);
return size;
}
-----------------------------------------------------------
可见没有有效性检查,因此可能在使用从EMF读取的偏移值(end,emreof,palent)时导致访问破坏,
这个漏洞的具体影响取决于使用API的应用程序。一般来讲,如果EMRHEAD->nPalEntries中存在非0的值,应用程序就会调用这个API,并向第二个参数传送EMRHEAD->nPalEntries。如果特制的EMF所访问的地址无效的话,就会导致应用程序崩溃。
<*来源:Hongzhen Zhou (__zhou@hotmail.com“>felix__zhou@hotmail.com)
链接:marc.theaimsgroup.com/?l=bugtraq&m=111108743527497&w=2
*>
测试方法:
--------------------------------------------------------------------------------
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
16进制的临时存贮EMF文件:
-------------------------------------------------------
0000000 01 00 00 00 64 00 00 00 93 00 00 00 02 00 00 00
0000010 83 01 00 00 39 01 00 00 00 00 00 00 00 00 00 00
0000020 d1 08 00 00 be 06 00 00 20 45 4d 46 00 00 01 00
0000030 78 00 00 00 17 00 00 00 03 00 00 00 0f 00 00 00
0000040 64 00 00 00 41 00 00 00 c8 12 00 00 c2 1a 00 00
0000050 cc 00 00 00 22 01 00 00 00 00 00 00 00 00 00 00
0000060 00 00 00 00 0e 00 00 00 14 00 00 00 41 00 00 00
0000070 41 42 43 44 00 00 01 ff
-------------------------------------------------------
如果无法导致explorer.exe崩溃的话,请更改最后8个字节的值,然后重新测试。
建议:
--------------------------------------------------------------------------------
厂商补丁:
Microsoft
---------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
www.microsoft.com/technet/security/
受影响系统:
Yukihiro Matsumoto Ruby <= 1.8.5
不受影响系统:
Yukihiro Matsumoto Ruby 1.8.5-p2
描述:
--------------------------------------------------------------------------------
BUGTRAQ ID: 21441
CVE(CAN) ID: CVE--6303
Ruby是动态、开放源码的编程语言,
Ruby所捆绑的CGI库(cgi.rb)在处理大量畸形请求时存在漏洞,远程攻击者可能利用此漏洞导致服务器失去响应。
如果向任何使用了cgi.rb的WEB应用提交了恶意HTTP请求的话,就会耗尽CPU资源,发送多个请求就可能导致拒绝服务,
<*链接:marc.theaimsgroup.com/?l=bugtraq&m=116544051430175&w=2
www.ruby-lang.org/en/news/2006/12/04/another-dos-vulnerability-in-cgi-library/
*>
建议:
--------------------------------------------------------------------------------
厂商补丁:
Yukihiro Matsumoto
------------------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p2.tar.gz
成功利用这些漏洞会导致拒绝服务攻击,造成高CPU使用率、中断服务或重启服务器,然后可能导致电话无法响应、从CCM注销电话或CCM重启,
详细描述:
Cisco CallManager(CCM)是Cisco IP电话解决方案的基于软件的呼叫处理组件。 P
一些CCM版本没有主动管理TCP连接和Windows消息,导致一些公开的发布端口受拒绝服务攻击影响:
1 CCM没有足够主动的超时到端口的TCP连接,导致足够多的开放连接会耗尽内存和CPU资源。在特定的情况下,CCM会无限期的保持TCP连接开放,直到重启CCM服务或重启服务器。
2 多个到、或7727端口的连接会充满Windows消息队列,导致CCM无法处理Windows Service Manager,在30秒超时后重启CCM,
成功利用这些漏洞会导致拒绝服务攻击,造成高CPU使用率、中断服务或重启服务器,然后可能导致电话无法响应、从CCM注销电话或CCM重启。
受影响系统:
Cisco Call Manager = 3.2
Cisco Call Manager 4.1
Cisco Call Manager 4.0
Cisco Call Manager 3.3
补丁下载:
Cisco
-----
Cisco已经为此发布了一个安全公告(cisco-sa-20060118-ccmdos)以及相应补丁:
cisco-sa-20060118-ccmdos:Cisco Call Manager Denial of Service
链接:www.cisco.com/warp/public/707/cisco-sa-20060118-ccmdos.shtml
/* CSS Document */
Firebird是一款提供多个ANSI SQL-92功能的关系型数据库,可运行在Linux、Windows和各种Unix平台下,
在Firebird的src/remote/server.cpp文件中,process_packet2函数负责处理从客户端发送过来的报文。这个函数有一个switch语句考虑协议中所定义的所有可能的opcode。
/-----------
src/remote/server.cpp:
...
3404 P_OP p = receive->p_operation;
3405 switch (op)
3406 {
3407 case op_connect:
...
3426 case op_compile:
...
3430 case op_attach:
...
- -----------/
在op_connect_request报文的情况下,执行流进入switch语句的以下case:
/-----------
src/remote/server.cpp:
...
3584 case op_connect_request:
3585 aux_request(port, &receive->p_req, sendL);
3586 break;
- -----------/
在调用aux_request()函数并执行break语句后,执行流到达:
/-----------
src/remote/server.cpp:
...
3652 if (port && port->port_state == state_broken) {
3653 if (!port->port_parent) {
3654 gds__log(”SERVER/process_packet: broken port, server exiting“);
3655 port->disconnect(sendL, receive);
3656 ThreadData::restoreSpecific();
3657 return false;
3658 }
3659 port->disconnect(sendL, receive);
3660 port = NULL;
3661 }
- -----------/
通过在接收到op_connect_request报文时调试fbserver.exe二进制程序可以看出满足了第一个if语句的条件,但没有满足第二个if的条件,因此执行流到达port->disconnect()调用:
/-----------
005ACE2C |> 837E 0C 03 CMP DWORD PTR DS:[ESI+C],3
;port->port_state == state_broken ?
005ACE30 |. 75 1B JNZ SHORT fbserver.005ACE4D
005ACE32 |. 837E 1C 00 CMP DWORD PTR DS:[ESI+1C],0
;port->port_parent == 0?
005ACE36 |. 75 0A JNZ SHORT fbserver.005ACE42
;this conditional jump is taken
005ACE38 |. 68 D4D65F00 PUSH fbserver.005FD6D4
; ASCII ”SERVER/process_packet: broken port, server exiting"
005ACE3D |.^ E9 44FDFFFF JMP fbserver.005ACB86
005ACE42 |> 53 PUSH EBX
; /Arg2
005ACE43 |. 57 PUSH EDI
; |Arg1
005ACE44 |. 8BCE MOV ECX,ESI
; |
005ACE46 |. E8 65D7FFFF CALL
; /port->disconnect(sendL, receive)
- -----------/
根据src/remote/remote.h中的定义,port的类型为struct rem_port,
这种结构类型在src/remote/server.cpp中实现了disconnect()函数:
/-----------
src/remote/server.cpp:
1464 void rem_port::disconnect(PACKET* sendL, PACKET* receiveL)
- -----------/
在这个函数中执行以下代码以释放发送和接收的报文并关闭相关的套接字:
/-----------
src/remote/server.cpp:
[1] [2] 下一页
AGP(AccelerateGraphicalPort),加速图形接口,随着显示芯片的发展,PCI总线日益无法满足其需求。英特尔于1996年7月正式推出了AGP接口,它是一种显示卡专用的局部总线。严格的说,AGP不能称为总线,它与PCI总线不同,因为它是点对点连接,即连接控制芯片和AGP显示卡,但在习惯上我们依然称其为AGP总线。AGP接口是基于PCI2.1版规范并进行扩充修改而成,工作频率为66MHz。AGP总线直接与主板的北桥芯片相连,且通过该接口让显示芯片与系统主内存直接相连,避免了窄带宽的PCI总线形成的系统瓶颈,增加3D图形数据传输速度,同时在显存不足的情况下还可以调用系统主内存。所以它拥有很高的传输速率,这是PCI等总线无法与其相比拟的,
由于采用了数据读写的流水线操作减少了内存等待时间,数据传输速度有了很大提高;具有133MHz及更高的数据传输频率;地址信号与数据信号分离可提高随机内存访问的速度;采用并行操作允许在CPU访问系统RAM的同时AGP显示卡访问AGP内存;显示带宽也不与其它设备共享,从而进一步提高了系统性能。AGP标准在使用32位总线时,有66MHz和133MHz两种工作频率,最高数据传输率为266Mbps和533Mbps,而PCI总线理论上的最大传输率仅为133Mbps。目前最高规格的AGP8X模式下,数据传输速度达到了2.1GB/s。AGP接口的发展经历了AGP1.0(AGP1X、AGP2X)、AGP2.0(AGPPro、AGP4X)、AGP3.0(AGP8X)等阶段,其传输速度也从最早的AGP1X的266MB/S的带宽发展到了AGP8X的2.1GB/S。
★ FreeBSD I386SetLDT多个本地拒绝服务漏洞
★ 设备库管年终总结
★ Linux Kernel畸形ULE报文处理远程拒绝服务漏洞