Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в теоретические основы компьютерной безопасности (Прокофьев И.В., Шрамков И.Г., Щербаков А.Ю.).pdf
Скачиваний:
217
Добавлен:
28.06.2014
Размер:
2.36 Mб
Скачать

-77 -

-переменную P в качестве второго параметра в вызове функции bzero(char *s, size_t n); при этом значение n не должно превышать размерности переменной P,

-переменную P в качестве первого параметра в вызове функции memcpy(void *dest, void *src, size_t n); при этом значение n не должно превышать размерности переменной P,

-переменную P в качестве первого параметра в вызове функции memset(void *s, int c, size_t n); при этом размерность присваиваемого значения не должна превышать размерность переменной P,

-переменную P в качестве параметра в вызове функций gets(char *s). Во всех случаях выявляется потенциальная возможность ошибки

типа "buffer overflow"

-конструкцию типа P=getenv("SOME_ENVIRONMENT")

-для переменной P типа массив операция индексирования не должна приводить к выходу за границу массива.

3.Для любой процедуры F() из списка {F}:

-для всех локальных переменных провести анализ по предыдущему пункту.

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

-для каждой функции динамического распределения памяти (malloc(), ... ) производится поиск соответствующей ей функции освобождения памяти ( free(), ... ).

После освобождения памяти не должно быть операционных конструкций, ссылающихся на нее.

-не должно быть операций записи по адресам любых меток и имен объектов (процедур и т.д.) в сегменте кода;

-не должно быть операций записи в область переменных, задающих порядок возврата управления при выходе из процедуры;

-необходимо выявить вызовы всех других процедур из данной. Для каждой из вызываемых процедур производим поиск в списке {Fc}. Для каждой найденной в этом списке определяем из контекста вызова размерность параметров и рекурсивно проводим анализ вызываемой процедуры по данному алгоритму.

Заключение

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

- 78 -

Литература ко второй части

1.А.И.Костогрызов, В.В.Липаев. Сертификация качества функционирования автоматизированных информационных систем. М., 1996. - 280 с.

2.Боэм Б.И. Инженерное проектирование программного обеспечения. М., Радио и связь, 1985. - 512 с.

3.[Bryant, 1988] B. Bryant. Designing an authentication system: A dialogue in four scenes. (Создание аутентических систем: диалог в четырех сценах). Февраль 1988. Draft. (Описание требований, для выполнения которых был создан Kerberos).

4.[Needham и Schroeder, 1987] R. M. Needham и M. Schroeder. Authentication revisited. (Повторная аутентификация). Operating Systems Review, 21(1):7, январь 1987.

5.[Steiner и др., 1988] Jennifer Steiner, B. Clifford Neuman и Jeffrey I.

Schiller. Kerberos: An authentication service for open network systems. (Kerberos:

служба аутентификации для открытых сетевых систем). По материалам зимней конференции USENIX, стр. 191-202, Dallas, TX, зима 1988.