Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Анализ различий





Анализ различий – метод определения уязвимостей программы, который применяется, если производитель сообщил об уязвимости, не детализируя ее сути. С помощью этого метода определяется, был ли изменен файл программы, a если был, то где именно.

 

diff – одна из лучших утилит, реализующая рассматриваемый метод. Она поставляется с большинством версий операционных систем UNIX и благодаря Фонду свободно распространяемого программого обеспечения (Free Software Foundation) реализована на многих платформах. diff сравнивает две копии данных и отображает любые различия между ними, то есть она позволяет найти различия в двух исходных файлах программ и их местонахождение.

 

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

 

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

 

 

elliptic@ellipse:~$ diff axspawn-0.2.1/axspawn.c axspawn-

 

0.2.1a/axspawn.c

 

491c491

 

< envc = 0;

 

 

> envc = 0;

 

493c493

 

< sprintf(envp[envc++], “AXCALL=%s”, call);

 

 

> sprintf(envp[envc++], “AXCALL=%.22s”, call);

 

495c495

 

< sprintf(envp[envc++], “CALL=%s”, (char *)user);

 

 

> sprintf(envp[envc++], “CALL=%.24s”, (char

 

*)user); 497c497

 

< sprintf(envp[envc++], “PROTOCOL=%s”, protocol);

 

 

> sprintf(envp[envc++], “PROTOCOL=%.20s”,

 

protocol); 500c500

 

< envp[envc] = NULL;

 

 

> envp[envc] = NULL;

 

 

Видно, что в первой версии программы axspawn.c используется функция sprintf без всяких ограничений на длину выводимой строки данных, а во второй – введено ограничение на длину выводимой строки в спецификации преобразования.

 

В некоторых случаях производитель может выпустить патч, который будет сообщать отличия между двумя версиями программы. Обычно такие патчи выпускаются для операционных систем типа BSD (BSD – Berkeley Software Design Incorporated – компания-разработчик программного обеспечения), например FreeBSD. В январе 2002 года была найдена уязвимость в пакете инструментальных средств операционной системы FreeBSD. До ее устранения пользователь мог извлечь данные во временную директорию и изменить их. До тех пор, пока уязвимость не была всесторонне изучена, патч pkg_add сообщал точное местонахождение уязвимости:

 

 

– usr.sbin/pkg_install/lib/pen.c 17 May 2001 12:33:39 -0000

 

+++ usr.sbin/pkg_install/lib/pen.c 7 Dec 2001 20:58:46 -0000

 

@@ -106,7 +106,7 @@

 

cleanup(0);

 

errx(2, __FUNCTION__ “: can’t mktemp “%s””, pen);

 

}

 

– if (chmod(pen, 0755) == FAIL) {

 

+ if (chmod(pen, 0700) == FAIL) {

 

cleanup(0);

 

errx(2, __FUNCTION__ “: can’t mkdir “%s””, pen);

 

}

 

 

Удаляемая патчем часть исходного текста обозначена знаком минус (-), а добавляемая – знаком плюс (+). Можно увидеть, что часть исходного текста, содержащая код создания директории с разрешениями 0755, заменяется на код, создающий директорию с разрешениями 0700.

 

Следует признать, что исследование уязвимости не всегда бывает таким простым. Рассмотрим анализ выполнимого кода программы.

 

Date: 2015-06-05; view: 539; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.008 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию