systemd-journald exploit & root access
Des chercheurs de Qualys ont découvert 3 failles de sécurité dans journald qui permet une escalade de privilège. Des PoC ont été fait et cela prend 10minutes sur i386 et 70minutes sur amd64. Attention donc, car tous les patchs ne sont pas encore dispo.
Ci dessous le résumé provenant de chez qualys:
========= Summary =========
We discovered three vulnerabilities in systemd-journald (https://en.wikipedia.org/wiki/Systemd):
– CVE-2018-16864 and CVE-2018-16865, two memory corruptions (attacker-controlled alloca()s);
– CVE-2018-16866, an information leak (an out-of-bounds read).
CVE-2018-16864 was introduced in April 2013 (systemd v203) and became exploitable in February 2016 (systemd v230). We developed a proof of concept for CVE-2018-16864 that gains eip control on i386.
CVE-2018-16865 was introduced in December 2011 (systemd v38) and became exploitable in April 2013 (systemd v201).
CVE-2018-16866 was introduced in June 2015 (systemd v221) and was inadvertently fixed in August 2018.
We developed an exploit for CVE-2018-16865 and CVE-2018-16866 that obtains a local root shell in 10 minutes on i386 and 70 minutes on amd64, on average. We will publish our exploit in the near future.
To the best of our knowledge, all systemd-based Linux distributions are vulnerable, but SUSE Linux Enterprise 15, openSUSE Leap 15.0, and Fedora 28 and 29 are not exploitable because their user space is compiled with GCC’s -fstack-clash-protection.
This confirms https://grsecurity.net/an_ancient_kernel_hole_is_not_closed.php: « It should be clear that kernel-only attempts to solve [the Stack Clash] will necessarily always be incomplete, as the real issue lies in the lack of stack probing. »
L’intégration de systemd dans les distributions linux il y a plusieurs années avait fait pas mal débat.
Le fait qu’il soit en rupture avec le principe initial d’unix sur le découpages des tâches avait provoqué pas mal d’émotions.
Je ne parle pas du fait qu’on est passé d’un system d’init avec des scripts shell à des fichiers ini, des logs binaires et pas mal d’intégration de fonctions qui dépassent l’init comme : les logs system, les cgroup, Resource accounting User session management, mise en veille, synchro du temps, résolution DNS, la découverte des disques etc.
L’effet de bord et qu’udev a du évoluer et systemd en est devenu un prérequis… la boucle était bouclée.
Poussé par RedHat, systemd a été intégré dans la majeure partie des distrbution. Gentoo et slackware font partie des rares courageuses exeptions et ne sont donc pas concernées par ces bugs 😉