СИСТЕМА КОНТРОЛЯ ОТСУТСТВИЯ НЕДЕКЛАРИРОВАННЫХ ВОЗМОЖНОСТЕЙ В ПРОГРАММНОМ ОБЕСПЕЧЕНИИ
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, блок прогнозирования возможностей анализируемого программного обеспечения 16, блок хранения перечня предполагаемых возможностей программного обеспечения 17, блок регистрации действий программного обеспечения 18, блок контроля соответствия действий, выполненных программным обеспечением с перечнем предполагаемых возможностей программного обеспечения 19, причем первый выход блока хранения файлов исходных текстов программного обеспечения 2 соединен с входом блока установки контрольных точек в файлы исходных текстов программного обеспечения 3, второй выход - с входом блока поиска потенциально-опасных программных конструкций в файлах исходных текстов программного обеспечения 9, выход блока установки контрольных точек в файлы исходных текстов программного обеспечения 3 соединен с входом блока компиляции файлов исходных текстов программного обеспечения с установленными контрольными точками 4, выход которого соединен с входом блока выполнения скомпилированных файлов программного обеспечения 5, первый выход которого соединен с входом блока сохранения найденных потоков управления исследуемого программного обеспечения 1, второй выход - с входом блока сохранения перечня пройденных контрольных точек 6, третий выход - с входом блока сохранения трасс маршрутов выполнения скомпилированных файлов программного обеспечения 7, выход блока сохранения найденных потоков управления исследуемого программного обеспечения 1 соединен с первым входом блока экспертной корректировки результатов автоматизированного анализа 10, второй вход которого соединен с выходом блока сохранения перечня пройденных контрольных точек 6, третий вход - с выходом блока сохранения трасс маршрутов выполнения скомпилированных файлов программного обеспечения 7, четвертый вход - с выходом блока поиска потенциально-опасных программных конструкций в файлах исходных текстов программного обеспечения 9, выход - с входом блока сохранения итоговых результатов 11, выход которого соединен с выходом выдачи итоговых результатов контроля 14, второй вход блока поиска потенциально-опасных программных конструкций в файлах исходных текстов программного обеспечения 9 соединен с выходом блока хранения перечня потенциально-опасных программных конструкций 8, вход которого соединен с входом формирования перечня потенциально-опасных программных конструкций 13, вход блока хранения полного перечня возможных классификационных признаков программного обеспечения 15 соединен с входом формирования полного перечня возможных классификационных признаков программного обеспечения 20, выход - с первым входом блока прогнозирования возможностей анализируемого программного обеспечения 16, второй вход которого соединен с третьим выходом блока хранения файлов исходных текстов программного обеспечения 2, выход - с входом блока хранения перечня предполагаемых возможностей программного обеспечения 17, выход которого соединен с первым входом блока контроля соответствия действий, выполненных программным обеспечением с перечнем предполагаемых возможностей программного обеспечения 19, второй вход которого соединен с выходом блока регистрации действий программного обеспечения 18, выход - с четвертым входом блока экспертной корректировки результатов автоматизированного анализа 10, вход блока регистрации действий программного обеспечения 18 соединен с четвертым выходом блока выполнения скомпилированных файлов программного обеспечения 5.
Назначение блоков понятно из их названия.
Кроме контроля программного обеспечения на наличие недекларированных возможностей, реализованного в прототипе, в блоке 16 проводят классифицирование программного обеспечения по классификационным признакам, хранящимся в блоке 15, с сохранением результатов, причем формирование полного перечня возможных классификационных признаков программного обеспечения, хранящегося в блоке 15, осуществляют с входа 20. На основании выявленных соответствий исходных текстов анализируемого программного обеспечения, поступающих из блока 2, известным классификационным признакам, поступающим из блока 15, в блоке 16 дополнительно осуществляют прогнозирование возможностей, действий, формирование перечня предполагаемых используемых ресурсов анализируемого программного обеспечения, после чего сформированный перечень сохраняют для дальнейшего использования в блоке 17. Во время выполнения анализируемого программного обеспечения в блоке 5 с помощью блока 18 осуществляют регистрацию действий программного обеспечения, его обращений к ресурсам системы, открытых соединений с другим программным обеспечением. Результаты в виде журнала регистрации поступают в блок 19, где по журналу регистрации осуществляют контроль соответствия действий, выполненных программным обеспечением, предполагаемому набору действий, информация о которых поступает из блока 18, и являющихся стандартными для программного обеспечения своего класса. Результаты автоматизированного контроля соответствия действий анализируемого программного обеспечения стандартным действиям его класса поступают в блок 10 для осуществления экспертной корректировки.
В качестве возможных классификационных признаков могут использовать метрики программного обеспечения, например, отношение количества операторов к количеству операндов, наличие и доля операторов, осуществляющих взаимодействие с сетевыми или другими ресурсами, в общем количестве операторов программного обеспечения, а также могут использовать факт наличия определенных операторов в списке импортируемых функций и другие признаки, определяющие отношение анализируемого программного обеспечения к конкретному классу. Пример перечня возможных классификационных признаков программного обеспечения представлен на фигуре 3.
Технический результат достигается за счет обеспечения изобретением возможности адаптации механизма контроля отсутствия потенциальных недекларированных возможностей в зависимости от типа анализируемого программного обеспечения путем конкретизации стандартных задач, решаемых программным обеспечением конкретного типа, используемых им ресурсов вычислительной системы, в которой он функционирует, обобщения возможных способов его взаимодействия с другим программным обеспечением и реализации метода "черного ящика" для анализа программного обеспечения как с исходными текстами, так и в условиях отсутствия программной документации и исходных текстов программ.
Реализация предлагаемой системы не вызывает затруднений, так как все блоки и узлы, входящие в устройство, реализующее систему, общеизвестны и широко описаны в технической литературе [5-13]. Например, блок прогнозирования возможностей анализируемого программного обеспечения и блок контроля соответствия действий, выполненных программным обеспечением с перечнем предполагаемых возможностей программного обеспечения могут быть реализованы в виде вычислительных устройств, включающих арифметико-логическое устройство анализа и оперативное запоминающее устройство на базе современных интегральных микросхем или микроконтроллерах, по принципам и методам, описанным в [5-10], блок хранения полного перечня возможных классификационных признаков программного обеспечения и блок хранения перечня предполагаемых возможностей программного обеспечения - на базе любого машиночитаемого носителя информации [11, 12], блок регистрации действий программного обеспечения - в виде электронно-вычислительной машины, построенной на базе современного процессора, в котором реализованы функции аппаратной поддержки виртуализации (например, производства Intel с технологией Intel VT или AMD с технологией AMD Pacific) [13] с установленным программным обеспечением перехвата всех действий анализируемого программного обеспечения, а также подключенным устройством хранения журнала регистрации перехваченных действий на базе любого машиночитаемого носителя информации [11, 12], линии соединения блоков - на базе любого современного интерфейса соединения цифровых устройств [14].
Источники информации
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. Елманова Н., Пахомов С. Виртуальные машины 2007 // Наталия Елманова, Сергей Пахомов. - Журнал "КомпьютерПресс" №9, 2007 г. Пей Ан. Сопряжение ПК с внешними устройствами. - М.: ДМК Пресс, 2003. - 320 с. ил.