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

АНАЛИЗ И ИССЛЕДОВАНИЕ МЕТОДОВ И СРЕДСТВ ОБНАРУЖЕНИЯ НЕДЕКЛАРИРОВАННЫХ ВОЗМОЖНОСТЕЙ

О.Д. Темнов

Научный руководитель - д.т.н., профессор Л.Г. Осовецкий

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

Введение

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

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

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

Методы обнаружения недекларированных возможностей

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

Ограничение ущерба

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

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

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

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

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

Устранение ошибок

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

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

Комплексные кубические покрытия

Основная сложность вычислительных процессов зависит не от количества линейных операторов, а от числа безусловных и условных точек ветвления процесса, которые

и определяют логику принятия решений. Все команды конкретного процессора делят на две категории:

• команды обработки данных (команды пересылки, арифметические команды, команды сдвигов, команды обработки десятичных знаков и т.д.);

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

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

Обозначив подобный граф БG(P), рассматривают всевозможные пути выполнения программы, которые будут соответствовать путям на графе БG(P), соединяющим начальную и конечную вершину. Каждый путь I на графе БG(Р) состоит из последовательности условных и линейных вершин. Условные вершины определяют потоки управления или логику программы, а линейные вершины определяют вычисление переменных или выполнение других линейных операций.

Путь I можно задать булевыми переменными, описывающими условия прохождения данного пути и принимающими значение 1 или 0 в зависимости от выполнения или невыполнения условия. Получив таким образом логические условия, заданные булевыми переменными, можно построить кубическое покрытие С(Р) ={с], с2 ,..., сп}, где каждый куб сл содержит в себе условия, определяющие путь Ъ на графе БG(P). Координаты куба сл могут принимать значения 0, 1 и x (значение x соответствует условию, не влияющему на формирование данного пути). Покрытие С (Р) полностью соответствует определению покрытия в исчислении кубических комплексов, поэтому к покрытиям С (Р) и кубам сл применимы алгебро-топологические операции:

пересечение (П), звездчатое произведение (*) и вычитание (#) [8]. Эти операции позволяют устанавливать соотношения включения, поглощения и эквивалентности между различными покрытиями.

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

получают так называемое комплексное кубическое покрытие С (Р) . В комплексном кубическом покрытии каждому кубу Сл из покрытия С(Р) ставится в соответствие множество Р, содержащее результат выполнения программы. В широком смысле множество Р\ содержит линейную последовательность операторов, через которые проходит путь ¡1. В более узком определении Р может быть формулой или набором формул, определяющих выходную переменную функции или глобальную переменную программы [11].

Применение комплексных кубических покрытий

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

Рис. 2 Применение кубических покрытий

Верификация

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

• иногда программный продукт может разрабатываться различными группами проектантов. В этом случае можно верифицировать различные варианты реализаций между собой для повышения объективности и качества выбора конкретной версии;

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

Выявление недекларированных возможностей

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

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

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

Исследование вирусов

Как и при поиске недекларированных возможностей, исследуемым объектом является логика работы программ. Предполагается использовать разницу кубических покрытий зараженного и «чистого» экземпляров программы. Найденная разница отображает логику вируса. В дополнении с данными о командах обработки данных назовем ее сигнатурой вируса. Используя подобные сигнатуры, можно:

• исследовать программы на наличие вирусов;

• исследовать логику работы вируса.

Данное направление требует отдельных исследований и дополнительных экспериментальных данных.

Заключение

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

Литература

1. Грис Д. Наука программирования. М.: Мир, 1984.

2. Жоголев Е.А. Технология программирования. М.: Мир, 1990.

3. Компаниец Р.И. Инструментальные средства анализа и защиты программного кода от использования недокументироаннных возможностей / Конференция «Защита информации в современных условиях - основа сохранения и развития бизнеса», 2006.

4. Лаздин А.В., Немолочнов О.Ф. Метод построения графа функциональной программы для решения задач верификации и тестирования. // Научно-технический вестник СПб ГИТМО (ТУ). Выпуск 6. Информационные, вычислительные и управляющие системы / Гл. ред. В.Н. Васильев. СПб: СПбГИТМО (ТУ), 2002.

5. Лаздин А.В., Немолочнов О.Ф. Оценка сложности графа функциональной программы. // Научно-технический вестник СПбГИТМО (ТУ). Выпуск 6. Информационные, вычислительные и управляющие системы / Гл. ред. В.Н. Васильев. СПб: СПбГИТ-МО (ТУ), 2002.

6. Липаев В.В. Отладка сложных программ. Методы, средства, технология. М.: Энер-гоатомиздат, 1993.

7. Марков А.С., Миронов С.В., Цирлов В.Л. Выявление уязвимостей в программном коде // Открытые системы, 2005. № 12.

8. Немолочнов О.Ф. Методы технической диагностики. Методические указания к курсовой работе. Л.: ЛИТМО, 1976.

9. Немолочнов О.Ф., Зыков А.Г., Поляков В.И. Комплексные кубические покрытия и графо-аналитические модели как средство описания вычислительных процессов программ / Международная конференция «Интеллектуальные системы», 2006.

10. Немолочнов О.Ф., Зыков А.Г., Поляков В.И. Кубические покрытия логических условий вычислительных процессов и программ. // Научно-технический вестник СПбГУ ИТМО. Выпуск 14. Информационные технологии, вычислительные и управляющие системы / Гл. ред. В.Н. Васильев. СПб: СПбГУ ИТМО, 2004.

11. Сидоров А.В. Верификация вычислительного процесса программы с использованием комплексных кубических покрытий / II межвузовская конференция молодых ученых. СПб: СПбГУ ИТМО, 2005.

12. Гостехкомиссия России. Руководящий документ. Защита от несанкционированного доступа к информации. Часть 1. Программное обеспечение средств защиты информации. Классификация по уровню контроля отсутствия недекларированных возможностей. М.: Гостехкомиссия России, 1999.

13. Концептуальные вопросы оценки безопасности информационных технологий [Электронный ресурс] / Jet Info; ред. Трубачев A., Режим доступа: http://www.jetinfo.ru/1998/5-6/2/article2.5-6.1998.html, свободный. Загл. с экрана.

14. Инструментальные средства анализа и защиты программного кода от использования недекларированных возможностей [Электронный ресурс] / ООО "НовоБИТ", Компаниец Р.И., Режим доступа: http://www.novobit.nov.ru/present/1.ppt, свободный. Загл. с экрана.

15. CERT Vulnerabilities Statistics [Электронный ресурс] / Cert Coordination Center, Режим доступа: http://www.cert.org, свободный. Загл. с экрана.

16. CVE version: 20061101 [Электронный ресурс] / Common Vulnerabilities and Exposures, Режим доступа: http://cve.mitre.org, свободный. Загл. с экрана.

17. Statistics Query Page [Электронный ресурс] / National Vulnerability Database, Режим доступа: http://nvd.nist.gov/statistics.cfm, свободный. Загл. с экрана.