
Exploit de preuve de concept pour CVE-2019-17041, un dépassement de tampon dans l'analyseur de rsyslog, démontrant l'exécution de code à distance.
Rsyslog est un rapide système pour le traitement de log.
Il offre des performances élevées, d'excellentes fonctionnalités de sécurité et une conception modulaire. Alors qu'il a commencé comme un simple syslogd, rsyslog a évolué pour devenir une sorte de couteau suisse de la journalisation, capable d'accepter des entrées provenant d'une grande variété de sources, de les transformer et de produire les résultats vers diverses destinations.
Rsyslog peut délivrer plus d'un million de messages par seconde vers des destinations locales lorsqu'un traitement limité est appliqué (basé sur v7, décembre 2013). Même avec des destinations distantes et un traitement plus élaboré, les performances sont généralement considérées comme « époustouflantes ».
http://lists.adiscon.net/mailman/listinfo/rsyslog
La plupart des distributions proposent rsyslog dans leur dépôt. Il suffit donc généralement d'utiliser le gestionnaire de paquets pour l'installer. Notez que sur les systèmes non-systemd (notamment Ubuntu), rsyslog est généralement déjà installé.
Malheureusement, les distributions ne suivent souvent pas le rythme de développement de rsyslog et ne proposent donc que des versions anciennes. Pour résoudre ce problème, nous avons créé nous-mêmes des paquets pour les versions actuelles.
Ils sont disponibles pour :
Suivez les instructions sur : https://www.rsyslog.com/doc/v8-stable/installation/build_from_repo.html
En général, vous avez besoin de
Il est préférable de compiler ceux-ci à partir des sources.
Pour json-c, nous avons besoin de :
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
Ajoutez le dépôt Adiscon :
apt-get update && apt-get install -y software-properties-common
add-apt-repository -y ppa:adiscon/v8-stable
Remarque : si vous êtes un développeur qui souhaite travailler avec la branche master de git, il n'est probablement pas judicieux d'ajouter le dépôt Adiscon. Il est alors préférable de compiler également les bibliothèques de support à partir des sources, car les versions plus récentes de rsyslog peuvent nécessiter des versions plus récentes des bibliothèques que celles présentes dans les dépôts. Les bibliothèques concernées sont au moins : libestr, liblognorm, libfastjson.
Paquets nécessaires pour compiler avec le support 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
Paquets supplémentaires pour d'autres modules :
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
Pour KSI, depuis le 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
Remarque : Pour certaines bibliothèques, les exigences de version peuvent être plus élevées, dans ce cas, l'ajout des dépôts backports de Debian peut aider. Par exemple installer avec apt libfastjson-dev -t stretch-backports.
Paquets supplémentaires pour d'autres modules :
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-devel libuuid-devel libdbi-drivers-dbd-mysql
Pour les machines virtuelles du banc de test :
sudo zypper install gvim mutt
Paquets disponibles :
zypper install gcc make autoconf libtool flex bison
Paquets manquants :
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
Contactez la liste de diffusion si vous pensez qu'il s'agit d'un bogue. Souvent, il ne s'agit que d'un problème de configuration.
Signalez les bogues sur : https://github.com/rsyslog/rsyslog/issues
Les contributions à rsyslog sont les bienvenues. Forkez et envoyez-nous vos Pull Requests.
Pour plus d'informations sur la contribution, consultez le fichier CONTRIBUTING.
Notez qu'il est facile d'ajouter des plugins de sortie en utilisant des langages comme Python ou Perl. Si vous devez vous connecter à un système qui n'est pas encore pris en charge, vous pouvez le faire facilement via un plugin externe. Pour plus d'informations, consultez le fichier README dans le répertoire des plugins externes.
La documentation principale de rsyslog est disponible au format HTML. Pour la lire, pointez votre navigateur web vers ./doc/manual.html. Alternativement, vous pouvez consulter la documentation de la version la plus récente de rsyslog en ligne sur : https://www.rsyslog.com/doc/
Nous sommes un projet open source à tous égards et très ouverts aux commentaires et contributions externes. Nous basons notre travail sur des normes et essayons de répondre à tous les besoins du monde réel (bien sûr, nous échouons parfois à répondre à tous les besoins ;)). Bien que le projet soit principalement parrainé par Adiscon, le développement technique est indépendant des objectifs de l'entreprise et la plupart des décisions sont uniquement basées sur les résultats des discussions sur la liste de diffusion. Il existe une communauté active autour de rsyslog.
Il n'existe pas de notion d'être un membre officiel de l'équipe rsyslog. La chose la plus proche est d'être abonné à la liste de diffusion : http://lists.adiscon.net/mailman/listinfo/rsyslog
Cette méthode de discussions ouvertes est calquée sur le processus de l'IETF, qui est probablement l'organisme de normalisation collaboratif le plus connu et le plus performant.