Уязвимость в chrony
В chrony, реализации протокола NTP, применяемой для синхронизации точного времени в различных дистрибутивах Linux, выявлена уязвимость (CVE-2020-14367), позволяющая перезаписать любой файл в системе, имея доступ к локальному непривилегированному пользователю chrony. Уязвимость может быть эксплуатирована только через пользователя chrony, что снижает её опасность. Тем не менее, проблема компрометирует уровень изоляции в chrony и может использоваться в случае выявления другой уязвимости в коде, выполняемом после сброса привилегий.
Уязвимость вызвана небезопасным созданием pid-файла, который создавался на этапе, когда chrony ещё не сбросил привилегии и выполняется с правами root. При этом каталог /run/chrony, в который записывается pid-файл, создавался с правами 0750 через systemd-tmpfiles или при запуске chronyd в привязке к пользователю и группе "chrony". Таким образом, при наличии доступа к пользователю chrony имеется возможность замены pid-файла /run/chrony/chronyd.pid на символическую ссылку. Символическая ссылка может указывать на любой системный файл, который будет переписан в момент запуска chronyd.
root# systemctl stop chronyd.service
root# sudo -u chrony /bin/bash
chrony$ cd /run/chrony
chrony$ ln -s /etc/shadow chronyd.pid
chrony$ exit
root# /usr/sbin/chronyd -n
^C
# вместо содержимого /etc/shadow будет сохранён идентификатор процесса chronyd
root# cat /etc/shadow
15287
Уязвимость устранена в выпуске chrony 3.5.1. Обновления пакетов с устранением уязвимости доступны для Fedora. В процессе подготовки обновления для RHEL, Debian и Ubuntu. SUSE и openSUSE проблеме не подвержены, так как символическая ссылка для chrony создаётся непосредственно в каталоге /run, без применения дополнительных подкаталогов.