漏洞信息详情
Microsoft Windows异步过程调用本地权限提升漏洞
- CNNVD编号:CNNVD-200512-225
- 危害等级: 中危
- CVE编号: CVE-2005-2827
- 漏洞类型: 设计错误
- 发布时间: 2005-12-13
- 威胁类型: 本地
- 更新时间: 2007-04-10
- 厂 商: microsoft
- 漏洞来源: Derek Soeder dsoe...
漏洞简介
Microsoft Windows是美国微软(Microsoft)公司发布的一系列操作系统。
Microsoft Windows处理异步过程调用(APC)队列列表的方式存在漏洞,本地攻击者可以利用此漏洞提供任意函数指针,劫持执行流,最终完全控制系统。线程在退出的时候,PspExitThread会从ETHREAD.ApcState.ApcListHead[0]和ApcListHead[1]分离线程的APC队列,这样每个队列都会是一个循环的、双向链接的列表,其第一个和最后一个节点不指回到表头(LIST_ENTRY结构)。但是,由于没有修改表头的指针,因此其目的可能仅仅是允许PspExitThread中的APC释放循环,以便无需回到表头并错误的尝试释放ETHREAD结构中内存便可走过每个列表并释放其节点。攻击者可以利用这一过程释放数据,最终导致ExFreePoolWithTag操作用户内存。
外部进程所排列的APC会计算该进程的pool限额,因此包含有APC结构pool块的限额块会引用队列进程。如果正在退出线程的列表中包含有当前终止外部进程所排列的APC,且该APC节点代表进程的Process对象的最后引用,则释放该节点会导致在ExFreePoolWithTag中破坏Process对象,所造成的后果包括执行PspProcessDelete。这会使用KeStackAttachProcess切换到结束进程的地址空间,调用PspExitProcess。然后使用KeUnstackDetachProcess反转切换。
\"attach\"和\"detach\"函数都调用KiMoveApcState,其目的是临时分离其APC的线程,这样就不会分发到非预期的地址空间中,然后在线程的原始地址空间恢复后重新链接APC列表。在附加过程中,复制了ETHREAD.ApcState结构,并调整了列表的第一个和最后一个节点的指针以便引用拷贝。在分离的时候,尽管假设第一个和最后一个节点的指针仍是断开的(因为APC释放循环仍在进行),但调整了这些节点指针以重新将列表链接到原始的ETHREAD.ApcState。最终结果是释放循环仍会继续,尝试释放部分ETHREAD结构。由于所访问的ETHREAD部分中包含有可预测的且大部分为清零的值,因此最终会导致对攻击者提供指针的kernel操作。
以下过程说明了函数调用顺序和漏洞产生过程中所涉及到的参数:
. PspExitThread
. . KeFlushQueueApc
. . (detaches APC queues from ETHREAD.ApcState.ApcListHead)
. . (APC free loop CMS.zone.ci/e/tags/htag.php?tag=begin target=_blank class=infotextkey>begins)
. . ExFreePool(1st_APC -- queued by exited_process)
. . . ExFreePoolWithTag(1st_APC)
. . . . ObfDereferenceObject(exited_process)
. . . . . ObpRemoveObjectRoutine
. . . . . . PspProcessDelete
. . . . . . . KeStackAttachProcess(exited_process)
. . . . . . . . KiAttachProcess
. . . . . . . . . KiMoveApcState(ETHREAD.ApcState --> duplicate)
. . . . . . . . . KiSwapProcess
. . . . . . . PspExitProcess(0)
. . . . . . . KeUnstackDetachProcess
. . . . . . . . KiMoveApcState(duplicate --> ETHREAD.ApcState)
. . . . . . . . KiSwapProcess
. . ExFreePool(2nd_APC)
. . ExFreePool(ETHREAD + 30h)
. . (APC free loop ends)
漏洞公告
目前厂商已经发布了升级补丁以修复此安全问题,补丁获取链接:
http://www.microsoft.com/technet/security/bulletin/ms05-055.mspx
http://www.microsoft.com/downloads/details.aspx?FamilyId=3832FF23-6B04-4CA2-80B9-D344B4CC98EA
参考网址
来源: BID
名称: 15826
链接:http://www.securityfocus.com/bid/15826
来源: MS
名称: MS05-055
链接:http://www.microsoft.com/technet/security/bulletin/ms05-055.mspx
来源: VUPEN
名称: ADV-2005-2868
链接:http://www.frsirt.com/english/advisories/2005/2868
来源: SECUNIA
名称: 15821
链接:http://secunia.com/advisories/15821
来源: XF
名称: win-apc-gain-privileges(23447)
链接:http://xforce.iss.net/xforce/xfdb/23447
来源: MISC
链接:http://www130.nortelnetworks.com/cgi-bin/eserv/cs/main.jsp?cscat=BLTNDETAIL&DocumentOID=375420
来源: BUGTRAQ
名称: 20051213 [EEYEB-20050523] Windows Kernel APC Data-Free Local Privilege Escalation Vulnerability
链接:http://www.securityfocus.com/archive/1/archive/1/419377/100/0/threaded
来源: OSVDB
名称: 18823
链接:http://www.osvdb.org/18823
来源: VUPEN
名称: ADV-2005-2909
链接:http://www.frsirt.com/english/advisories/2005/2909
来源: EEYE
名称: EEYEB-20051213
链接:http://www.eeye.com/HTML/research/advisories/AD20051213.HTML
来源: support.avaya.com
链接:http://support.avaya.com/elmodocs2/security/ASA-2005-234.pdf
来源: SECTRACK
名称: 1015347
链接:http://securitytracker.com/id?1015347
来源: SECUNIA
名称: 18311
链接:http://secunia.com/advisories/18311
来源: SECUNIA
名称: 18064
链接:http://secunia.com/advisories/18064
来源: SREASON
名称: 252
链接:http://securityreason.com/securityalert/252
来源:US Government Resource
名称: oval:org.mitre.oval:def:1583
链接:http://oval.mitre.org/repository/data/getDef?id=oval:org.mitre.oval:def:1583
受影响实体
- Microsoft Windows_nt:4.0
- Microsoft Windows_2000:Sp4:Server
- Microsoft Windows_2000:Sp4:Professional
- Microsoft Windows_2000:Sp4:Datacenter_server
- Microsoft Windows_2000:Sp4:Advanced_server
补丁
- Microsoft Windows异步过程调用本地权限提升漏洞的修复措施
评论