Мы использовали условие перехвата в Set-UID root утилите. Конечно, очень помогло, что программа подождала 20 секунд, чтобы мы успели тайно от нее изменить файл. В настоящем приложении условие перехвата доступно для использования только на очень короткое время. Как же мы воспользуемся им?
Обычно взломщик полагается на атаку "грубой силой", повторяя попытку сотни, тысячи или десятки тысяч раз, используя скрипты, чтобы автоматизировать процесс. Возможно повысить шансы "падения" в дыру в безопасности при помощи различных ухищирений, направленных на увеличение промежутка времени между двумя операциями, который, как неправильно полагает программа, бесконечно мал. Идея состоит в замедлении процесса, чтобы было проще использовать задержку перед модификацией файла. Есть разные способы это сделать:
Уменьшить приоритет атакуемого процесса насколько это возможно, запуская его с префиксом nice -n 20;
Увеличить загрузку системы, запуская различные процессы, занимающие процессорное время (типа while (1););
Ядро не позволяет отлаживать Set-UID программы, но возможно организовать псевдо-пошаговое выполнение, посылая последовательности сигналов SIGSTOP-SIGCONT, что позволяет временно блокировать процесс (вроде комбинации клавиш Ctrl-Z в оболочке) и затем при надобности возобновить выполнение.
Метод, позволяющий нам воспользоваться дырой в безопасности, основанный на условии перехвата, достаточно скучный и нудный, однако он работает! Попробуем найти наиболее эффективное решение проблемы.