
Эксплойт proof-of-concept для CVE-2019-17041, переполнение буфера в парсере rsyslog, демонстрирующий удалённое выполнение кода.
Rsyslog — это rакетно-быстрая sysтема для logобработки.
Он предлагает высокую производительность, отличные функции безопасности и модульный дизайн. Несмотря на то, что он начинался как обычный syslogd, rsyslog превратился в своего рода швейцарский нож для ведения логов, способный принимать данные из множества источников, преобразовывать их и выводить результаты в различные места.
Rsyslog может доставлять более миллиона сообщений в секунду на локальные места назначения при ограниченной обработке (на основе v7, декабрь 2013). Даже с удалёнными местами назначения и более сложной обработкой производительность обычно считается "потрясающей".
http://lists.adiscon.net/mailman/listinfo/rsyslog
Большинство дистрибутивов содержат rsyslog в своём репозитории. Поэтому обычно достаточно использовать пакетный менеджер для его установки. Обратите внимание, что на системах без systemd (особенно Ubuntu) rsyslog обычно уже установлен.
К сожалению, дистрибутивы часто не успевают за темпом разработки rsyslog и поэтому предлагают только старые версии. Чтобы решить эту проблему, мы сами создали пакеты для текущих версий.
Они доступны для:
Следуйте инструкциям на: https://www.rsyslog.com/doc/v8-stable/installation/build_from_repo.html
В общем случае вам понадобятся
Лучше всего собрать их из исходного кода.
Для json-c нам нужно:
export PKG_CONFIG_PATH=/lib64/pkgconfig/
sudo yum install git valgrind autoconf automake flex bison python-docutils python-sphinx json-c-devel libuuid-devel libgcrypt-devel zlib-devel openssl-devel libcurl-devel gnutls-devel mysql-devel postgresql-devel libdbi-dbd-mysql libdbi-devel net-snmp-devel
Добавьте репозиторий Adiscon:
apt-get update && apt-get install -y software-properties-common
add-apt-repository -y ppa:adiscon/v8-stable
Примечание: если вы разработчик, желающий работать с веткой git master, добавление репозитория Adiscon, вероятно, не лучшая идея. В этом случае лучше также скомпилировать поддерживающие библиотеки из исходного кода, потому что новые версии rsyslog могут требовать более новые версии библиотек, чем те, что есть в репозиториях. Речь идёт как минимум о библиотеках: libestr, liblognorm, libfastjson.
Необходимые пакеты для сборки с поддержкой omhiredis:
apt-get update && apt-get install -y build-essential pkg-config libestr-dev libfastjson-dev zlib1g-dev uuid-dev libgcrypt20-dev liblogging-stdlog-dev libhiredis-dev uuid-dev libgcrypt11-dev liblogging-stdlog-dev flex bison
Дополнительные пакеты для других модулей:
libdbi-dev libmysqlclient-dev postgresql-client libpq-dev libnet-dev librdkafka-dev libgrok-dev libgrok1 libgrok-dev libpcre3-dev libtokyocabinet-dev libglib2.0-dev libmongo-client-dev
Для KSI из PPA Adiscon:
sudo apt-get install libksi0 libksi-devel
sudo apt install build-essential pkg-config libestr-dev libfastjson-dev zlib1g-dev uuid-dev libgcrypt20-dev libcurl4-gnutls-dev zlib1g-dev liblogging-stdlog-dev liblogging-stdlog-dev flex bison
Примечание: Для некоторых библиотек требования к версии могут быть выше, в этом случае может помочь добавление репозиториев backports Debian. Например, установка с помощью apt libfastjson-dev -t stretch-backports.
Дополнительные пакеты для других модулей:
libdbi-dev libmysqlclient-dev postgresql-client libpq-dev libnet-dev librdkafka-dev libgrok-dev libgrok1 libgrok-dev libpcre3-dev libtokyocabinet-dev libglib2.0-dev libmongo-client-dev
sudo zypper install gcc make autoconf automake libtool libcurl-devel flex bison valgrind python-docutils libjson-devel uuid-devel libgcrypt-devel libgnutls-devel libmysqlclient-devel libdbi-devel libnet-devel postgresql-devel net-snmp-devellibuuid-devel libdbi-drivers-dbd-mysql
Для тестовых ВМ:
sudo zypper install gvim mutt
Доступные пакеты:
zypper install gcc make autoconf libtool flex bison
Отсутствующие пакеты:
libcurl-devel valgrind python-docutils uuid-devel libgcrypt-devel libgnutls-devel libmysqlclient-devel libdbi-devel postgresql-devel net-snmp-devel libdbi-drivers-dbd-mysql json-c zlib-dev libdbi
Обратитесь в почтовую рассылку, если считаете, что что-то является ошибкой. Часто это просто вопрос настройки конфигурации.
Сообщайте об ошибках по адресу: https://github.com/rsyslog/rsyslog/issues
Вклад в rsyslog приветствуется. Сделайте форк и отправляйте нам запросы на слияние.
Для получения дополнительной информации о внесении вклада см. файл CONTRIBUTING.
Обратите внимание, что легко добавлять выходные плагины с использованием языков, таких как Python или Perl. Поэтому, если вам нужно подключиться к системе, которая ещё не поддерживается, вы можете легко сделать это через внешний плагин. Для получения дополнительной информации см. файл README в каталоге внешних плагинов.
Основная документация rsyslog доступна в формате HTML. Чтобы прочитать её, откройте в веб-браузере ./doc/manual.html. Альтернативно, вы можете просмотреть документацию для самой последней версии rsyslog онлайн по адресу: https://www.rsyslog.com/doc/
Мы являемся проектом с открытым исходным кодом во всех аспектах и очень открыты для внешних отзывов и вклада. Мы основываем свою работу на стандартах и стараемся решать все реальные потребности (конечно, иногда нам не удаётся охватить все потребности ;)). Хотя проект в основном спонсируется Adiscon, техническое развитие независимо от целей компании, и большинство решений принимаются исключительно на основе результатов обсуждения в почтовой рассылке. Вокруг rsyslog существует активное сообщество.
Не существует такого понятия, как официальный член команды rsyslog. Ближайшим к этому является подписка на почтовую рассылку: http://lists.adiscon.net/mailman/listinfo/rsyslog
Этот метод открытых обсуждений смоделирован по образцу процесса IETF, который, вероятно, является самым известным и наиболее успешным совместным органом по стандартам.
Основной спонсор rsyslog, Adiscon, пытается финансировать rsyslog, продавая контракты на индивидуальную разработку и поддержку. Adiscon НЕ лицензирует rsyslog по коммерческой лицензии (это просто невозможно для кого-либо из-за структуры лицензии rsyslog).
Любая третья сторона, очевидно, также может предлагать индивидуальную разработку, поддержку и консультации по rsyslog. Мы с радостью принимаем результаты такой сторонней работы в основной репозиторий (при условии, что она соответствует нескольким основным вещам, описанным в нашей политике внесения вклада).