Методы и средства противодействия атакам на компьютерные системы, основанным на использовании уязвимостей программного кода тема диссертации и автореферата по ВАК РФ 05.13.11, кандидат технических наук Гуров, Дмитрий Валерьевич

  • Гуров, Дмитрий Валерьевич
  • кандидат технических науккандидат технических наук
  • 2012, Москва
  • Специальность ВАК РФ05.13.11
  • Количество страниц 203
Гуров, Дмитрий Валерьевич. Методы и средства противодействия атакам на компьютерные системы, основанным на использовании уязвимостей программного кода: дис. кандидат технических наук: 05.13.11 - Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей. Москва. 2012. 203 с.

Оглавление диссертации кандидат технических наук Гуров, Дмитрий Валерьевич

ОГЛАВЛЕНИЕ

Введение

1. Современное состояние проблемы уязвимостей компьютерных систем

1.1 Особенности современного этапа развития информационных сис- 15 тем с точки зрения их безопасности

1.2. Программные средства автоматического обнаружения и блокиро- 22 вания уязвимостей

1.2.1 Статические и динамические сканеры уязвимостей

1.2.2. Надстройки к компилятору

1.2.3. Надстройки к ядру

1.3. Аппаратные средства блокирования уязвимостей 31 Выводы к главе 1

2. Исследование уязвимостей программного кода, создающих предпо- 35 сылки для проведения атак на компьютерные системы

2.1. Переполнение буфера

2.1.1. Структура памяти процесса

2.1.2. Переполнение буфера, размещенного в стеке

2.1.3. Переполнение произвольного буфера

2.1.4. Переполнение буфера, размещенного в куче

2.2. Уязвимость форматной строки

2.3. Переполнение целого

2.3.1. Переполнение разрядной сетки

2.3.2. Арифметическое переполнение

2.3.3. Ошибки в знаке

2.4. Состязания условий

2.5. Уязвимости интерпретируемых языков

2.6. Методика безопасного программирования

2.6.1. Правила безопасного программирования

2.6.2. Метод оценки количества уязвимостей в программе

2.6.3. Оценка повышения защищённости программ при использо-

вании предлагаемой методики

Выводы к главе 2

3. Использование рандомизации элементов архитектуры процессора для 102 повышения его защищённости

3.1. Рандомизация системы команд

3.1.1. Изменения, вносимые в архитектуру процессора

3.1.2. Описание функционирования системы

3.1.3. Особенности обработки команд переходов

3.1.4. Оценка накладных расходов

3.2. Противодействие атакам, построенным по схеме «ret to libe»

3.3. Противодействие уязвимостям переполнения целого

3.4. Критерии эффективности системы рандомизации 129 3.4.1. Выявление наиболее важных критериев

3.5. Исследование вопросов реализации ГПСЧ для формирования таблицы замен

3.5.1. Регистр сдвига со стохастической обратной связью (RFSR)

3.5.2. Выбор рандомизационного генератора ПСЧ 140 Выводы к главе 3

4. Внедрение разработанных методов и средств противодействия уязви- 144 мостям компьютерных систем

4.1. Исследование уязвимостей ВК «Эльбрус-ЗМ1»

4.2. Исследование двоичного транслятора ВК «Эльбрус-ЗМ1»

4.3. Разработка методики обучения безопасному программированию

4.3.1. Особенности обучения безопасному программированию

4.3.2. Программные средства для обучения безопасному программированию

Выводы к главе 4

Заключение

Список использованных источников

Приложение

Рекомендованный список диссертаций по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК

Введение диссертации (часть автореферата) на тему «Методы и средства противодействия атакам на компьютерные системы, основанным на использовании уязвимостей программного кода»

ВВЕДЕНИЕ

Современный этап развития общества характеризуется его широкой информатизацией, и со временем роль информационной сферы будет всё более возрастать. Однако развитие компьютерных технологий требует повышенного внимания к защите информационных ресурсов от несанкционированного доступа, обеспечению безопасности информационных и телекоммуникационных систем, как уже развернутых, так и вновь создаваемых на территории России. В 2000 году был принят специальный документ - Доктрина информационной безопасности Российской Федерации [1], определяющий основные направления развития средств защиты информации.

По мере расширения сферы применения вычислительной техники в различных областях промышленности и народного хозяйства роль защиты информации становится всё более важной. Однако, как показывает история человечества, средства нападения всегда находятся на полшага впереди средств обороны. Более того, в мире вычислительной техники, когда информация может иметь много различных представлений, когда механизмы доступа к ней разнообразны, атаки могут одновременно производиться большим числом пользователей из разных уголков Земли.

Злоумышленники не всегда хотят только завладеть информацией или получить контроль над вычислительной системой. Зачастую их целью является нарушение работы системы, искажение или удаление хранящейся в ней информации, наконец, просто несанкционированное вторжение с целью кражи данных, которое при этом должно остаться незамеченным.

Таким образом, система обеспечения безопасности информации (ОБИ) должна защищать хранимые и обрабатываемые данные, при этом она должна развиваться не столько в виде реакции на существующие угрозы, а как комплекс мер, когда предсказание появления новых методов вредоносного воздействия позволит создать превентивную защиту, эффективную против угроз, которые могут возникнуть в будущем.

Угрозы безопасности системы могут иметь самую разную природу. Более того, потенциал для появления угроз может быть заложен на любом этапе про-

ектирования системы, как случайно, так и преднамеренно, при этом проявиться в самый неожиданный момент эксплуатации системы. Угрозу безопасности могут представлять предсказуемый генератор псевдослучайных чисел (ГПСЧ), используемый при реализации алгоритмов защиты информации (ЗИ), неправильная реализация или неправильное использование криптоалгоритмов, ошибки, связанные с конфигурированием системы, значениями тех или иных параметров, установленных «по умолчанию», ошибки, допущенные при написании программного кода, недостатки компилятора и многие другие [2].

Программы, предназначенные для выполнения деструктивных действий, получили обобщенное название разрушающие программные воздействия (РПВ) [3, 4]. Для обозначения РПВ, использующих при своем функционировании уязвимости программного кода, применяется термин «эксплойт» [5].

Для защиты от РПВ созданы и используются такие средства, как межсетевые экраны, системы обнаружения вторжений (IDS), средства анализа защищённости (сканирования уязвимостей), ложные объекты атаки (системы Honeypot и Honeynet), методы внесения неопределённости в работу объектов и средств защиты, сигнатурный анализ, эвристический анализ, эмуляция процессора, мониторинг потенциально опасных действий, контроль хода выполнения программ, аудит, обнаружение несанкционированных изменений с использованием контрольных кодов целостности [6, 7].

Защищенность автоматизированной системы обработки данных (АСОД) определяется степенью защищённости её самого слабого звена. Поэтому эффективность средств ОБИ определяется наличием чёткой классификации угроз информационной безопасности (ИБ), связанных с функционированием РПВ.

Однако до настоящего времени такой классификации проведено не было, что привело к индивидуальной работе отдельных групп исследователей по устранению отдельных уязвимостей в программном коде. О несистематичности таких работ свидетельствует регулярные выпуски обновлений, закрывающих ту или иную «дыру» в защите даже всемирно известных программных продуктов.

При этом системы непрерывной защиты не дают должного эффекта, так как, по оценке Gartner, хотя и производят постоянный мониторинг объекта защиты, однако самоконтроль осуществляют в среднем только раз в год, что не обеспечивает должного уровня безопасности [8].

Даже кратковременное наличие уязвимости может быть совершенно недопустимым в системах специального назначения. Среди таких объектов Доктрина информационной безопасности выделяет системы управления сложными исследовательскими комплексами, экологически опасными и экономически важными производствами, системы управления войсками и оружием. Однако, как показывает практика, между обнаружением уязвимости и её ликвидацией проходит до полугода [9].

К наиболее распространённым уязвимостям информационных систем следует отнести те, которые вносятся в связи с внедрением компонентов, реализующих функции, не предусмотренные документацией.

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

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

Средства, реализующие методы первого направления, работают, как правило, по принципу анализа исходного кода на языке высокого уровня в соответствии с заложенными сигнатурами и обращают внимание программиста на те или иные наборы команд, выполнение которых может привести к неожиданным последствиям. Эти методы позволяют выявить программные закладки, оставленные в коде злоумышленником, или ошибки программирования, позволяющие в последующем использовать их для проникновения в информационную систему. Однако эти методы весьма трудоёмки, требуют длительного

времени работы специалистов высокой квалификации и не гарантируют 100%-го результата.

Динамические методы работают совместно с недоверенной программой, но сами по себе являются независимыми продуктами (программными либо аппаратными). Программные динамические методы контролируют действия программы, её взаимодействие с другими программами и системой ввода-ввода и при необходимости прерывают работу недоверенной программы или блокируют её до подтверждения продолжения пользователем.

Использование аппаратных методов требует модификации процессора на стадии его проектирования, однако даёт полную гарантию закрытия уязвимо-стей определённого типа. Их использование представляется оправданным, например, для систем специального назначения.

Проявление уязвимостей может происходить в самых разных ситуациях и по разным причинам. На этапе кодирования актуальной задачей является рассмотрение уязвимостей, основанных на особенностях взаимодействия процессора и памяти, порядке выполнения программ в процессоре, размещения данных в памяти, организации доступа процессов к ресурсам и др. Такие уязвимости не приводят к нарушению защищённости системы при обычной эксплуатации, то есть такой, какой она задумывалась программистом. Однако при использовании специфических входных данных, например, очень большого размера, могут возникать различные нестандартные ситуации, которые при определённом стечении обстоятельств могут привести к компрометации системы и, в частности, к получению злоумышленником полного доступа к системе.

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

выполняется, а также особенности компилятора, преобразующего код с языка высокого уровня в исполнимый бинарный файл.

Все эти факты требуют подготовки специалистов, не только хорошо владеющими навыками программирования, но и представляющих весь комплекс проблем обеспечения безопасности, возникающих при выполнении программ на компьютере и взаимодействии компонентов программно-аппаратного комплекса. Именно по этой причине этим вопросам уделяется большое внимание. IT-компании сообщают о росте своих расходов на решения, связанные с ОБИ, обучение и сертификацию специалистов.

Так, в 2010 году мировой рынок решений по обеспечению информационной безопасности достиг 16,5 млрд. долл., по оценкам Gartner, рост составил 12% по сравнению с 2009 годом [10, 11]. При этом увеличивается доля ассигнований на обеспечение безопасности в IT-бюджете компаний. Более двух третей (68%) организаций выделяет какую-то часть своего IT-бюджета на обучение или сертификацию, тогда как годом ранее их было 55% [12].

В Доктрине информационной безопасности среди основных задач выделяется создание единой системы подготовки кадров в области информационной безопасности и информационных технологий.

В Федеральной целевой программе развития образования на 2011 -2015 гг. [13] также ставится задача подготовки кадров по приоритетным направлениям модернизации и технологического развития экономики России, в числе которых выделяются стратегические компьютерные технологии и программное обеспечение. При этом отмечается, что в процессе обучения необходимо широко использовать новые электронные образовательные ресурсы и пособия.

Значительный вклад в исследование вопросов безопасного программирования, методов выявления уязвимостей внесли такие ученые как Н. Данжани (Nitesh Dhanjani), Дж. Кларк (Justin Clarke), Дж. С. Фостер (James foster), M. Мейсер (Matt Messier), Дж. Bera (John Viega), M. Ховард (Michael Howard), Д. Лебланк (David LeBlanc), Дж. Эриксон (Jon Erickson), Мэтт Бишоп (Matt

Bishop), а также специалисты фирм Symantec, Лаборатория Касперского и других.

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

Целью работы является повышение защищённости компьютерных систем за счёт противодействия атакам, основанным на использовании уязвимостей, вносимых на этапе программирования.

Для достижения поставленной цели необходимо решение следующих задач:

- анализ и классификация существующих уязвимостей ПО;

- исследование наиболее распространённых уязвимостей ПО типа Buffer overflow (Stack smashing и Heap overflow), Race condition, Integer overflow (Widthness overflow, Arithmetic overflow, Signedness errors), Format string error, SQL-injection и других уязвимостей интерпретаторов, создающих предпосылки для проведения атак, в том числе основанных на внедрении вредоносного кода;

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

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

- разработка методов противодействия уязвимостям прикладного ПО в случае, если исходный код приложения недоступен;

- анализ защищенности отечественного высокопроизводительного вычислительного комплекса (ВК) «Эльбрус-ЗМ1», выработка рекомендаций по устранению выявленных уязвимостей.

Методы исследования.

При решении поставленных задач использовались методы теории вероятностей и математической статистики, методы имитационного моделирования, методы модульного и объектно-ориентированного программирования, теория надёжности ПО, методы принятия решений.

Научная новизна результатов работы заключается в следующем:

1) Разработана классификация уязвимостей ПО, создающая предпосылки для создания наиболее эффективных методов противодействия выявленным типам уязвимостей;

2) Разработаны модель нарушителя и модель атаки на компьютерную систему, основанной на использовании уязвимостей программного кода;

3) Предложен метод оценки повышения защищённости программы при использовании методики безопасного программирования, основанный на применения модели надежности ПО Миллса. Показано, что преимуществом применения этой модели по сравнению с классическим ее использованием является возможность учета выявленных на этапе классификации чётких признаков вносимых уязвимостей;

4) Предложен аппаратный метод защиты от эксплойтов, основанных на вставке вредоносного кода в программу; разработана модель рандомизацион-ного генератора псевдослучайных чисел (ГПСЧ);

5) Впервые предложены методы повышения защищённости вычислительных систем, работающих в режиме виртуальной машины, эмулирующей аппаратные ресурсы вычислительной системы.

На защиту выносятся:

- классификация уязвимостей ПО;

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

- аппаратный метод повышения защищённости вычислительной системы от атак, основанных на внедрении вредоносного кода и разрушении стека;

- метод оценки количества уязвимостей, остающихся в программе после этапа её тестирования на предмет наличия уязвимостей;

- результаты исследования защищенности отечественного высокопроизводительного ВК «Эльбрус-ЗМ1»;

- методы повышения защищённости вычислительных систем, работающих в режиме двоичного транслятора (виртуальной машины, эмулирующие аппаратные ресурсы).

Практическая значимость результатов работы заключается в следующем:

1) Разработана методика безопасного программирования, позволяющая создавать ПО, свободное от появления типичных уязвимостей.

2) Разработана методика обучения безопасному программированию, поддержанная учебно-методическим пособием, электронными средствами обучения и системой тестирования знаний.

3) Впервые проведен анализ защищенности отечественного высокопроизводительного ВК «Эльбрус-ЗМ1».

Апробация работы.

Основные результаты работы докладывались и обсуждались на Научных сессиях МИФИ 2003, 2004, 2008 гг. и НИЯУ МИФИ 2010 г., выставках-конференциях «Телекоммуникации и новые информационные технологии в образовании» (МИФИ, 2004 и 2006 гг.), международных телекоммуникационных конференциях студентов и молодых ученых "МОЛОДЕЖЬ И НАУКА" (МИФИ, 2005, 2010, 2012 гг.), Международном симпозиуме «Образование через науку», посвященную 175-летию МГТУ им. Н.Э. Баумана (2005 г.), Первой Международной научно-практической конференции «Современные информационные технологии и ИТ-образование» (МГУ, 2005 г.), Международном научно-техническом семинаре «Современные технологии и задачи управления, автоматики и обработки информации» (Алушта, 2006 г.), Всероссийской научно-практической конференции с международным участием «Информационные технологии в обеспечении нового качества высшего образования» (Москва, 2010 г.), 54-й научной конференции МФТИ - Всероссийской молодёжной научной

конференции с международным участием «Проблемы фундаментальных и прикладных, естественных и технических наук в современном информационном обществе» (2011 г.), XIX Всероссийской научной конференции "Проблемы информационной безопасности в системе высшей школы" (НИЯУ МИФИ, 2012 г.), научном семинаре ЗАО МЦСТ (2010 г.). Система тестирования «Исток» экспонировалась на Всероссийской выставке научно-технического творчества молодежи НТТМ-2006.

Результаты работы отражены в 22 печатных трудах, в том числе трёх статьях в журналах, входящих в Перечень ведущих рецензируемых научных журналов и изданий, в которых должны быть опубликованы основные научные результаты диссертаций на соискание ученой степени доктора и кандидата наук, а также в учебно-методическом пособии. На разработанные обучающие программные средства получено два Свидетельства об официальной регистрации программ для ЭВМ.

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

Реализация результатов. Разработанная классификация уязвимостей была использована при анализе защищённости ВК «Эльбрус-ЗМ1» (ЗАО МЦСТ). Разработанная методика обучения безопасному программированию внедрена на кафедре «Компьютерные системы и технологии» НИЯУ МИФИ.

Результаты диссертационной работы в части, касающейся общих принципов построения компьютерных обучающих программ и систем тестирования и реализованных на их основе программных средств, внедрены в учебный процесс НИЯУ МИФИ (факультет Кибернетики и информационной безопасности, факультет Очно-заочного (вечернего) обучения, Институт инновационного менеджмента).

Основные научные результаты работы были получены в процессе выпол-

нения НИР в рамках Федеральной целевой программы «Научные и научно-педагогические кадры инновационной России» на 2009-2012 гг.

Диссертация состоит из введения, четырех глав, заключения, библиографии и приложения. Общий объём диссертации составляет 189 страниц.

Первая глава диссертации посвящена анализу современного этапа развития информационных систем с точки зрения их безопасности, выявлению наиболее часто встречающихся уязвимостей и обзору существующих средств противодействия атакам, использующим уязвимости ПО. Рассматриваются наиболее типичные примеры ситуаций, к которым приводит недостаточный контроль за уязвимостями программных систем. Анализируются существующие средства поиска и устранения уязвимостей, проводится их анализ на полноту и эффективность. Делаются выводы о необходимости комплексного решения проблемы наличия уязвимостей ПО, актуальности задачи создания единой методики их обнаружения и устранения.

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

Третья глава посвящена описанию предлагаемого метода аппаратной защиты процессора, основанного на рандомизации системы команд выполняемого процесса и системных данных, помещаемых в стек при вызове подпрограмм. Приводятся полученные с помощью теоретических расчетов и моделирования оценки защищённости системы и необходимых для этого дополнительных аппаратных и временных затрат.

Четвёртая глава содержит основные результаты практического использования предложенных методов при анализе защищенности ВК «Эльбрус-ЗМ1», описание предложенных методов повышения защищённости ВК «Эль-брус-ЗМ1», работающего в режиме двоичного транслятора, а также описание разработанных программных средств обучения безопасному программированию.

В заключении приведены основные результаты диссертационной работы.

1. СОВРЕМЕННОЕ СОСТОЯНИЕ ПРОБЛЕМЫ УЯЗВИМОСТЕЙ

КОМПЬЮТЕРНЫХ СИСТЕМ

1.1. Особенности современного этапа развития информационных систем с точки зрения их безопасности

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

В 2010-м году 50 крупнейших компаний США потеряли в результате действий хакеров около шести миллионов долларов, тогда как за весь 2009 год финансовый ущерб составил всего 3,8 миллионов. Количество атак злоумышленников увеличилось на 44 процента, и на сегодняшний момент как минимум одна крупная фирма США раз в неделю становится жертвой хакеров. Ликвидация последствий атаки на фирму в среднем занимает 18 дней, а ее стоимость равна примерно 400 тысячам долларов. В прошлом году эти показатели равнялись 14-ти дням и 247 тысячам соответственно [14].

Часто уязвимости программного обеспечения используются не в ручном режиме хакерами, а автоматическими РПВ, которые свободно «гуляют» по сети, заражая один компьютер за другим. Такие программы получили название «червей», и некоторые из них стали широко известны по всему миру благодаря нанесённому ущербу и количеству поражённых компьютеров.

Одним из первых получивших широкую огласку случаев распространения компьютерных червей, использующим уязвимости исходного кода, стал червь Code Red (2001 год). Уязвимость, используемая червём, была основана на переполнении буфера. Полезная нагрузка позволяла заменить стартовую страницу на атакованном web-сервере, разослать свою копию по случайно сгенерированным IP-адресам, а также провести массированную DDoS-атаку на

фиксированный набор серверов. Ущерб от действий червя по всему миру составил около 2,6 млрд. долл. [15].

Также довольно известен случай распространения червя Slammer, появившегося в начале 2003-го года, который за три дня поразил до полумиллиона компьютеров, которые использовали продукцию Microsoft — MS SQL Server. Для своего распространения червь использовал уязвимость переполнения буфера. Всего от червя пострадали более 700 тысяч компьютеров по всему миру, а ущерб составил около 1 млрд. долл. [15,16].

Наконец, сетевой червь Conficker (также известен как Downup, Downadup и Kido) - один из самых известных червей, основанных на использовании уяз-вимостей исходного кода, - и один из самых опасных. В январе 2009 года червь поразил 12 миллионов компьютеров во всём мире. Червь использует уязвимости Windows, связанные с переполнением буфера, и при помощи RPC-запроса выполняет код. Для данного червя характерна постоянная мутация его исполнимого кода, в связи с чем опасность заражения не исчерпана полностью даже теперь, когда он хорошо изучен разработчиками антивирусного ПО. Ущерб, нанесённый червём к настоящему времени, составляет 9,1 млрд. долл. [17].

Летом 2010 года в средствах массовой информации появились сообщения об обнаружении нового компьютерного червя, получившего название Stuxnet. Основной областью его распространения была центральная Азия, в первую очередь, Иран, а областью воздействия - промышленные контроллеры фирмы Siemens, которые использовались для управления центрифугами на ядерных заводах этой страны. Не осталась в стороне от распространения и фирма Microsoft, ведь именно уязвимости «нулевого дня» («О-day», то есть такие, о существовании которых ранее не было известно) в операционной системе Windows сделали возможным внедрение червя в систему. Итогом вирусной атаки для атомной промышленности Ирана стало полное разрушение 1000 из 9000 центрифуг, что отбросила ядерную программу этой исламской страны на год назад. Данный червь - один из наиболее ярких примеров, демонстрирующих возможности воздействия РПВ на реальные физические и экономические объекты, что открыва-

ет новую страницу в противодействии вредоносного ПО и средств борьбы с ним и лишний раз подчёркивает актуальность превентивного обнаружения и устранения уязвимостей. Если ранее среди разработчиков вирусов и других РПВ числились, в основном, хакеры-любители, то теперь стало ясно, что эти средства являются настоящим кибернетическим оружием, и Stuxnet стал одним из первых известных результатов его применения на государственном уровне.

Руководством России при обсуждении вопросов национальной безопасности отмечается, что большое, если не решающее, значение в определении характера вооружённой борьбы будут иметь военные возможности стран в сфере информационного противоборства, в первую очередь - в киберпространстве [18].

Спустя некоторое время после обнаружения и блокирования Stuxnet по сети стал распространяться его «наследник» - использующий сходные механизмы инфицирования червь Duqu. Однако последний выполняет не столько диверсионные действия, сколько собирает и пересылает своему хозяину информацию о параметрах работы SCADA-систем, на которые ему удалось внедриться.

Корпорация IBM опубликовала «Отчет о тенденциях и рисках информационной безопасности по итогам первого полугодия 2011 года», подготовленный группой исследований и разработок в области информационной защиты IBM X-Force. Результаты исследования свидетельствуют о быстром изменении общей ситуации с информационной безопасностью, которая характеризуется хорошо спланированными, мощными и широкомасштабными атаками, растущим числом уязвимостей защиты мобильных устройств и более изощренными угрозами [19].

Группа X-Force сообщает также, что процентная доля критических уязвимостей утроилась за 2011-й год по сравнению с 2010-м. X-Force объявила 2011 г. «годом брешей в системах безопасности» ("Year of the Security Breach") из-за большого числа массированных широкомасштабных атак и «громких» случаев компрометации сетей, которые произошли в этом году.

Потенциал для большого количества проводимых атака заложен в самой политике фирм - разработчиков программного обеспечения. Фирмы разраба-

тывают, в первую очередь, функциональность, а уже потом - безопасность, рассматривая её только в аспекте маркетинговой привлекательности для клиентов. Таким крупным компаниям, как Microsoft, проще было "замолчать" имеющиеся уязвимости так, чтобы о них не было известно, чем исправить их [9]. И несмотря на то, что в настоящее время ситуация изменилась, и у этого производителя сейчас одна из лучших моделей обеспечения безопасности, всё равно у Microsoft все еще есть значительные проблемы со временем реакции на обнаруженные уязвимости. Зачастую с момента обнаружения уязвимости до выпуска соответствующих патчей все еще проходит слишком много времени (месяцы и даже годы).

Информация о потерях различных структур от уязвимостей появляется в средствах массовой информации почти каждый день. Атакованными оказываются как крупные и известные фирмы, так и рядовые пользователи. И если для обычных пользователей итоги таких атак - это финансовые потери и увеличение количества спама в их почтовых ящиках, возможно, раскрытие конфиденциальной информации в сети, то для крупных фирм - это кражи финансовой информации, нарушение функционирования корпоративных информационных сетей и потери в конкурентной борьбе. Количество скомпрометированных (то есть раскрытых лицам, которые не должны иметь доступа к этой информации) персональных данных, хранящихся на серверах фирм, в 2010 году составило 654 миллиона записей [20]. Нарушение функционирования интернет-банкинга в результате атак приводит к потерям в сотни тысяч долларов [21]. Также из-за проблем в исходном коде приложений терпят убытки военные и клиники: ошибки в приборах приводят к не боевым потерям среди военнослужащих, а неправильно организованный опрос медицинских датчиков - к гибели пациентов из-за переоблучения [22]. Часто проблемы встречаются и в наиболее распространённом на сегодняшний день семействе операционных систем Windows, несмотря на то, что с выходом последней версии надёжность системы существенно повысилась. В последнее время злоумышленникам удаётся находить уязвимости, которые позволяют тем или иным способом получить неограниченный доступ в системе [23-25].

Помимо увеличения количества уязвимостей и ущерба от атак злоумышленников, произведённых с их использованием, растёт и количество средств, выделяемых корпорациями на информационную безопасность. Мировой рынок таких средств в 2009-м году составил 13,5 млрд. долларов, что, по данным аналитиков, почти на 20% выше показателя 2007 года [26].

Сегодняшняя нормативная, методическая и инструментальная база выявления недекларированных возможностей программ не позволяет эффективно обеспечивать безопасность программных ресурсов. Мало того, имеется тенденция увеличения числа уязвимостей в программном коде [27]. Поэтому работы в области информационной безопасности, направленные на исследование методов обнаружения и закрытия уязвимостей, становятся всё более актуальными.

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

На рис. 1.1 приведена статистика уязвимостей по типам воздействий в 2011-м году [33].

1. Брут-форс атака ( 0,31|)

2. Межсайтовый скриптинг (20,3%)

3. Отказ в обслуживании (13,8%)

4. Раскрытие важных данных ( 9,3%)

5. Раскрытие.системных данных ( 4,1%) б/Внедрение в сессию пользрвателя ( 6,4%) 7. Нааеторизованное изменение данных. (№¿8%) 8; Повышение привилегий ( 4,0%)

9. Обход ограничений безопасности ( 8,4%3.

10. Еп^инг атака (1,7%)

11. Компрометация системы (27,1»)

Рис. 1.1. Статистика уязвимостей

Количество разнообразных типов уязвимостей чрезвычайно велико. По запросу «Хакеры атаковали» поисковые серверы находят почти 3 миллиона записей. Поэтому провести исчерпывающе полное исследование всех конкретных уязвимостей невозможно. Работа по анализу уязвимостей и разработке методов противодействия им должна проводиться не путём выявления каж-

дои конкретной неисправности и указания способа ее устранения или недопущения её появления в программном продукте, а путём определения групп наиболее распространённых неисправностей.

Специальные группы исследователей, проводящие такую работу, используют разные подходы к решению этой проблемы. Так в [34, 35] представлены попытки составить выполнения такой классификации, однако они не являются достаточно полными и не учитывают причины появления уязвимостей, а этот критерий очень важен при построении системы обнаружения и противодействия им.

В [9] представлено распределение уязвимостей в программном обеспечении различного типа (табл. 1.1).

Таблица 1.1. Количество уязвимостей в разных типах ПО, 2010

Клиентские операционные системы Количество уязвимостей

Apple Mac OS X 1261

Red Hat Linux Enterprise Desktop 5 1232

Ubuntu Linux 8.04 918

Microsoft XP Professional 351

Microsoft Windows 7 33

Серверные операционные системы

Red Hat Linux Enterprise Server 5 1150

Sun Solaris 10 905

Microsoft Windows Server 2008 157

Системы управления базами данных

Oracle Database 11 256

MySQL 5.x 45

Microsoft SQL Server 2005 18

Microsoft SQL Server 2008 0

Браузеры

Mozilla Firefox 3.5 .x 79

Opera 9.x 56

Microsoft Internet Explorer 8.x 49

Представленная в табл. 1.1 информация позволяет судить лишь о степени защищённости того или иного программного продукта, но не даёт инструмен-

та повышения этой защищённости. К тому же количество найденных уязвимо-стей сильно зависит от длительности присутствия ПО на рынке.

В международном сообществе по поиску и изучению программных уязвимостей С\¥Е [36] классификация строится на ранжировании уязвимо-стей по степени опасности (табл. 1.2). Ранг в данной таблице определяются в соответствии с распространённостью уязвимости, степенью опасности, трудностью обнаружения и т.д.

Таблица 1.2 Классификация С WE ТОР-25

Ранг Кол-во баллов Наименование

1 93.8 Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')

2 83.3 Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')

3 79.0 Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')

4 77.7 Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

5 76.9 Missing Authentication for Critical Function

6 76.8 Missing Authorization

7 75.0 Use of Hard-coded Credentials

8 75.0 Missing Encryption of Sensitive Data

9 74.0 Unrestricted Upload of File with Dangerous Type

10 73.8 Reliance on Untrusted Inputs in a Security Decision

11 73.1 Execution with Unnecessary Privileges

12 70.1 Cross-Site Request Forgery (CSRF)

13 69.3 Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

14 68.5 Download of Code Without Integrity Check

15 67.8 Incorrect Authorization

16 66.0 Inclusion of Functionality from Untrusted Control Sphere

17 65.5 Incorrect Permission Assignment for Critical Resource

18 64.6 Use of Potentially Dangerous Function

19 64.1 Use of a Broken or Risky Cryptographic Algorithm

20 62.4 Incorrect Calculation of Buffer Size

21 61.5 Improper Restriction of Excessive Authentication Attempts

22 61.1 URL Redirection to Untrusted Site ('Open Redirect')

23 61.0 Uncontrolled Format String

Таблица 1.2 Классификация CWE ТОР-25 (продолжение)

Ранг Кол-во баллов Наименование

24 60.3 Integer Overflow or Wraparound

25 59.9 Use of a One-Way Hash without a Salt

Такая классификация фактически констатирует лишь сложившуюся ситуацию в данной области, не содержит общие признаки происхождения и проявления уязвимостей, не выстраивает классифицируемые уязвимости в иерархический список, который позволил бы произвести наследование свойств по иерархии с целью более эффективного обнаружения уязвимостей и их устранения.

При этом в представленном списке ТОР-25 наиболее опасных попало большое число уязвимостей Web-пpилoжeний, хотя здесь же отмечается, что по степени опасности на лидирующих позициях находятся уязвимости, возникающие при разработке компилируемых приложений.

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

1.2. Программные средства автоматического обнаружения и блокирования уязвимостей

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

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

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

• Средства предотвращения использования уязвимых мест (надстройки к компиляторам), которые вставляют в результирующую программу код, препятствующий возникновению ошибок во время исполнения.

• Средства управления поведением (гип-йте-анализаторы), которые производят мониторинг программы при работе и позволяют либо ограничить потенциальный вред, либо блокировать определенные операции, представляющие опасность. Как правило, реализуются в виде надстроек к ядру.

Графически эту иерархию можно представить следующим образом (рис. 1.2):

Рис. 1.2. Классификация средств противодействия уязвимостям Рассмотрим функционирование этих средств подробнее.

1.2.1. Статические и динамические сканеры уязвимостей

Статические сканеры уязвимостей

Анализ структуры и функционирования средств поиска и устранения уязвимостей начнём с определения основных требований к ним. Статический анализатор должен удовлетворять следующим основным требованиям:

1) анализатор должен быть восприимчивым (обнаруживать как можно большую часть небезопасных команд и функций);

2) анализатор должен быть избирательным, то есть выдавать как можно меньше ложных сообщений о небезопасности функции;

3) анализатор должен работать достаточно быстро;

4) анализатор должен, по возможности, предлагать альтернативы небезопасным функциям;

5) анализатор должен иметь возможность гибкой настройки списка небезопасных функций и степени их опасности (для возможности установки различной глубины сканирования). Список функций должен быть собран с помощью открытых обсуждений целым сообществом специалистов [37].

Статистический анализ кода, написанного на языке, относящемуся к семейству Си, сталкивается с рядом проблем:

1. Благодаря либеральной природе языка С код плохо подходит для статического анализа - обилие указателей и команд переходов сильно затрудняют глубокий анализ кода.

2. Дополнительные возможности С++ делают его еще более сложным: обработка динамических вызовов и шаблонов - весьма сложная задача для анализатора.

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

В связи с этим разработка эффективных средств, удовлетворяющих перечисленным выше требованиям, становится задачей очень трудной, и невоз-

можно предложить универсальное средство, способное обнаруживать уязвимости разных типов.

Широко распространены следующие статические сканеры исходного кода: RATS, Flawfmder, Splint, ITS4 и другие [34, 38-41]. Эти сканеры предназначены для проверки исходного текста программ, написанных, в основном, на С и С++, но также используются для поиска уязвимостей в программах на языках Python, Perl и PHP. Программы способны обнаруживать уязвимости, потенциально приводящие к переполнению буфера, возникновению состязания условий, ошибки форматной строки. Данные анализаторы способны упорядочивать подозрительные конструкции по степени опасности на основании входных параметров, передаваемых им при запуске. Списки уязвимых конструкций каждый производитель формирует сам - либо основываясь на мнении экспертов, либо предоставляя их открытому обсуждению. В таблице 1.3 приведены сравнительные характеристики некоторых сканеров уязвимостей.

Таблица 1.3. Сравнительные характеристики сканеров уязвимостей

Наименование программного продукта Обнаруживаемые уязвимости

Переполнение буфера Форматная строка Состязания условий Уязвимости интерпретаторов

ITS4 + + + -

RATS + - + -

FlawFinder + + + +

BOON + - - -

Splint + - - -

Cqual - + - -

Еще одним способом обнаружения возможных уязвимостей является использование дополнительных опций компилятора. Например, для обнаружения уязвимости форматной строки в исходном коде для самого популярного на настоящее время компилятора gcc, существует целый ряд дополнительных опций, который позволяет обнаружить уязвимость.

Рассмотрим подобные опции, а также возможности, которые эти опции предоставляют. -№:£с>гта1:

Данная опция осуществляет при компиляции проверку на соответствие типов аргументов типам, указанным в строке формата. Также с ее помощью может быть проведена проверка на отсутствие аргументов для строки формата для некоторых функций, для этого надо использовать опцию -Wnonnul вместе с опцией -Wf ormat.

-Wformat-nonliteral Данная опция позволяет проводить проверку на отсутствие постоянной строки формата.

-Wformat-security При использовании данной опции происходит поиск функций семейства printf () на наличие неконстантных строк формата, либо на отсутствие таковых вообще

-Wformat=2

Использование данной опции эквивалентно совокупности опций

-Wformat -Wformat-nonliteral -Wformat-security Однако анализ только исходного кода программы не всегда даёт полную картину о наличии в нём потенциальных уязвимостей в нём. Например, трудно поддаются статическому анализу уязвимости, связанные с переполнением целого. Для того чтобы уменьшить вероятность пропуска уязвимости, дополнительно могут использоваться динамические сканеры уязвимости.

Динамические сканеры уязвимостей

В отличие от статических, динамические сканеры уязвимости используются для обнаружения уязвимостей не в исходном коде, а в уже скомпилированном файле. Для этого производится так называемый фаззинг (англ. fuzzing), т.е. запуск тестируемой программы с различными входными данными, которые зачастую могут привести к ошибке, например, особо длинными значениями строковых переменных или чисел, близких к разрядным ограничениям [42]. Могут также передаваться строки, содержащие спецификаторы %п для выявления уязвимостей форматной строки.

Из динамических сканеров уязвимостей хорошо известны программы Sharefuzz, OWASP JBroFuzz, Bunny the Fuzzer. Эти сканеры могут работать по протоколам HTTP, LDAP, SOAP и позволяют выявить уязвимости интерпретируемых языков (такие как Cross site scripting, вставка SQL), переполнение буфера, уязвимость форматной строки и другие уязвимости [34, 43, 44].

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

Статический и динамический анализ имеют большую вычислительную сложность. Эксперты отмечают, что, фактически, с ростом сложности программного продукта динамический анализ становится неразрешимой задачей и превращается в формальную процедуру, отнимающую много времени и ресурсов у разработчиков [45].

Для более надёжной защиты следует применять помимо сканеров уязвимостей ещё и другие методы защиты, в частности, использовать библиотеки, обеспечивающие безопасное использование функций, модификации компилятора, обеспечивающие компиляцию более защищённого кода, и модификации ядра, содержащие возможности контроля поведения программы.

1.2.2. Надстройки к компилятору

Все сканеры исходного кода обладают рядом недостатков - необходимостью многократного прохода по коду, низкой производительностью, трудностью определения критериев уязвимости [46].

Вместо того чтобы искать уязвимости в исходном коде, можно использовать другой подход - на этапе компиляции автоматически добавлять безопасные «обёртки» для опасных мест. Этот подход избавлен от проблем, связанных с длительностью обработки и достоверностью срабатывания. На его основе созданы различные инструменты, которые во время компиляции вставляют в программу «ловушки» для обнаружения попыток использования дефектов её

защиты. Эти средства интегрируются в цепочку инструментария компиляции так, что программы могут компилироваться обычным образом и становятся защищенными. Время дополнительной обработки при компиляции, как правило, незначительно. Однако эти средства обладают рядом недостатков:

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

необходимость вставки разработчиком в программы специальных символов, по которым анализатор сможет проверить корректность замысла программиста;

снижение производительности готовой программы (иногда - до нескольких десятков раз);

необходимость перекомпиляции готовой программы.

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

При разработке программ для повышения защищённости используются следующие методы:

1) сторожевые байты;

2) копирование адреса возврата в защищённый стек;

3) перемешивание переменных таким образом, чтобы все символьные строки были расположены в стеке перед другими переменными, что в случае переполнения не приведёт к потере пользовательских данных;

4) опережающее вычисление количества параметров для функций, работающих с форматными строками;

и другие способы.

В таблице 1.4 приведен сводный список программных средств рассматриваемого типа с указанием применяемых способов повышения защищённости.

Наименование средства Применяемые методы защиты

Stackguard Помещение перед адресом возврата в стек нескольких байт, которые невозможно ввести в клавиатуры: Ох(Ю, 0x00, ОхОС

РгоРоНсе Развитие идеи Stackguard - помещение дополнительных байтов перед сохраняемым прологом функции, а также сортировка локальных переменных так, чтобы массивы оказались выше других переменных, что снижает вероятность их повреждения в случае переполнения

ЗйюквЫеИ Копирование адреса возврата в область, недоступную для переполнения [47]

РотгОиагё Шифрование указателей в компилируемых программах

РогпШОиа^ Расчет количества параметров функции форматированного вывода на этапе компиляции

ЫМотШ Прерывает небезопасные вызовы функций, осуществляющих форматирующий вывод

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

Данные программы призваны сделать невозможным процесс эксплуатирования уязвимости за счёт автоматизированного изменения её кода на этапе компиляции. Другим способом повышения безопасности работы программы в среде является изменение механизма работы ядра, когда действия приложения контролируются и при необходимости ограничиваются силами ОС. Хотя этот метод является универсальным, и теоретически подходит для любых приложений, но на практике такое решение не всегда гибко и не всегда поддерживает обратную совместимость (могут возникнуть проблемы с работой приложений, написанных без учёта таких ограничений).

1.2.3. Надстройки к ядру

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

рактерны. Также в отдельную группу можно выделить изменённые динамически подключаемые библиотеки, которые перехватывают вызовы к обычным библиотечным функциям и передают управление на свои собственные, безопасные функции. К таким библиотекам относятся Libsafe и libverify. Библиотека Libsafe версии 2.0 может предотвращать использование дефектов, приводящих к переполнению буфера (путём определения факта записи за пределы рассчитанной перед выполнением границы массива) и некорректному использованию строки формата операнда print f путём прекращения выполнения функции [48]. В свою очередь, libverify защищает адрес возврата при вызове функций подобно тому, как это реализовано в StackGuard.

Из надстроек ядра, обнаруживающих попытки атаки на программы, можно отметить RaceGuard, который определяет попытки состязаний за доступ к файлу. Два последовательных обращения различных процессов к файлу при изменении атрибутов файла надстройка RaceGuard интерпретирует как атаку-состязание, и если такое происходит, она прерывает вызов open () и вызывает исключение.

Надстройки ядра, обеспечивающие ограничения возможностей недоверенного приложения, основаны на принципе минимальных привилегий, согласно которому каждая операция должна выполняться с минимально необходимым набором прав и доступов. Стандартная схема прав и доступов в Unix чересчур проста и зачастую недостаточно выразительна, чтобы определить минимально необходимые привилегии. В целях уменьшения ущерба, который может быть нанесён системе в случае поражения программы эксплойтом, применяются модификации ядра, позволяющие создавать определённую политику работы с чужими файлами, дискреционную политику разрешённых действий для приложений [49] и т.д. Из распространённых систем можно отметить менеджер доступа к системным вызовам Systrace [50], позволяющий системным администраторам указывать, к каким файлам может получить доступ каждая из программ, а также определять, какой системный вызов может выполнять программа, тем самым давая возможность реализовать определенный вид блокировки действий. Аналогично используется система контроля за пользова-

тельскими вызовами Janus [51], которая ограничивает использование системных вызовов недоверенными приложениями, а разрешение этих вызовов должно быть явно произведено одним из модулей программы.

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

Но все программные решения по противодействию уязвимости имеют определённые недостатки. Среди них - необходимость перекомпиляции программы с использованием безопасных надстроек, а это значит, что без наличия исходного кода они будут бесполезны.

1.3. Аппаратные средства блокирования уязвимостей

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

Некоторые из этих работ нашли своё применение в производимых процессорах. Так, например, в отечественном процессоре «Эльбрус» используется модель представления данных в виде объектов, когда один объект защищён от воздействия другого. Для поддержки данной концепции используются аппаратные теги, представляющие собой специальным образом выделенные ссылки на объекты [52]. Однако исследования, проведённые в рамках данной работы, показали, что такой подход не обеспечивает 100% безопасности выполняющихся приложений.

Другие авторы [53] предлагают на уровне процессора обеспечить разделение виртуального адресного пространства между разделами, когда взаимодействие между процессами, выполняющимися в разных разделах, будет строго ограничено. Однако, данный подход не даёт должного эффекта, когда речь идёт о программных уязвимостях исходного кода, так как здесь не встречается взаимодействий между процессами - как правило, всё ограничивается одним

процессом и входными данными, некорректность которых процесс не может правильно обработать.

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

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

Также в данной области исследования привлекает внимание работа [55]. В ней предлагается создание собственного набора инструкций для каждого процесса и описывается процесс эмуляции решения. Однако в статье не раскрывается пути внедрения решения в реально работающую систему, что фактически сводит на нет практическую значимость работы. Преобразование здесь производится программными средствами, но в порядок исполнения программы вносится этап её обратного преобразования с помощью ключа, приложенного к файлу. К недостаткам решения относятся необходимость дублирования в памяти динамически подключаемых библиотек и отсутствие противодействия атакам по схеме «ret to libe», что отмечают сами авторы метода.

В конце 70-х гг. были произведены попытки практической реализации процессора, аппаратно поддерживающего зашифрованные программы. Описание одной из них представлено в [56]. Однако данная работа касается микроконтроллеров со всеми особенностями их использования по сравнению с универсальными микропроцессорами (программы составляются один раз и записываются в постоянную память), а также направлена, в первую очередь, на защиту программы от несанкционированного выполнения на неавторизованном компьютере, а не на решение обратной задачи, когда посторонний код внедряется на целевую машину.

Также есть ряд работ, например, [57, 45], которые направлены не на рандомизацию системы команд, а на внесение случайности в окружение процесса - адреса размещения стека, карты системных вызовов, порядка выборки команд. Однако эти работы не покрывают весь спектр средств защиты от экс-плойтов, нацеленных на переполнение буфера.

Таким образом, анализ существующих работ в области рандомизации системы команд выполняющегося процесса показывает, что работ, способных полностью закрыть все виды уязвимостей переполнения буфера нет, кроме того, все работы имеют существенные недостатки.

А главным недостатком аппаратных средств противодействия эксплойтам является то, что они в основном не доведены до стадии практического применения.

Похожие диссертационные работы по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК

Заключение диссертации по теме «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», Гуров, Дмитрий Валерьевич

Основные результаты работы заключаются в следующем:

1) Предложена классификация уязвимостей. В качестве параметров классификации выбраны:

- синтаксические признаки;

- модифицируемая сущность;

- последствия атаки с использованием уязвимости;

- размещение вредоносной сущности;

- эффективный метод обнаружения.

2) Разработаны модель нарушителя и модель атаки на компьютерную систему, основанной на использовании уязвимости программного кода. Проведено исследование уязвимостей, создающих предпосылки для проведения атак на компьютерные системы. Проанализированы причины появления уязвимостей и механизмы их использования злоумышленниками. Предложены надёжные методы защиты приложений от эксплойтов, использующих конкретные уязвимости. Разработана методика безопасного программирования, включающая в себя правила составления программ, свободных от уязвимостей, примеры фрагментов уязвимого и безопасного кода, перечни опасных и безопасных функций.

3) Предложено применение модели Миллса для оценки количества уязвимостей, оставшихся в программе после завершение этапа тестирования. Произведена оценка повышения защищённости приложений при использовании методики безопасного программирования по сравнению с классическим вариантом разработки прикладного ПО.

4) Предложен аппаратный метод защиты от эксплойтов, основанных на вставке вредоносного кода в программу. Метод реализован посредством стохастического преобразования кодов операций программы во время её нахождения в оперативной памяти. Проведена оценка временных и аппаратных затрат, связанных с реализацией предложенного метода. Проведена оценка трудоемкости реализации вариантов компрометации системы, построенной с применением предлагаемых аппаратных модификаций процессора. Проведена оценка степени перемешивания системы команд в зависимости от шага перемешивания в соответствии с предложенным алгоритмом.

5) Предложен аппаратный метод противодействия эксплойтам, построенным по схеме "ret to libe". Метод основан на преобразовании байтов системной информации, сохраняемой в стек при передаче управления в вызываемую функцию.

6) Выделены критерии эффективности разработанной системы, определены наиболее важные критерии, проведено сравнение выделенных критериев в предложенной системе и в других подобных системах. Показаны преимущества предложенного метода рандомизации по сравнению с другими системами.

7) Рассмотрены вопросы реализации рандомизационного генератора ПСЧ на основе трех блоков стохастического преобразования (^-блоков). Предложена модель генератора ПСЧ, соответствующего двум двоичным примитивным многочленам, определяющим вид функции обратных связей. Обоснован выбор функции выхода генератора ПСЧ.

8) Предложенная классификация уязвимостей позволила провести исследование защищённости вычислительного комплекса «Эльбрус-ЗМ1». Исследование показало, что ВК «Эльбрус-ЗМ1» устойчив к атакам, основанным на разрушении стека, вследствие особенности своей архитектуры, однако уязвим ко всем другим атакам, основанным на других классифицированных уяз-вимостях. Анализ защищённости ВК «Эльбрус-ЗМ1» выполнен в рамках проведения НИР по заказу ЗАО МЦСТ.

9) Рассмотрены возможности повышения защищённости ВК «Эльбрус-ЗМ1», работающего в режиме двоичного транслятора с эмуляцией аппаратных ресурсов процессора. Предложенные меры повышения безопасности таких систем при наличии в их исходном коде уязвимости заключаются в использовании контрольных байтов по границам выделенных буферов, кэшировании свойств файла при открытии, эмуляции расширенной разрядной сетки при работе с целыми числами.

10) Разработана методика обучения безопасному программированию, поддержанная учебно-методическим пособием, комплексом компьютерных обучающих программ и системой тестирования. Методика внедрена на кафедре «Компьютерные системы и технологии» НИЯУ МИФИ.

Основные научные результаты работы были получены в процессе выполнения НИР в рамках Федеральной целевой программы «Научные и научно-педагогические кадры инновационной России» на 2009-2012 гг.

Результаты диссертационной работы опубликованы в 22 печатных трудах, из которых 3 - в журналах, входящих в Перечень ВАК. На разработанные обучающие программные средства получены два свидетельства об официальной регистрации программы для ЭВМ.

Цель работы достигнута. Все поставленные в диссертации задачи решены в полном объёме.

ЗАКЛЮЧЕНИЕ

В результате проведённых исследований решены важные задачи, связанные с повышением защищённости вычислительных систем.

Список литературы диссертационного исследования кандидат технических наук Гуров, Дмитрий Валерьевич, 2012 год

СПИСОК ИСПОЛЬЗОВАННЫХ источников

1. Доктрина информационной безопасности Российской Федерации. -[Электронный ресурс] - Режим доступа:

http ://www.rg.ru/oficial/doc/min_and_vedom/m im_bezop/doctr. shtm

2. Anderson R. Why Cryptosystems fail, ACM Conférence on Computer and Communication Security, 1993. - [Электронный ресурс] - Режим доступа: www.cl.cam.ac.uk/~rjal 4/Papers/wcf.pdf

3. Щербаков А. Разрушающие программные воздействия: М.: Издательство Эдэль, 1993. - 64с.

I

4. Гриняев С.Н. Поле битвы - киберпространство: теория, приёмы, средства, методы и системы ведения информационной войны / С.Н. Гриняев. -Мн.: Харвест, 2004. - 448 с. - (Профессионал).

5. Erickson J. Hacking: The Art of Exploitation. Second Edition: No Starch Press, 2010

6. Разрушающие программные воздействия: Учебно-методическое пособие / Н.П. Васильев, Е.В. Вельмякина, Д.В. Гуров и др.; Под ред.

М.А. Иванова. - М.: НИЯУ МИФИ, 2011. - 328 с.

7. Гуров Д.В., Гуров В.В., Иванов М.А., Шустова Л.И. Технология безопасного программирования и особенности ее преподавания в вузе. — Дистанционное и виртуальное обучение, 09.2010 - С. 35-44.

8. Преймесбергер К. Пять шагов к непрерывной защите данных. -[Электронный ресурс] - Режим доступа: http://www.pcweek.ru/themes/detail.php?ID=106743

9. Никитин M. Microsoft и open-source сражаются за безопасность. // CNews, 2010-08-09. - [Электронный ресурс] - Режим доступа: http://www.cnews.ru/reviews/index.shtml72010/07/16/401264_1

10. Смирнов Н. Итого // «Директор информационной службы» , № 07, 2011. - [Электронный ресурс] - Режим доступа: http://www.osp.ru/cio/2011/07/13009713/

11. Рагимова С. Под щитом или на щите. - [Электронный ресурс] - Режим доступа: http://ko.ru/articles/22686

12. Инциденты, связанные с нарушением безопасности, становятся все серьезнее. - [Электронный ресурс] -

Режим доступа: - http ://algonet.ru/?ID=63 5273

13. Распоряжение Правительства Российской федерации «О концепции Федеральной целевой программы развития образования на 2011-2015 гг.» от 7 февраля 2011 года N163-р. - [Электронный ресурс] - Режим доступа: http ://www.referent.ru/1/173627

14. Ущерб от атак хакеров стремительно увеличивается. - [Электронный ресурс] - Режим доступа: http://www.i-fi.ru/wifi-bezopasnost/uscherb-ot-atak-hakerov-stremitelno-uvelichivaetsya.html

15. Slammer - "электронный Перл-Харбор" и его последствия. - [Электронный ресурс] - Режим доступа: http://old.antivir.ru/inf/news.php?id=396

16. Slammer мог быть гораздо опаснее. - [Электронный ресурс] - Режим доступа: http://old.antivir.ru/inf/news.php7icH396

17. История Conficker. Механизм работы, защита. - [Электронный ресурс] - Режим доступа: http://itnewsonly.com/kiberprestupnost/istoriya-conficker-mehanizm-raboty-zaschita.html

18. Путин В. Быть сильным: гарантии национальной безопасности для России / В. Путин // Российская газета. - Столичный выпуск №5708 (35), 20.02.2012

19. IBM: число критических уязвимостей быстро растет. - [Электронный ресурс] -

Режим доступа: http://www.cnews.ru/news/line/index.shtml72011/10/07/459021

20. Ивановский В., Арсентьев А. Новый виток противостояния // CNews 2011 №55. - С.30-35.

21. Сайты российских банков подвергаются хакерским атакам. - [Электронный ресурс] -

Режим доступа: http://mmr.net.ua/news/newsid/18025/index.html

22. Живич М., Каннингэм Р. Истинная цена программных ошибок. // «Открытые системы» , № 03, 2009. - [Электронный ресурс] - Режим доступа: http://www.osp.ra/os/2009/03/8158133/

23. В Windows 7 найдена критическая уязвимость. - [Электронный ресурс] - Режим доступа: http://vse-new.ucoz.ru/publ/5-l-0-223

24. 17. В Windows Vista и Windows 7 найдена критическая уязвимость -[Электронный ресурс] - Режим доступа: http://www.virusovnet.org/main/786-v-windows-vista-i-windows-7-naydena-kriticheskaya-uyazvimost.html

25. Windows 2000 найдена новая критическая дыра. - [Электронный ресурс] - Режим доступа: http://belvit.com/publ/6-l-0-64'

26. Волков Д. Защита в законе «Открытые системы», № 06, 2009. - [Электронный ресурс] - Режим доступа: http://www.osp.ru/os/2009/06/10038122/

27. Марков А., Миронов С., Цирлов В. Выявление уязвимостей в программном коде // «Открытые системы», № 12, 2005. - [Электронный ресурс] -Режим доступа: http://www.osp.ru/os/2005/12/380655/

28. Выполнение произвольного кода в Google Chrome. - [Электронный ресурс] - Режим доступа: http://www.securitylab.ru/vulnerability/409035.php

29. Уязвимость в реализации TCP/IP в Microsoft Windows. - [Электронный ресурс] - Режим доступа: http://www.securitylab.ru/vulnerability/409824.php

30. SQL-инъекция в colord. - [Электронный ресурс] - Режим доступа: http://www.securitylab.ru/vulnerability/410514.php

31. Множественные уязвимости в ядре Linux. - [Электронный ресурс] -Режим доступа: http://www.securitylab.ru/vulnerability/205157.php

32. В Skype обнаружена уязвимость. - [Электронный ресурс] - Режим доступа: http://www.xakep.ru/post/56558/default.asp

33. Уязвимости. - [Электронный ресурс] - Режим доступа: http ://www. securitylab.ru/vulnerability/

34. Харитонова Е. Поиск уязвимостей в программах с помощью анализаторов кода. — [Электронный ресурс] - Режим доступа: http://www.codenet.ru/progr/other/code-analysers.php

35. Лукацкий А.В. Выявление уязвимостей компьютерных сетей. -[Электронный ресурс] -

Режим доступа: http ://citforum.ru/internet/securities/vulnerability, shtml

36. 2011 С WE/SANS Top 25 Most Dangerous Software Errors. - [Электронный ресурс] - Режим доступа: shttp://cwe.mitre.org/top25/

37. Код нараспашку. - [Электронный ресурс] - Режим доступа: http://www.ichip.ru/stati/testy-i-obzory/2010/ll/kod-naraspashku

38. RATS. - [Электронный ресурс] -

Режим доступа: https://www.fortify.com/ssa-elements/threat-intelligence/rats.html

39. Flawfinder. - [Электронный ресурс] -Режим доступа: http://www.dwheeler.com/flawfinder/

40. Splint. - [Электронный ресурс] -

Режим доступа: http://www.dwheeler.com/flawflnder/

41. ITS4: Software Security Tool. - [Электронный ресурс] - Режим доступа: http://www.cigital.com/its4/

42. Амини П., Саттон М., Грин A. Fuzzing: исследование уязвимостей методом грубой силы - М.: Символ-Плюс, 2009. - 560с.

43. Фаззинг, фаззить, фаззер: ищем уязвимости в программах, сетевых сервисах, драйверах // Хакер № 7/10 (138), с. 32-37. - [Электронный ресурс] -Режим доступа: http://www.xakep.ru/post/52726/

44. Fuzzing. Технология охоты за багами. - [Электронный ресурс] - Режим доступа: http://www.vr-online.ra/?q=content/fuzzing-tehnologija-ohoty-za-bagami-752

45. Марков A.C., Щербина С.А. Испытания и контроль программных ресурсов // InformationSecurity, 2003, № 6.

46. Карпов А., Рыжков Е. Статический анализ кода для верификации 64-битных приложений. - [Электронный ресурс] - Режим доступа: http://www.codenet.ru/progr/cpp/64bit/code-verification.php

47. Stack shield. [Электронный ресурс]. - Режим доступа: http://www.angelfire.com/sk/stackshield/

48. Эффективное использование GNU make. [Электронный ресурс]. -Режим доступа: http://www.codenet.ru/progr/cpp/gmake.php

49. Девянин П.Н. Модели безопасности компьютерных систем: Учеб. пособие для студ. Высш. Учеб. Заведений / Петр Николаевич Девянин. - М.: Издательский центр «Академия», 2005. - 144 с.

50. Изучаем политики systrace. - [Электронный ресурс] - Режим доступа: http://www.nestor.minsk.by/sr/2003/08/3 0812.html

51. Program confinement with system call censors. - [Электронный ресурс] -Режим доступа: http://www.porcupine.org/forensics/forensic-discovery/chapter6.html

52. Ким А.К., Волконский В.Ю., Груздов Ф.А. и др. Защищенное исполнение программ на базе аппаратной и системной поддержки архитектуры «Эльбрус». - [Электронный ресурс] -

Режим доступа: www.mcst.ru/doc/volkonsky_101110.doc

53. Армстронг Б., Бейд С., Бутчер Д. и др. Безопасность логических разделов в системах на базе процессора POWER5. - [Электронный ресурс] - Режим доступа: http://www-03.ibm.com/systems/ru/resources /systems_ru_p_pdf_sptiLPARSecuritywp031306_RUS_A5 .pdf

54. Gaurav S. К., Angelos D. Keromytis, Vassilis Prevelakis. Countering Co-delnjection Attacks With Instruction-Set Randomization. - [Электронный ресурс]

- Режим доступа:

http://www.cs.columbia.edu/~gskc/publications/isaRandomization.pdf

55. Barrantes E.G., Ackley D.H., Forrest S. et al. Randomized Instruction Set Emulation to Disrupt Binary Code Injection Attacks. - [Электронный ресурс] -Режим доступа: http://portal.acm.org/citation.cfm?id=948147

56. R. M. Best. Microprocessor for executing enciphered programs, U.S. Patent No. 4 168 396, September 18, 1979

57. Monica Chew, Dawn Song. Mitigating Buffer Overflows by Operating System Randomization. - [Электронный ресурс] - Режим доступа: www.cs.berkeley.edu/~dawnsong/papers/syscall-tr.ps

58. М.А. Иванов, А.А. Ковалев, Н.А. Мацук и др. Стохастические методы и средства защиты информации в компьютерных системах и сетях / Под редакцией И. Ю. Жукова - М.:Кудиц-Пресс, 2009. - 512 с.

59. Engle S., Bishop М. A Model for Vulnerability Analysis and Classification

- [Электронный ресурс] - Режим доступа: http://www.cs.ucdavis.edu/research /tech-reports/2008/CSE-2008-5.pdf

60. ГОСТ Р ИСО/МЭК 12207—99 (ГОСТ Р - 1999). Информационные технологии. Процессы жизненного цикла программных средств.

61. Knight Е. Computer Vulnerabilities. - [Электронный ресурс] - Режим доступа: http://www.ussrback.com/docs/papers/general/compvuln_draft.pdf

62. Стрельченко Ю. Опубликован апрельский рейтинг языков программирования. - [Электронный ресурс] - Режим доступа: http://soft.compulenta.ru/523692/

63. Лафоре Р. Объектно-ориентированное программирование с С++. Классика Computer Science. 4-е изд. - Спб.: Питер, 2003. - 928с.: илл.

64. Prasad М., Chiueh Т. A Binary Rewriting Defense against Stack based Buffer Overflow Attacks. - [Электронный ресурс] - Режим доступа: http://www.pubzone.org/dblp/conf/usenix/PrasadC03

65. Rationale for International Standard - Programming Languages - C. -[Электронный ресурс] - Режим доступа: http://www.open-std.org/jtcl/sc22/wgl4 /www/C99RationaleV5.10.pdf

66. Richarte G. Four different tricks to bypass StackShield and StackGuard protection. [Электронный ресурс] -

http://www.coresecurity.com/fdes/attachments/StackGuard.pdf

67. Cowan С., Pu С, Maier D. et al. Stackguard: Automatic adaptive detection and prevention of buffer-overflow attacks. In 7th USENIX Security Conference, 1998. - [Электронный ресурс] - Режим доступа: http://www.usenix.org/ publica-tions/library/proceedings/sec98/ full__papers/cowan/ cowan.pdf

68. Stack shield. - [Электронный ресурс]. - Режим доступа: http -.//www.angelfire .com/ sk/stackshield/

69. Fayolle P., Glaume V. A buffer overflow study. Attacks and defenses. [Электронный ресурс] - Режим доступа: http://www.shell-storm.org/papers/ files/539.pdf

70. Динамическое связывание в Windows и Linux. - [Электронный ресурс] - Режим доступа: http://www.securitylab.ru/analytics/278480.php

71. Piromsopa К., Chiamwongpaet S. Secure Bit Enhanced Canary: Hardware Enhanced Buffer-Overflow Protection". IFIP International Conference on Network and Parallel Computing, 2008. - C. 125-131

72. Скрытая угроза: недекларированные возможности ПО // Information Security/Информационная безопасность, №4, 2011. - С.22-23

73. Эриксон Дж. Хакинг: искусство эксплойта. 2-е издание. - Пер. с англ. - СПб.: Символ-Плюс, 2010. - 512 с.

74. Howard, LeBlanc, Viega. The 19 Deadly Sins of Software Security, глава 2. - [Электронный ресурс] - Режим доступа: http://www.devx.com/assets/ download/14034.pdf

75. Целочисленное переполнение: защита. [Электронный ресурс]. - Режим доступа: http://securityvulns.ru/articles/digitalscream/integer2.asp

76. Cowan С., Beattie S., Wright С., Kroah-Hartman G. Kernel Protection From Temporary File Race Vulnerabilities. [Электронный ресурс]. - Режим доступа: http://www.usenix.org/events/sec01/cowanbeattie.html

77. Kelly Jackson Higgins. SANS Report: 60% Of All Attacks Hit Web Applications, Most In The U.S. - [Электронный ресурс] - Режим доступа: http ://www.darkreading. com/ security/app-security/showArticle.jhtml?articleID=220000401

78. How to write SQL injection proof PL/SQL. - [Электронный ресурс] -Режим доступа: http://www.oracle.com/technology/tech/pl_sql/pdf/ how_to_write_inj ection_proofjplsql .pdf

79. Бобровский С. Ошибкам - бой! - [Электронный ресурс] - Режим доступа: http://www.pmprofy.ru/content/rus/43/431-article.asp

80. ГОСТ Р ИСО/МЭК 9126-93 «Оценка программной продукции. Характеристики качества и руководства по их применению»

81. ГОСТ 28806-90 «Качество программных средств. Термины и определения»

82. Майерс Г. Надежность программного обеспечения. - М.: Мир, 1980. -360 с.

83. Teichroev D. Survey of Languages for Stating Requirements for Computer-Based Information Systems, Proceedings of the 1972 Fall Joint Computer Conference. Montvale, N.J.: AFIPS Press, p.p. 1203-1224.

84. Kelly Jackson Higgins. SANS Report: 60% Of All Attacks Hit Web Applications, Most In The U.S. - [Электронный ресурс] - Режим доступа: http ://www.darkreading. com/security/app-security/showArticle.jhtml?articleID=220000401

85. Гуров B.B. Архитектура микропроцессоров. - M.: Интернет-Университет Информационных Технологий: БИНОМ. Лаборатория знаний, 2010.-272 с.

86. Асосков A.B., Иванов М.А., Мирский A.A. и др. Поточные шифры. -М.: КУДИЦ-ОБРАЗ, 2003. - 336 с. - (СКБ - специалисту по компьютерной безопасности)

87. Реверсивное программирование. - [Электронный ресурс] - Режим доступа: http://netcode.ru/cpp/?lang=&katID=l&skatID=l&artID=2

88. Вентцель Е.С. Теория вероятностей: Учеб. для вузов. — 6-е изд. стер. — М.: Высш. шк., 1999. — 576 с.

89. Команды передачи управления. - [Электронный ресурс]. - Режим доступа: http://www.osinavi.ru/asm/4.php

90. Робачевский A. M., Немюгин C.A., Стесик O.JI. Операционная система UNIX. - 2-е изд., перераб. и доп. - Спбю: БХВ-Петербуг, 2005. - 656с.: ил.

91. Гуров В.В., Ленский О.Д., Соловьев Г.Н., Чуканов В.О. Структура и организация вычислительного процесса в ЭВМ. - М.: МИФИ, 2003. - 108 с.

92. Барский А.Б. Параллельные информационные технологии / Учебное пособие — М.: Интернет-Университет Информационных Технологий; БИНОМ. Лаборатория знаний, 2007. — 503 с.

93. Иванов М.А., Чугунков И.В. - Теория, применение и оценка качества генераторов псевдослучайных последовательностей. - М: Изд-во "Кудиц-Образ", 2003 г.

94. Алаева С.С., Бобков, С.П., Ситанов C.B. Администрирование в информационных системах: учеб. пособие / Иван. гос. хим.-технол. ун-т. Иваново, 2010.-52 с.

95. Саати Т. Принятие решений. Метод анализа иерархий. - М.: Радио и связь, 1993.-278 с.

96. Саати Т. Принятие решений. При зависимостях и обратных связях: аналитические сети. Пер. с англ. / Науч. ред. A.B. Андрейчиков, О.Н. Андрей-чиков. - М.: Издательство ЖИ, 2008. - 360 с.

97. Беллман Р. Введение в теорию матриц. М.: Мир, 1969 г.

98. Фергюсон Н., Шнайер Б. Практическая криптография: Пер. с англ. М.: Издательский дом «Вильяме», 2005. - 424 с.

99. Kelsey J., Schneier В., Ferguson N. Yarrow-160: Notes on the Design and Analysis of the Yarrow Cryptographic Pseudorandom Number Generator - [Электронный ресурс] - Режим доступа: http://www.schneier.com/paper-yarrow.html

100. Компания ЗАО «МЦСТ». - [Электронный ресурс] - Режим доступа: http://www.mcst.ru/

101. Федор Груздев, Владимир Волконский, Юлий Сахин, Александр Ким «Эльбрус» сегодня // «Открытые системы», № 2, 2009. - [Электронный ресурс] - Режим доступа: www.osp.ru/os/2009/02/7314081/

102. Кузьминский М. Куда идет «Эльбрус» // «Открытые системы», № 07, 2011.

103. Cowan С., Beattie S., Wright S., Kroah-Hartman G. RaceGuard: kernel protection from temporary file race vulnerabilities. - [Электронный ресурс] - Режим доступа: www.usenix.org/events/sec01/cowanbeattie.html

104. Дорофеев Н. После ММХ. - [Электронный ресурс] - Режим доступа: http://www.ixbt.com/cpu/beyond_mmx.html

105. Ким А.К., Волконский В.Ю., Сахин Ю.Х. и др. Микропроцессорные вычислительные комплексы с архитектурой Эльбрус и их развитие. - [Электронный ресурс] - Режим доступа: www.mcst.ru/doc/mgu_it-2008.doc

Юб.РеагРС - PowerPC Architecture Emulator. - [Электронный ресурс] -Режим доступа: http://pearpc.sourceforge.net/

107. The cross platform IA-32 emulator. - [Электронный ресурс] - Режим доступа: http://bochs.sourceforge.net/

108.QEMU. - [Электронный ресурс] - Режим доступа: http://wiki.qemu.org/ Main_Page

109. Basilisk II. - [Электронный ресурс] -Режим доступа: http://basilisk.cebix.net/

110. SheepShaver. - [Электронный ресурс] -Режим доступа: http://sheepshaver.cebix.net/

111. Инциденты, связанные с нарушением безопасности, становятся все серьезнее. - [Электронный ресурс] - Режим доступа: http://www.securitylab.ru/ news/304163 .php?sphrase_id=800169

112. Соловов A.B. Дидактический анализ проблематики электронного обучения. - Труды Международной конференции "IEEE International Conference on Advanced Learning Technologies". Казань: КГТУ, 2002. - С. 212-216

ПЗ.Аванесов B.C. Теория и методика педагогических измерений. -[Электронный ресурс] - Режим доступа http://testolog.narod.ru

114. Лазарев Д.В. Качество и надежность программного обеспечения. -"Новые информационные технологии". Тезисы докладов XIII Международной студенческой школы-семинара - М.: МГИЭМ, 2005 - 361 с. - [Электронный ресурс] - Режим доступа: http://nit.miem.edu.ru/2005/section6/6.htm

115. Заваловская O.K. Оценка качества программных продуктов на основе теории нечетких множеств. - "Новые информационные технологии". Тезисы докладов XIII Международной студенческой школы-семинара - М.: МГИЭМ, 2005 - 361с. - [Электронный ресурс] - Режим доступа: http://nit.miem.edu.ru/2005/section6/6.htm

116. Жуков Д.О., Бородачёв Н.М., Белоусов A.A. и др. Теоретические, инженерные и практические аспекты обеспечения качества образования и управления знаниями. - М.: Машиностроение, 2011. - 753 с.

117. Гуров В.В. Разработка методов и средств анализа и обеспечения качества программных систем учебного назначения. - Диссертация на соискание ученой степени к.т.н по специальности 05.13.11 М.: МИФИ, 2008 г.

118. Гуров Д.В., Киненбаев С.И., Лапшов М.В., Матюшенков Н.В.- Комплекс электронных уроков по курсу «Основы теории компьютеров» Научная сессия МИФИ - 2003. Сборник научных трудов. Т. 12: Информатика и процессы управления. Компьютерные системы и технологии. - М., 2003. - С. 214215.

119. Гуров Д.В., Матвеев А.Н., Матюшенков Н.В. и др. Развитие комплекса компьютерных обучающих программ по курсу «Организация ЭВМ» - Научная сессия МИФИ-2004. Сборник научных трудов. В 15 томах. Т. 12. Ин-

форматика и процессы управления. Компьютерные системы и технологии. -М.: МИФИ, 2004. 228 с. - С. 195-196.

120. Гуров В.В., Гуров Д.В., Матвеев А.Н. и др. Компьютерный учебник по курсу «Организация ЭВМ». Версия 1.3 Научная сессия МИФИ-2004. VIII выставка-конференция "Телекоммуникации и новые информационные технологии в образовании". Каталог. М.: МИФИ, 2004. - С. 41

121. Гуров Д.В. Разработка электронных уроков для обучения специальным дисциплинам. - Современные проблемы информатизации в непроизводственной сфере и экономике: Сб. трудов. Вып. 10/ Под ред. д.т.н., проф. О.Я.Кравца. - Воронеж: Изд-во «Научная книга», 2005. - 140 с. - С. 37-38

122. Гуров Д.В. Использование метода проверки логики результата при анализе ответа пользователя. - Научная сессия МИФИ - 2005. Сборник научных трудов. - М. : МИФИ, 2005. - Т.14: Конференция "Молодежь и наука". Компьютерные науки. Информационные технологии. Экономика и управление. - С. 94-95. - Секция: Компьютерные системы и технологии.

123. Гуров Д.В., Гуров В.В., Кузнецова П.В., Михайлов Д.М. Использование компьютерных обучающих программ при обучении техническим дисциплинам. - Образование через науку. Сборник тезисов докладов Международного симпозиума " Образование через науку", посвященную 175-летию МГТУ им. Н.Э.Баумана. - М.: Изд. МГТУ им. Баумана, 2005. 676 с. - С. 44-45.

124. Гуров Д.В., Гуров В.В., Кузнецова П.В., Михайлов Д.М. Система дистанционного образования на основе сетевых технологий. - Современные информационные технологии и ИТ-образование. Сборник докладов Первой Международной научно-практической конференции. Под ред. проф. В.А.Сухомлина. - М.:МАКС Пресс, 2005. 892 стр. - С. 780-785.

125. Гуров Д.В., Гуров В.В., Криводаев A.B., Матюшенков Н.В. Пакет компьютерных обучающих программ по курсу "Организация ЭВМ" - Свидетельство об официальной регистрации программы для ЭВМ №2007611495. Зарегистрировано в реестре программ для ЭВМ 10.04.2007.

126. Гуров Д.В., Гуров В.В. Использование электронных образовательных ресурсов в учебном процессе технического вуза. - Труды Всероссийской научно-практической конференции с международным участием «Информационные технологии в обеспечении нового качества высшего образования» (14-15 апреля 2010 г., г. Москва). - М.: Исследовательский центр проблем качества подготовки специалистов, 2010. - С. 53-58.

127. Гуров В.В., Гуров Д.В., Кузнецова П.В., Михайлов Д.М. Система дистанционного образования на основе сетевых технологий. - Разработка инструментальных средств подготовки и проведения электронного тестирования. Современные информационные технологии и ИТ-образование. Сборник докладов

Первой Международной научно-практической конференции. Под ред. проф. В.А.Сухомлина. - М.:МАКС Пресс, 2005. 892 стр. - С. 129-130.

128. Гуров Д.В. Электронный урок "Синтез комбинационных схем". / Научи. рук. Гуров В.В. - Научная сессия МИФИ-2004. Сборник научных трудов. В 15 томах. Т. 14. Конференция "Молодежь и наука". Компьютерные науки. Информационные технологии. - М.: МИФИ, 2004. 180с. - С. 89.

129. Гуров В.В., Гуров Д.В., Кузнецова П.В, Михайлов Д.М. Использование компьютерных обучающих программ в курсе общей физики. Новые информационные технологии и системы: Труды VI Международной научно-технической конференции - 4.2. - Пенза, ПГУ, 2004 г. - С. 157-161

130. Гуров В.В., Гуров Д.В., Кузнецова П.В, Михайлов Д.М. Применение компьютерных технологий в лабораторном практикуме по общей физике. Научная сессия МИФИ-2005. Сборник научных трудов. В 15 томах. Т.б.Проблемы университетского образования. Актуальные процессы гуманитарных наук. -М.: МИФИ, 2005. 180с. - С. 28-29

131. Гуров В.В., Гуров Д.В., Кузнецова П.В, Михайлов Д.М. Компьютерные обучающие программы по курсу общей физики. Научная сессия МИФИ-2005. 9-я выставка-конференция "Телекоммуникации и новые информационные технологии в образовании". Каталог. М.: МИФИ, 2005. - С.28

132.Вавренюк А.Б., Гуров В.В., Гуров Д.В. и др. Система компьютерного тестирования. - Научная сессия МИФИ-2006. 10-я выставка-конференция "Телекоммуникации и новые информационные технологии в образовании". Каталог. М.: МИФИ, 2006. - С.9

133. Гуров Д.В., Кузнецова П.В., Михайлов Д.М. Интерактивная система тестирования на основе компьютерных технологий ИСТОК. - Всероссийская выставка научно-технического творчества молодежи НТТМ-2006. Официальный каталог.-М.: ВВЦ, 88с. - С. 52

134. Гуров Д.В., Кузнецова П.В., Михайлов Д.М. Контроль знаний через сеть Internet и оптимизация конструирования тестов. Современные технологии и задачи управления, автоматики и обработки информации: Труды XV Международного научно-технического семинара. Сентябрь 2006 г., Алушта. - М.: МИФИ, 2006, 368 с. - С.178.

135. Гуров В.В., Гуров Д.В., Кузнецова П.В., Михайлов Д.М. Программа «Интерактивная система тестирования на основе компьютерных технологий ИСТОК». - Свидетельство об официальной регистрации программы для ЭВМ №2006613218. Зарегистрировано в реестре программ для ЭВМ 13.09.2006.

Обратите внимание, представленные выше научные тексты размещены для ознакомления и получены посредством распознавания оригинальных текстов диссертаций (OCR). В связи с чем, в них могут содержаться ошибки, связанные с несовершенством алгоритмов распознавания. В PDF файлах диссертаций и авторефератов, которые мы доставляем, подобных ошибок нет.