Защита от хакеров корпоративных сетей. Коллектив авторов. Читать онлайн. Newlib. NEWLIB.NET

Автор: Коллектив авторов
Издательство:
Серия:
Жанр произведения: Компьютеры: прочее
Год издания: 2005
isbn: 5-98453-015-5
Скачать книгу
различий в исходных текстах программ. На рисунках 5.1 и 5.2 приведен исходный текст двух версий одной и той же программы. В первой версии программы выполнение функции strcpy могло привести к переполнению буфера, поэтому во второй версии ошибка была исправлена заменой функции strcpy на strncpy.

      Благодаря отчету команды diff, приведенному на рис. 5.3, можно найти два исправления в исходном тексте программы. Первое состоит в добавлении переменной size_t в программу sncpyfix.c. Второе – в замене функции strcpy в программе scpybufo.c на функцию strncpy в программе sncpyfix.c.

      Найти ошибки в открытых программных средствах относительно легко. (open source software – открытые программные средства – лицензионные программы вместе с их исходными текстами, не связанные ограничениями на дальнейшую модификацию и распространение с сохранением информации о первичном авторстве и внесенных изменениях). Зачастую это объясняется возможностью инсталляции файлов, устраняющих ошибки. Это можно наблюдать на примере патчей (заплаток), выпущенных производителями операционных систем семейства UNIX, например Linux и BSD. Проанализируйте патч на рис. 5.4 выявленной уязвимости FreeBSD-SA-02:02 (FreeBSD Security Advisory FreeBSD-SA-02:02).

      Рис. 5.4. Исходный текст патча pw.patch FreeBSD

      Этот патч представлен в унифицированном формате различий. Хотя предоставленная службой компьютерной безопасности FreeBSD информация о патче содержит все необходимые сведения, включая детальное описание уязвимости, анализ отчета результата сравнения двух файлов позволяет понять ее суть. Из первой строки протокола патча ясно, что он применяется к программе pwupd.c из директории usr.sbin/pw/.

      Утилита pw операционной системы FreeBSD предназначена для добавления, удаления или модификации пользователей системы либо их групп. Выявленная уязвимость состояла в том, что при работе утилиты pw создавался временный файл с разрешениями, которые позволяли всем пользователям читать его. Разрешения временного файла в отчете выделены знаком минус (-). В результате пользователь мог получить доступ к зашифрованным паролям системы.

      Автор самостоятельно проанализировал исходный текст утилиты pw. После получения двух версий исходных текстов (файл pwupd.c) утилиты (до и после внесения изменений) и их сравнения при помощи команды diff можно найти различия в исходных текстах данной программы, как это показано на рис. 5.5.

      Рис. 5.5. Протокол различий программы pwupd.c версий 1.12.2.3.2.1 и 1.17

      Из сравнения двух версий программы видны различия, аналогичные изменениям, показанным на рис. 5.4.

Приоткрывая завесу

      Рекурсивный просмотр директорий

      Что делать, если неизвестен файл, в который были внесены изменения? Что делать, если вместо подробной информации об уязвимости доступна только новая версия программы, содержащая многочисленные директории исходных текстов программ? Это именно тот случай, когда наиболее удобно воспользоваться командой diff для сравнения директорий.

      Используя флаг рекурсии – г, содержимое директории может быть исследовано