Суть поиска различий
Суть поиска различий
Команда diff присутствует во многих современных операционных системах семейства UNIX и им подобных. Впервые она появилась в дистрибутиве UNIX компании AT&T, и в настоящее время эксплуатируются различные ее версии. Слово diff – сокращение от английского слова difference (различие) – означает составление списка различий двух файлов.
Таким образом, слово диффинг может быть определено как применение команды diff (или подобной программы) для сравнения двух файлов. Сравнивая файлы, можно выявить внесенные изменения в новую версию программы по сравнению с предыдущей, определить различия двоичных файлов, претендующих на эквивалентность, или отследить влияние изменений файла данных на работу программы.
Изучите исходный текст программы, приведенный на рис. 5.1.
Рис. 5.1. Исходный текст scpybufo.c
Уже говорилось о сопутствующей этой программе ошибке переполнения буфера. (Эта программа была рассмотрена в главе 4 в секции, посвященной переполнению буфера.) Просмотрите исходный текст программы, представленный на рис. 5.2.
Применяя команду diff операционной системы UNIX, можно точно определить место и суть различий между двумя программами (см. рис. 5.3).
Из протокола работы команды видно, что относящиеся к файлу scpybufo.c данные отмечены символом <, а к файлу sncpyfix.c – символом >. Команда нашла первое отличие в заголовке этих файлов.
Со строки номер 25a24 начинаются различия в исходных текстах программ. Переменная Size_t есть в файле sncpyfix.c, но отсутствует в scpybufo.c. А в строке под номером 27c26 видна замена функции strcpy на strncpy. Хотя сравнить столь небольшие файлы можно и вручную, целесообразность применения команды diff для cравнения больших файлов более очевидна. Далее будут обсуждены причины поиска различий.
Почему нужно знать о различиях файлов?
Какая необходимость искать различия в файле или памяти до и после каких-либо действий? Причин может быть несколько. Например, потребуется найти местонахождение представляющих интерес данных. Если в распоряжении хакера окажется двоичный файл паролей приложения в неизвестном ему формате, то, скорее всего, ему будет интересно узнать, где именно в файле они хранятся.
Для этого ему следует сделать копию файла, сменить пароль и сравнить копию с измененным файлом. Различия между этими файлами, а их может быть несколько, позволит найти пароль. Зная место (места) хранения пароля, хакер может изменять двоичный файл в обход исследуемой программы. В этой главе будет рассмотрен пример, поясняющий сказанное. В подобных случаях целью злоумышленника является непосредственное изменение хранимых в файле данных.
Иногда злоумышленник в большей степени заинтересован в декодировке информации, а не в ее изменении. До обнаружения различий последовательность действий может совпадать с уже рассмотренной. После выявления различий, вместо того чтобы записать по найденным адресам свою информацию, злоумышленника могут заинтересовать причины и условия подобных изменений.
Другая причина поиска различий кроется в исследовании безопасности программ. Во времена всеобщей открытости обычной практикой производителей остается выпуск обновлений программ без раскрытия их сути. Виновники этой практики – некоторые ведущие производители программного обеспечения, как, например, Microsoft, Hewlett-Packard и Caldera. С другой стороны, производители Linux (за исключением Caldera) – исключение из этого правила. А ряд компаний занимают промежуточную точку зрения по этому вопросу, как, например, Cisco.
Метод поиска различий позволяет изучить заявленную производителем уязвимость, но до конца им не раскрытую. В результате выявления различий в исходных текстах двух программ становятся ясны недостатки программы, и можно оценить их влияние на безопасность. Кроме того, выявленные различия позволят найти ошибки, которые производитель устранил без лишнего шума в старших версиях программы.
Просмотр исходного текста программы
Вернемся к обсуждению различий в исходных текстах программ. На рисунках 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).
Этот патч представлен в унифицированном формате различий. Хотя предоставленная службой компьютерной безопасности FreeBSD информация о патче содержит все необходимые сведения, включая детальное описание уязвимости, анализ отчета результата сравнения двух файлов позволяет понять ее суть. Из первой строки протокола патча ясно, что он применяется к программе pwupd.c из директории usr.sbin/pw/.
Утилита pw операционной системы FreeBSD предназначена для добавления, удаления или модификации пользователей системы либо их групп. Выявленная уязвимость состояла в том, что при работе утилиты pw создавался временный файл с разрешениями, которые позволяли всем пользователям читать его. Разрешения временного файла в отчете выделены знаком минус (-). В результате пользователь мог получить доступ к зашифрованным паролям системы.
Автор самостоятельно проанализировал исходный текст утилиты pw. После получения двух версий исходных текстов (файл pwupd.c) утилиты (до и после внесения изменений) и их сравнения при помощи команды diff можно найти различия в исходных текстах данной программы, как это показано на рис. 5.5.
Из сравнения двух версий программы видны различия, аналогичные изменениям, показанным на рис. 5.4.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Глава 1 Суть проблемы представления знаний
Глава 1 Суть проблемы представления знаний Проблема представления знаний является тем ключевым пунктом, через который проходят пути к достижению успеха, пожалуй, во всех направлениях исследований по искусственному интеллекту, начиная от проблем понимания
Настройка поиска
Настройка поиска Параметры поиска, принятые в системе по умолчанию, позволяют находить файлы точно и быстро. Однако при необходимости вы можете изменить некоторые параметры системы поиска, сместив баланс «глубина – точность – быстрота поиска» в одну или другую
Способы поиска
Способы поиска Поиск в каталогах не представляет затруднений и интуитивно понятен. Чтобы найти в них необходимую информацию (если, конечно, она там присутствует), достаточно всего лишь обладать здравым смыслом.Пусть, к примеру, вам необходимо найти сайт газеты «Труд».
Таблицы поиска
Таблицы поиска Таблицы поиска используются для поиска файлов и приложений на компьютере пользователя. Чтобы найти файл, нужно сначала задать сигнатуру файла, а затем произвести поиск. Таблицы этой группы можно использовать для поиска в реестре, в данных конфигурации
Суть мошенничества
Суть мошенничества Термин «фишинг» (phishing) созвучен английскому слову fishing – рыбалка, удить. Он произошел от слияния трех слов: password (пароль), harvesting (сбор), и fishing, то есть означает ловлю и сбор паролей. В фишинг-атаках широко используются методы социальной инженерии.
Поиск различий между двумя файлами
Поиск различий между двумя файлами Рассмотрим следующую задачу. Имеются две версии исходного файла, одна из которых - более поздняя, содержащая ряд изменений. Как выяснить различия между этими двумя файлами? Какие строки были добавлены, а какие удалены? Какие строки
12.5.1. Алгоритмы поиска
12.5.1. Алгоритмы поиска Тринадцать алгоритмов поиска предоставляют различные способы нахождения определенного значения в контейнере. Три алгоритма equal_range(), lower_bound() и upper_bound() выполняют ту или иную форму двоичного поиска. Они показывают, в какое место контейнера можно
Условия поиска
Условия поиска Возможность конструировать "формулы" для задания условий поиска при выборе наборов, локализации строк при изменениях и удалениях, а также применение правил для создания входных данных является фундаментальной характеристикой языка запросов. Выражения
Поле поиска
Поле поиска Помимо удаления кнопки Поиск, существует несколько возможностей настройки работы поля поиска, отображаемого в меню Пуск. Все они основаны на параметрах REG_DWORD-типа, расположенных в ветви реестра HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer:• NoStartMenuSearchComm – если
Три вывода, которые можно сделать после обсуждения причин различий между людьми по цвету их кожи Дмитрий Шабанов
Три вывода, которые можно сделать после обсуждения причин различий между людьми по цвету их кожи Дмитрий Шабанов Опубликовано 31 октября 2013 Две общем-топредыдущие колонки были посвящены анализу одного, в , весьма простого признака человека —
Инфраструктура или суть: какова же роль информационных технологий в современных российских бизнесах? Михаил Ваннах
Инфраструктура или суть: какова же роль информационных технологий в современных российских бизнесах? Михаил Ваннах Опубликовано 05 июня 2013 Есть в наше время довольно распространённое мнение: информационные технологии нынче вовсе и не те, что
Суть методологии исследования уязвимости
Суть методологии исследования уязвимости Поясним простым языком, что понимается под методологией исследования уязвимости. Уязвимость – это нечто, что независимо от того, воспользовался ли ею кто-нибудь или нет, присутствует всюду, будь то микроконтроллер или
Глава 5 Поиск различий
Глава 5 Поиск различий В этой главе обсуждаются следующие темы: • Суть поиска различий • Исследование инсрументария поиска различий • Поиск неисправностей · Резюме · Конспект · Часто задаваемые вопросы
Исследование инструментария поиска различий
Исследование инструментария поиска различий До рассмотрения других, более интересных примеров следует обсудить некоторые инструментальные средства, выполняющие поиск различий. В предыдущем разделе было рассказано об использовании команды fc и разобран небольшой