Утилита Screen является примером программы, которая может быть атакована таким образом. Эта популярная утилита в системе UNIX позволяет многочисленным процессам использовать один и тот же псевдотерминал. При установленных правах суперпользователя утилита сохраняет права доступа вызвавшего ее пользователя в памяти. При создании окна родительский процесс утилиты Screen понижает права доступа процессов потомков до значения прав, сохраненных в памяти, например до уровня прав оболочки пользовательского интерфейса и т. д.
В версиях утилиты Screen до 3.9.5 включительно содержится уязвимость форматирующей строки, которая проявляется при выводе строки визуализации звукового сигнала (visual bell). Эта строка определяется данными файла конфигурации пользователя с расширением
Благодаря алгоритму работы утилиты Screen злоумышленник может воспользоваться обсуждаемой уязвимостью форматирующей строки при помощи способа однократной записи по спецификации преобразования
Для того чтобы воспользоваться уязвимостью форматирующей строки, злоумышленник должен сделать следующее. Во-первых, присвоить одному из параметров небезопасной функции
На локальной машине злоумышленник, воспользовавшись уязвимостью форматирующей строки в утилите Screen, может повысить свои права доступа до уровня прав суперпользователя. Рассмотренная уязвимость утилиты Screen является хорошим примером использования злоумышленниками ошибок форматирующей строки для тривиального осуществления своих замыслов. Описанный способ применим для большинства известных платформ.
Способ многократной записи.
Этот способ заключается в перезаписи сразу нескольких участков памяти. Он сложнее метода однократной записи, но зато дает лучшие результаты. Используя уязвимость форматирующей строки, злоумышленник часто имеет возможность заменить почти любое значение в памяти на значение, нужное ему. Для понимания способа многократной записи важно знать, как работает спецификация преобразованияКратко еще раз. Спецификация преобразования
Принципы работы программ атаки, использующих ошибки форматирующих строк
Рассмотрим, каким образом уязвимости форматирующей строки могут быть использованы для подмены адресов памяти. Благодаря подмене адресов у злоумышленника появляется возможность вынудить уязвимую программу выполнить управляющий программный код.