СИСТЕМА КОНТРОЛЯ ОТСУТСТВИЯ НЕДЕКЛАРИРОВАННЫХ ВОЗМОЖНОСТЕЙ В ПРОГРАММНОМ ОБЕСПЕЧЕНИИ
SYSTEM FOR MONITORING LACK OF UNDECLARED OPTIONS IN SOFTWARE

Изобретение относится к вычислительной технике, а именно к информационным вычислительным системам и сетям, и может быть использовано для защиты информационных ресурсов рабочих станций и серверов от воздействия недекларированных возможностей в установленном на них программном обеспечении, при создании программного обеспечения, при анализе исходного кода программного обеспечения, в том числе при проведении сертификационных испытаний [1, стр.20; 2] программного обеспечения на отсутствие недекларированных возможностей [3].
Известна система контроля отсутствия недекларированных возможностей в программном обеспечении [4]. Система представлена на фиг.1. Система контроля отсутствия недекларированных возможностей в программном обеспечении включает блок сохранения найденных потоков управления исследуемого программного обеспечения 1, блок хранения файлов исходных текстов программного обеспечения 2, блок установки контрольных точек в файлы исходных текстов программного обеспечения 3, блок компиляции файлов исходных текстов программного обеспечения с установленными контрольными точками 4, блок выполнения скомпилированных файлов программного обеспечения 5, блок сохранения перечня пройденных контрольных точек 6, блок сохранения трасс маршрутов выполнения скомпилированных файлов программного обеспечения 7, блок хранения перечня потенциально опасных программных конструкций 8, блок поиска потенциально опасных программных конструкций в файлах исходных текстов программного обеспечения 9, блок экспертной корректировки результатов автоматизированного анализа 10, блок сохранения итоговых результатов 11, причем вход блока хранения файлов исходных текстов программного обеспечения 2 соединен с входом получения файлов исходных текстов программного обеспечения 12, первый выход - с входом блока установки контрольных точек в файлы исходных текстов программного обеспечения 3, второй выход - с входом блока поиска потенциально опасных программных конструкций в файлах исходных текстов программного обеспечения 9, выход блока установки контрольных точек в файлы исходных текстов программного обеспечения 3 соединен с входом блока компиляции файлов исходных текстов программного обеспечения с установленными контрольными точками 4, выход которого соединен с входом блока выполнения скомпилированных файлов программного обеспечения 5, первый выход которого соединен с входом блока сохранения найденных потоков управления исследуемого программного обеспечения 1, второй выход - с входом блока сохранения перечня пройденных контрольных точек 6, третий выход - с входом блока сохранения трасс маршрутов выполнения скомпилированных файлов программного обеспечения 7, выход блока сохранения найденных потоков управления исследуемого программного обеспечения 1 соединен с первым входом блока экспертной корректировки результатов автоматизированного анализа 10, второй вход которого соединен с выходом блока сохранения перечня пройденных контрольных точек 6, третий вход - с выходом блока сохранения трасс маршрутов выполнения скомпилированных файлов программного обеспечения 7, четвертый вход - с выходом блока поиска потенциально опасных программных конструкций в файлах исходных текстов программного обеспечения 9, выход - с входом блока сохранения итоговых результатов 11, выход которого соединен с выходом выдачи итоговых результатов контроля 14, второй вход блока поиска потенциально опасных программных конструкций в файлах исходных текстов программного обеспечения 9 соединен с выходом блока хранения перечня потенциально опасных программных конструкций 8, вход которого соединен с входом формирования перечня потенциально опасных программных конструкций 13.
Контроль отсутствия недекларированных возможностей в программном обеспечении заключается в том, что файлы исходных текстов программного обеспечения с входа 12 после сохранения в блоке 2 поступают в блок 3, где происходит установка контрольных точек в файлы, а также процедуры и функции исходных текстов. После чего файлы исходных текстов программного обеспечения с установленными контрольными точками поступают в блок 4, где происходит их компиляция. Скомпилированные файлы исходных текстов поступают в блок 5, где происходит их запуск на выполнение, обработка запросов из скомпилированных файлов и к ним со стороны других исполняемых файлов, перехват информации о найденных потоках управления исследуемого программного обеспечения и ее передаче в блок 1 для сохранения, перехват информации о пройденных контрольных точках и ее передаче в блок 6 для сохранения, перехват информации о пройденных трассах маршрутов выполнения скомпилированных файлов программного обеспечения и ее передаче в блок 7 для сохранения. Дополнительно файлы исходных текстов поступают в блок 9, где в них осуществляется поиск потенциально опасных программных конструкций, перечень которых поступает из блока 8. Предварительное формирование перечня потенциально опасных программных конструкций осуществляется с входа 13. Результаты автоматизированного анализа файлов исходных текстов поступают из блоков 1, 6, 7 и 9 в блок 10, где осуществляют корректировку с помощью интерактивного взаимодействия с экспертами. Полученные итоговые результаты после сохранения в блоке 11 поступают на выход 14.
Таким образом, данная система позволяет проводить частично автоматизированный анализ исходных текстов на наличие недекларированных возможностей.
Недостатками системы для контроля отсутствия недекларированных возможностей в программном обеспечении являются следующие.
1. Избыточность проводимой экспертной корректировки промежуточных результатов поиска потенциально опасных программных конструкций вследствие отсутствия возможности детального анализа выявленных возможных потенциально опасных программных конструкций.
2. Отсутствие механизма оценки деструктивных возможностей и выявления удаленно активируемых программных закладок в исходных текстах программного обеспечения.
Задача, на решение которой направлено данное изобретение, заключается в обеспечении возможности автоматизированного анализа вероятных потенциально опасных программных конструкций и выявления удаленно активируемых программных закладок в исходных текстах программного обеспечения.
Техническим результатом заявляемого изобретения является сокращение объема работ по экспертному анализу вероятных потенциально опасных программных конструкций.
Указанный технический результат достигается тем, что в известной системе контроля отсутствия недекларированных возможностей в программном обеспечении, включающей блок сохранения найденных потоков управления исследуемого программного обеспечения, блок хранения файлов исходных текстов программного обеспечения, блок установки контрольных точек в файлы исходных текстов программного обеспечения, блок компиляции файлов исходных текстов программного обеспечения с установленными контрольными точками, блок выполнения скомпилированных файлов программного обеспечения, блок сохранения перечня пройденных контрольных точек, блок сохранения трасс маршрутов выполнения скомпилированных файлов программного обеспечения, блок хранения перечня потенциально опасных программных конструкций, блок поиска потенциально опасных программных конструкций в файлах исходных текстов программного обеспечения, блок экспертной корректировки результатов автоматизированного анализа, блок сохранения итоговых результатов, причем вход блока хранения файлов исходных текстов программного обеспечения соединен с входом получения файлов исходных текстов программного обеспечения, первый выход - с входом блока установки контрольных точек в файлы исходных текстов программного обеспечения, второй выход - с входом блока поиска потенциально опасных программных конструкций в файлах исходных текстов программного обеспечения, выход блока установки контрольных точек в файлы исходных текстов программного обеспечения соединен с входом блока компиляции файлов исходных текстов программного обеспечения с установленными контрольными точками, выход которого соединен с входом блока выполнения скомпилированных файлов программного обеспечения, первый выход которого соединен с входом блока сохранения найденных потоков управления исследуемого программного обеспечения, второй выход - с входом блока сохранения перечня пройденных контрольных точек, третий выход - с входом блока сохранения трасс маршрутов выполнения скомпилированных файлов программного обеспечения, выход блока сохранения найденных потоков управления исследуемого программного обеспечения соединен с первым входом блока экспертной корректировки результатов автоматизированного анализа, второй вход которого соединен с выходом блока сохранения перечня пройденных контрольных точек, третий вход - с выходом блока сохранения трасс маршрутов выполнения скомпилированных файлов программного обеспечения, выход - с входом блока сохранения итоговых результатов, выход которого соединен с выходом выдачи итоговых результатов контроля, второй вход блока поиска потенциально опасных программных конструкций в файлах исходных текстов программного обеспечения соединен с выходом блока хранения перечня потенциально опасных программных конструкций, вход которого соединен с входом формирования перечня потенциально опасных программных конструкций, согласно изобретению между выходом блока поиска потенциально опасных программных конструкций в файлах исходных текстов программного обеспечения и четвертым входом блока экспертной корректировки промежуточных результатов дополнительно введен блок тестирования потенциально опасных программных конструкций, причем вход блока тестирования потенциально опасных программных конструкций соединен с выходом блока поиска потенциально опасных программных конструкций в файлах исходных текстов программного обеспечения, выход - с четвертым входом блока экспертной корректировки промежуточных результатов.
Эти отличительные признаки по сравнению с прототипом позволяют сделать вывод о соответствии заявляемого технического решения критерию "новизна".
Сущность изобретения заключается в следующем. Исходные тексты программного обеспечения могут содержать потенциально опасные программные конструкции, определяющие небезопасное использование процедур и функций. Использование различных методов автоматизированного тестирования программных конструкций позволит значительно сократить время их экспертного анализа. В качестве методов автоматизированного тестирования могут использоваться: метод полного перебора значений операндов процедур и функций, метод динамического ограничения максимального объема выделяемых ресурсов, метод эмуляции физических ошибок работы с памятью, метод оценки деструктивных возможностей различных некорректных реализаций программных компонент и другие методы.
Перечисленная совокупность существенных признаков в указанном порядке обеспечивает значительное сокращение времени контроля отсутствия недекларированных возможностей в программном обеспечении за счет перевода части работ по анализу возможных потенциально опасных программных конструкций из сферы экспертного в сферу автоматизированного анализа.
Именно новое свойство совокупности признаков, приводящих к существенному уменьшению объема работ по контролю отсутствия недекларированных возможностей и, следовательно, затрачиваемого на выполнение данных работ времени, что не было описано ранее в литературных источниках, позволяет сделать вывод о соответствии предлагаемого технического решения критерию "изобретательский уровень".
В совокупности признаков заявленного способа используется следующая терминология и обозначения:
- недекларированные возможности - функциональные возможности программного обеспечения, не описанные или не соответствующие описанным в документации, при использовании которых возможно нарушение конфиденциальности, доступности или целостности обрабатываемой информации. Реализацией недекларированных возможностей, в частности, являются программные закладки;
- программные закладки - преднамеренно внесенные в программное обеспечение функциональные объекты, которые при определенных условиях (входных данных) инициируют выполнение не описанных в документации функций программного обеспечения, приводящих к нарушению конфиденциальности, доступности или целостности обрабатываемой информации;
- функциональный объект - элемент программы, осуществляющий выполнение действий по реализации законченного фрагмента алгоритма программы. В качестве функциональных объектов могут выступать процедуры, функции, ветви, операторы и т.п.;
- потенциально опасные программные конструкции - функциональные объекты, использование которых при наступлении определенных условий может привести к реализации недекларированных возможностей программного обеспечения.
Схема предлагаемой системы контроля отсутствия недекларированных возможностей в программном обеспечении приведена на фиг.2, содержит: блок сохранения найденных потоков управления исследуемого программного обеспечения 1, блок хранения файлов исходных текстов программного обеспечения 2, блок установки контрольных точек в файлы исходных текстов программного обеспечения 3, блок компиляции файлов исходных текстов программного обеспечения с установленными контрольными точками 4, блок выполнения скомпилированных файлов программного обеспечения 5, блок сохранения перечня пройденных контрольных точек 6, блок сохранения трасс маршрутов выполнения скомпилированных файлов программного обеспечения 7, блок хранения перечня потенциально опасных программных конструкций 8, блок поиска потенциально опасных программных конструкций в файлах исходных текстов программного обеспечения 9, блок экспертной корректировки результатов автоматизированного анализа 10, блок сохранения итоговых результатов 11, блок тестирования потенциально опасных программных конструкций 15, причем вход блока хранения файлов исходных текстов программного обеспечения 2 соединен с входом получения файлов исходных текстов программного обеспечения 12, первый выход - с входом блока установки контрольных точек в файлы исходных текстов программного обеспечения 3, второй выход - с входом блока поиска потенциально опасных программных конструкций в файлах исходных текстов программного обеспечения 9, выход блока установки контрольных точек в файлы исходных текстов программного обеспечения 3 соединен с входом блока компиляции файлов исходных текстов программного обеспечения с установленными контрольными точками 4, выход которого соединен с входом блока выполнения скомпилированных файлов программного обеспечения 5, первый выход которого соединен с входом блока сохранения найденных потоков управления исследуемого программного обеспечения 1, второй выход - с входом блока сохранения перечня пройденных контрольных точек 6, третий выход - с входом блока сохранения трасс маршрутов выполнения скомпилированных файлов программного обеспечения 7, выход блока сохранения найденных потоков управления исследуемого программного обеспечения 1 соединен с первым входом блока экспертной корректировки результатов автоматизированного анализа 10, второй вход которого соединен с выходом блока сохранения перечня пройденных контрольных точек 6, третий вход - с выходом блока сохранения трасс маршрутов выполнения скомпилированных файлов программного обеспечения 7, четвертый вход - с выходом блока тестирования потенциально опасных программных конструкций в файлах исходных текстов программного обеспечения 15, выход - с входом блока сохранения итоговых результатов 11, выход которого соединен с выходом выдачи итоговых результатов контроля 14, второй вход блока поиска потенциально опасных программных конструкций в файлах исходных текстов программного обеспечения 9 соединен с выходом блока хранения перечня потенциально опасных программных конструкций 8, вход которого соединен с входом формирования перечня потенциально опасных программных конструкций 13, вход блока тестирования потенциально опасных программных конструкций 15 соединен с выходом блока поиска потенциально опасных программных конструкций в файлах исходных текстов программного обеспечения 9.
Назначение блоков понятно из их названия.
Результаты поиска потенциально опасных программных конструкций поступают из блока 9 в блок 15, где проводят тестирование найденных потенциально опасных программных конструкций на предмет наличия в них удаленно активируемых программных закладок, а также оценку деструктивных возможностей различных некорректных реализаций программных компонент. Тестирование потенциально опасных программных конструкций проводят с использованием одного из следующих подходов: тестирование работы потенциально опасной программной конструкции (например, функции или процедуры) путем ее активизации с подачей на ее вход граничных значений входных параметров (максимального и минимального значений соответствующего типа данных); аналогичное тестирование, но с подачей на вход потенциально опасной программной конструкции нескольких произвольных значений входных параметров; аналогичное тестирование, но с подачей на вход потенциально опасной программной конструкции всех возможных значений входных параметров. При этом с помощью специальных программно-аппаратных средств, в том числе с помощью средств аппаратной поддержки виртуализации, производят перехват обращений тестируемой потенциально опасной программной конструкции к программным объектам, аппаратным или сетевым ресурсам, а также проводят анализ причин возникновения программно-аппаратных ошибок.
Технический результат достигается за счет возможности анализа вероятных потенциально опасных программных конструкций, оценки деструктивных возможностей различных некорректных реализаций программных компонент и выявления удаленно активируемых программных закладок в исходных текстах программного обеспечения.
Реализация предлагаемого способа не вызывает затруднений, так как все блоки и узлы, входящие в устройство, реализующее способ, общеизвестны и широко описаны в технической литературе [5-13]. Например, блок тестирования потенциально опасных программных конструкций может быть выполнен в виде ПЭВМ на базе современного универсального процессора с поддержкой виртуализации и установленным специальным программным средством обработки действий анализируемого программного обеспечения, перехваченных на уровне виртуальной среды процессора или в виде отдельного программно-аппаратного средства вычислительной техники по принципам и методам, изложенным в [5-9], что позволит сократить время анализа потенциально опасных программных конструкций за счет повышения производительности системы в целом.
Источники информации
1. Федеральный закон "О техническом регулировании" №184-ФЗ от 27 декабря 2002 года.
2. Положение о сертификации средств защиты информации по требованиям безопасности информации. Утверждено приказом председателя Гостехкомиссии при Президенте РФ от 27 октября 1995 г. №199.
3. Руководящий документ "Защита от несанкционированного доступа к информации. Часть 1. Программное обеспечение средств защиты информации. Классификация по уровню контроля отсутствия недекларированных возможностей" (Гостехкомиссия России, 1999).
4. Инструментальный комплекс для проведения статического и динамического анализа потоков управления в исполняемых кодах программ "IRIDA". Описание применения. 72410666.425790.007.31.
5. Нечаев И.А. Конструкции на логических элементах цифровых микросхем. - Москва: Радио и связь, 1992. - 123 с.
6. Белов А.В. Создаем устройства на микроконтроллерах. - СПб.: Наука и техника, 2007. - 304 с.
7. Конструкторско-технологическое проектирование электронной аппаратуры. Учебник для вузов. Серия: Информатика в техническом университете. Под ред. Шахнова В.А. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2003. - 528 с.: ил.
8. Суворова Е., Шейнин Ю. Проектирование цифровых систем на VHDL. Серия "Учебное пособие". - СПб.: БХВ-Петербург, 2003. - 576 с.: ил.
9. Овчинников В.А. Алгоритмизация комбинаторно-оптимизационных задач при проектировании ЭВМ и систем. Серия: Информатика в техническом университете. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2001. - 288 с.: ил.
10. Новиков Ю.В. Основы цифровой схемотехники. Базовые элементы и схемы. Методы проектирования. - М.: Мир, 2001. - 379 с.
11. Левин В.И. Носители информации в цифровом веке / Под общ. ред. Д.Г.Красковского. - М.: КомпьютерПресс, 2000. - 256 с.: ил.
12. Гук М. Дисковая подсистема ПК. - СПб.: Питер, 2001. - 336 с.: ил.
13. Пей Ан. Сопряжение ПК с внешними устройствами. - М.: ДМК Пресс, 2003. - 320 с.: ил.