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

Этот патч представлен в унифицированном формате различий. Хотя предоставленная службой компьютерной безопасности 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 для сравнения директорий.

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

Например, возможность рекурсивного сравнения отсутствует в команде diff операционной системы Solaris 8 и более ранних. Хотя, используя некоторые изощренные приемы работы с командной строкой, это можно выполнить. В соответствии с IAOQ (IAOQ – Ryan Tennant\'s (Argoth) Solaris Infrequently Asked Obscure Questions – список наиболее часто задаваемых вопросов повышенной сложности по системе Solaris Райана Теннанта (Argoth)) рекурсивный просмотр директорий может быть выполнен при помощи следующей команды:

/usr/bin/find. | /usr/bin/xargs /usr/bin/grep PATTERN

Список IAOQ находится по адресу http://shells.devunix.org/~argoth/iaoq.

В поисках золота. Игровой пример

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