Часто задаваемые вопросы

We use cookies. Read the Privacy and Cookie Policy

Часто задаваемые вопросы

Наиболее часто авторы книги отвечали на приведенные ниже вопросы. Вопросы интересны тем, что они позволяют читателю лучше усвоить изложенный в главе материал и реализовать его на практике в интересах обеспечения безопасности вычислительных систем. Если у читателя возникли вопросы по главе, то зайдите на сайт www.syngress.com/solutions и щелкните мышкой на кнопке «Ask the Author».

Вопрос: Защищают ли от уязвимости форматирующей строки конфигурации стека, запрещающие хранить в памяти выполнимый код, или схемы защиты стека типа StackGuard? Ответ: К сожалению, нет. Уязвимость форматирующей строки позволяет злоумышленнику записать нужные ему данные практически в любую область памяти. StackGuard защищает целостность стекового фрейма, а конфигурация стека, запрещающая хранение в стеке выполнимых команд, не позволяет командам выполниться из стека. Благодаря уязвимости форматирующей строки эти две схемы защиты могут быть преодолены. Для того чтобы обойти защиту StackGuard, злоумышленник может вместо адресов возврата функций подменять ссылки на выполняемые команды, а злонамеренный управляющий программный код записать вне стека, например в динамически распределяемую область памяти. Хотя средства защиты стека, такие как StackGuard и выбор конфигурации стека, запрещающей хранение в стеке выполнимых команд, могут отразить некоторые известные атаки, тем не менее для квалифицированного злоумышленника эти средства защиты не преграда.

Вопрос: Специфичны ли уязвимости форматирующей строки в системе UNIX? Ответ: Нет. Благодаря частому использованию функции printf() уязвимости форматирующей строки в системе UNIX аналогичны уязвимостям форматирующей строки в других операционных системах. Большой вклад в специфику уязвимостей форматирующей строки системы UNIX вносит неверное использование функции syslog(). Возможность использования злоумышленником этих ошибок, включая запись в память, зависит от того, поддерживает ли реализация функции printf() спецификацию преобразования %n. Если поддерживает, то теоретически любая программа, в которой есть ошибки форматирующей строки и которая отредактирована с этой библиотекой, может быть использована для выполнения произвольного программного кода.

Вопрос: Как можно обнаружить уязвимость форматирующей строки? Ответ: Большое количество уязвимостей форматирующей строки может быть обнаружено при анализе исходных текстов программ. Кроме того, их можно обнаружить, анализируя параметры функции printf(). Вызов любой функции из семейства функций printf() с единственным параметром, сформированным из входных данных программы, ясно свидетельствует об уязвимости форматирующей строки.

Вопрос: Как избежать или минимизировать риск от неизвестной уязвимости форматирующей строки в своей программе у себя на системе? Ответ: Для начала надо выработать политику безопасности. Положитесь на модель минимальных привилегий (least-privileges model). Гарантируйте, что будут инсталлированы действительно нужные утилиты, которые могут быть запущены членами доверенной группы. Отключите или заблокируйте доступ ко всем сервисам, которые не являются действительно необходимыми.

Вопрос: Что может служить признаками попыток использования уязвимостей форматирующей строки? Ответ: Этот вопрос уместен, потому что много уязвимостей форматирующей строки обязаны своим происхождением неверному использованию функции syslog(). Когда злоумышленник использует уязвимость форматирующей строки, возникшую в результате неверного использования функции syslog(), отформатированная строка выводится в поток журнала. Администратор, просматривая системный журнал, может выявить попытку воспользоваться уязвимостью форматирующей строки по необычной строке системного журнала. Другими общими признаками использования уязвимости форматирующей строки является пропадание программ демонов или регулярное их аварийное завершение из-за ошибок нарушения доступа.

Вопрос: Где можно найти дополнительные материалы о поиске и использовании уязвимости форматирующей строки? Ответ: По этой теме известно много материалов. Официальный документ, подготовленный Тимом Невшамом (Tim Newsham) и изданный Gaurdent, можно найти на сайте www.guardent.com. Также рекомендуется просмотреть материалы TESO (www.team-teso.net/articles/formatstring) и HERT (www.hert.org/papers/format.html).

Данный текст является ознакомительным фрагментом.