windowsNT有关打印机spooler服务漏洞发布时间:1999-11-08 更新时间:1999-11-08 严重程度:高 威胁程度:本地管理员权限 错误类型:输入验证错误 利用方式:服务器模式 受影响系统 WinNT详细描述 NT Spooler服务(Spoolss.exe),用于各种打印活动,包含了几个有关数据 缓冲溢出的安全漏洞,这些漏洞存在于当某些人传递数据给 各种spooler服务API时,spoolss.exe 不检查进来数据与接受缓 冲区的大小。想下面所述的API漏洞只能被本地利用,但一些缓冲 溢出也能被远程利用。 测试代码 请注意正在谈论的API只能以POWER USER的身份来执行,所以 如果下面的代码也必须以POWER USER 身份来执行: ----spoolss.c---- #include #include int main() { char bigbuffer[3000]; int i; strcpy(bigbuffer,"\\\\"); for(i=0;i<2000;i++) strcat(bigbuffer,"A"); AddPrintProcessor(NULL,NULL,bigbuffer,bigbuffer); return(0); } ----spoolss.c---- 在此程序中,缓冲溢出出现在AddPrintProcessor的API 中,当"bigbuffer"传递给 spooler service时,它试图在缓冲区中填入2000个"A"而不能处理此数据长度 出现了缓冲溢出,并且你会注意到缓冲溢出出现在 EIP00410041位置中,这是因为 已经把字节变为宽字节(UNICODE)格式。 下面是一个允许任何本地用户装载他们自己的 DLL并通过spooler service 系统级的访问使任何本地用户获得对本地机器全部的控制的程序。 此漏洞出现在AddPrintProvidor()的API中,微软提供了一份详细的有关 为什么漏洞存在及其他的信息的建议。 解决方案 下载补丁: Windows NT 4.0 Workstation, Windows NT 4.0 Server and Windows NT 4.0 Server, Enterprise Edition: - X86: http://download.microsoft.com/download/winntsrv40 /Patch/Spooler-fix/NT4/EN-US/Q243649.exe - Alpha: http://download.microsoft.com/download/winntsrv40 /Patch/Spooler-fix/ALPHA/EN-US/Q243649.exe 相关信息 |