Читаем Защита от хакеров корпоративных сетей полностью

Рассмотренный ниже пример программы использования ошибки форматирующей строки основан на подобной ошибке. Наиболее общей причиной возникновения уязвимости форматирующей строки в системе Unix является использование функции syslog. Функция syslog служит программным интерфейсом для демона системного журнала. (Демон – скрытая от пользователя служебная программа, вызываемая при выполнении какой-либо функции.) Программист использует функцию syslog для записи сообщений об ошибке в файлы системного журнала с указанием их приоритетов. Параметрами функции syslog, кроме первого, может быть как единственная строка символов, так и форматирующая строка с произвольным числом спецификаций преобразования и соответствующие им параметры. Первым параметром функции является приоритет сообщения. Многие программисты при использовании функции syslog забывают или не знают о том, что в форматирующую строку не должны помещаться входные данные программы. Большинство уязвимостей связано с кодированием подобно следующему фрагменту кода

error warn(errmsg);

Если в строке errmsg содержатся входные данные программы, например имя пользователя, неудачно попытавшегося войти в систему, то они могут быть использованы для типичной атаки с использованием ошибок форматирующей строки.

Как устранить уязвимость форматирующей строки?

Источником большинства уязвимостей в системе безопасности программного обеспечения является небезопасное программирование. Поэтому наилучшим способом избавления от ошибок форматирующей строки является их предотвращение на этапе создания программы. Для этого необходимо, чтобы программисты были осведомлены о серьезности подобных ошибок и о возможности их использования для атаки. К сожалению, непохоже, что в ближайшее время произойдет всеобщее осознание проблем безопасности.

Для администраторов и пользователей программного обеспечения наилучшей линией является поддержание разумного уровня безопасности своих систем. Для достижения этого должны быть удалены все ненужные и запрещенные программы, а все лишние сервисы должны быть выключены или заблокированы.

Майк Франтцен (Mike Frantzen) опубликовал методику вылизывания программ с целью максимального устранения недоделок, которая позволяет администраторам и программистам предотвращать любые атаки с использованием ошибок форматирующей строки. Его методика основана на сравнении числа параметров, передаваемых функции printf, с числом спецификаций формата в форматирующей строке. Эта методика под названием Format Guard реализована в Immunix, одном из безопасных дистрибутивов ОС Linux.

Заархивированную методику Майка Франтцена в списке рассылки Bugtraq можно найти по адресу www.securityfocus.com/archive/1/72118. Format Guard находится по адресу www.immunix.org/formatguard.html.

Способы использования ошибок форматирующей строки для атаки

Используя для атаки уязвимость форматирующей строки, злоумышленник может достичь трех основных целей. Во-первых, аварийное завершение атакованного процесса вследствие недействительного доступа к памяти. В результате может произойти отказ в обслуживании. Во-вторых, при выводе отформатированной строки злоумышленник может прочитать память атакованного процесса. И наконец, в-третьих, злоумышленник может перезаписать область памяти, что, возможно, приведет к выполнению подготовленных им команд.

...

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже