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


Полезное:

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


Категории:

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






Соперничество программ за ресурсы





При соперничестве программ за ресурсы часто встречается программная ошибка, получившая название «состояние гонок» (Race Conditions). Проявляется состояние гонок различным образом, например в виде блокирования одним процессом разделяемой области памяти, не позволяя тем самым другому процессу изменить в ней данные, или в виде ошибок одновременной работы нескольких процессов с одним и тем же файлом.

 

Изучим пример использования функции mktemp, которая часто является источником подобных ошибок:

 

 

/* mtmprace.c */

 

/* Hal Flynn <mrhal@mrhal.com> */

 

/* mtmprace.c creates a file in the */

 

/* temporary directory that can be */

 

/* easily guessed, and exploited */

 

/* through a symbolic link attack. */

 

#include <stdio.h>

 

#include <stdlib.h>

 

int main()

 

{

 

char *example;

 

char *outfile;

 

char ex[] = “/tmp/exampleXXXXXX”;

 

example = ex;

 

mktemp(example);

 

outfile = fopen(example, “w”);

 

return (0);

 

}

 

 

В некоторых операционных системах эта программа создает файл во временной директории с предопределенным именем, состоящим из строки символов, в которую входят слово example, пять символов идентификатора процесса и одна буква латинского алфавита. Первый недостаток рассматриваемой программы заключается в том, что между проверкой существования файла и его созданием может возникнуть ошибка «состояние гонок» (Race Conditions), обусловленная соперничеством программ за ресурсы. Второй – в том, что имя файла можно сравнительно легко предсказать, поскольку идентификатор процесса можно определить, а последний символ – это одна из 26 букв английского алфавита. В результате возможна успешная для злоумышленника атака символических связей. Для того чтобы определить, позволяет ли операционная система воспользоваться указанными уязвимостями, достаточно исследовать файлы, созданные программой в директории /tmp.

 

При помощи такой утилиты, как grep, можно исследовать большие программные файлы на наличие в них известных ошибок. Означает ли это, что будут выявлены все уязвимости? К сожалению, нет, но это позволит найти и устранить большинство часто встречающихся ошибок. Единственно надежный способ обеспечения безопасности программного обеспечения – построчный аудит многочисленными независимыми экспертами. И даже после этого уровень безопасности программного обеспечения может быть оценен только как достаточно высокий, без гарантий полной безопасности.

 

 







Date: 2015-06-05; view: 483; Нарушение авторских прав



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