СИСТЕМА АНАЛИЗА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ НА ОТСУТСТВИЕ НЕДЕКЛАРИРОВАННЫХ ВОЗМОЖНОСТЕЙ
SYSTEM TO ANALYSE SOFTWARE FOR ABSENCE OF UNDECLARED CAPABILITIES

Изобретение относится к вычислительной технике, а именно к информационным вычислительным системам и сетям, и может быть использовано для защиты информационных ресурсов рабочих станций и серверов, их компонентов, программ или данных от несанкционированной деятельности, а также при анализе исходного кода программного обеспечения (ПО), в том числе при проведении сертификационных испытаний программного обеспечения на отсутствие недекларированных возможностей (НДВ).
Толкование терминов, используемых в заявке:
недекларированные возможности - функциональные возможности программного обеспечения, не описанные или не соответствующие описанным в документации, при использовании которых возможно нарушение конфиденциальности, доступности или целостности обрабатываемой информации (Руководящий документ «Защита от несанкционированного доступа к информации. 4.1. Программное обеспечение средств защиты информации. Классификация по уровню контроля отсутствия недекларированных возможностей»). Реализацией недекларированных возможностей, в частности, являются программные закладки;
программные закладки - преднамеренно внесенные в программное обеспечение функциональные объекты, которые при определенных условиях (входных данных) инициируют выполнение не описанных в документации функций программного обеспечения, приводящих к нарушению конфиденциальности, доступности или целостности обрабатываемой информации (Руководящий документ «Защита от несанкционированного доступа к информации. Ч.1. Программное обеспечение средств защиты информации. Классификация по уровню контроля отсутствия недекларированных возможностей»).
Известна система контроля отсутствия недекларированных возможностей в программном обеспечении (Патент РФ №2434272, кл. G06F 17/00, опубл. 20.11.2011. Бюл. №32). Система содержит блок сохранения найденных потоков управления исследуемого программного обеспечения, блок хранения файлов исходных текстов программного обеспечения, блок установки контрольных точек в файлы исходных текстов, блок компиляции файлов исходных текстов с установленными контрольными точками, блок выполнения скомпилированных файлов, блок сохранения перечня пройденных контрольных точек, блок сохранения трасс маршрутов выполнения скомпилированных файлов, блок хранения перечня потенциально-опасных программных конструкций, блок поиска потенциально-опасных программных конструкций в файлах исходных текстов, блок экспертной корректировки результатов автоматизированного анализа, блок сохранения итоговых результатов, блок хранения полного перечня возможных классификационных признаков программного обеспечения, блок прогнозирования возможностей программного обеспечения, блок хранения перечня предполагаемых возможностей программного обеспечения, блок регистрации действий программного обеспечения, блок контроля соответствия действий выполненных ПО с перечнем предполагаемых возможностей ПО.
Недостатком указанной системы является низкая достоверность результатов из-за отсутствия процедур фиксации и контроля исходного состояния и проверки избыточности исходных текстов.
Известна система контроля отсутствия недекларированных возможностей в программном обеспечении (Патент РФ №2419135, кл. G06F 12/16, G06F 11/30, опубл. 20.05.2011. Бюл. №14). Система содержит блок сохранения найденных потоков управления исследуемого программного обеспечения, блок хранения файлов исходных текстов программного обеспечения, блок установки контрольных точек в файлы исходных текстов программного обеспечения, блок компиляции файлов исходных текстов программного обеспечения с установленными контрольными точками, блок выполнения скомпилированных файлов программного обеспечения, блок сохранения перечня пройденных контрольных точек, блок сохранения трасс маршрутов выполнения скомпилированных файлов программного обеспечения, блок хранения перечня потенциально опасных программных конструкций, блок поиска потенциально опасных программных конструкций в файлах исходных текстов программного обеспечения, блок экспертной корректировки результатов автоматизированного анализа, блок сохранения итоговых результатов, блок построения сетей Петри файлов исходных текстов программного обеспечения, блок анализа и маркирования исключаемых из дальнейшей обработки ветвей сетей Петри, блок хранения оптимизированных исходных текстов.
Недостатками данной системы являются низкая достоверность результатов работы в связи с отсутствием процедуры фиксации и контроля исходного состояния, неполноты статического анализа (в частности, не проводится анализ избыточности исходных текстов) и несоответствие требованиям к проведению статического анализа исходных текстов программ, представленных в Руководящем документе «Защита от несанкционированного доступа к информации. Ч.1. Программное обеспечение средств защиты информации. Классификация по уровню контроля отсутствия недекларированных возможностей».
Наиболее близким по своей технической сущности и выполняемым функциям аналогом (прототипом) к заявленной системе является система контроля отсутствия недекларированных возможностей в программном обеспечении (Патент РФ №2434265, кл. G06F 11/00, опубл. 20.11.2011. Бюл. №32). Система содержит блок сохранения найденных потоков управления исследуемого программного обеспечения, блок хранения файлов исходных текстов программного обеспечения, блок установки контрольных точек в файлы исходных текстов программного обеспечения, блок компиляции файлов исходных текстов программного обеспечения с установленными контрольными точками, блок выполнения скомпилированных файлов программного обеспечения, блок сохранения перечня пройденных контрольных точек, блок сохранения трасс маршрутов выполнения скомпилированных файлов программного обеспечения, блок хранения перечня потенциально опасных программных конструкций, блок поиска потенциально опасных программных конструкций в файлах исходных текстов программного обеспечения, блок экспертной корректировки результатов автоматизированного анализа, блок сохранения итоговых результатов, блок тестирования потенциально опасных программных конструкций.
Контроль отсутствия недекларированных возможностей в программном обеспечении заключается в том, что файлы исходных текстов программного обеспечения с входа 12 после сохранения в блоке 2 поступают в блок 3, где происходит установка контрольных точек в файлы, а также процедуры и функции исходных текстов. После чего файлы исходных текстов программного обеспечения с установленными контрольными точками поступают в блок 4, где происходит их компиляция. Скомпилированные файлы исходных текстов поступают в блок 5, где происходит их запуск на выполнение, обработка запросов из скомпилированных файлов и к ним со стороны других исполняемых файлов, перехват информации о найденных потоках управления исследуемого программного обеспечения и ее передаче в блок 1 для сохранения, перехват информации о пройденных контрольных точках и ее передаче в блок 6 для сохранения, перехват информации о пройденных трассах маршрутов выполнения скомпилированных файлов программного обеспечения и ее передаче в блок 7 для сохранения. Файлы исходных текстов поступают в блок 9, где в них осуществляется поиск потенциально опасных программных конструкций, перечень которых поступает из блока 8. После чего в блоке 15 потенциально опасные программные конструкции тестируются. Предварительное формирование перечня потенциально опасных программных конструкций осуществляется с входа 13. Результаты автоматизированного анализа файлов исходных текстов поступают из блоков 1, 6, 7 и 15 в блок 10, где осуществляют корректировку с помощью интерактивного взаимодействия с экспертами. Полученные итоговые результаты после сохранения в блоке 11 поступают на выход 14.
Таким образом, данная система позволяет проводить частично автоматизированный анализ исходных текстов на наличие недекларированных возможностей.
Недостатком системы-прототипа является низкая достоверность из-за отсутствия процедур фиксации контроля исходного состояния исследуемого программного обеспечения, проверки избыточности исходных текстов и поиска контекстной информации, что не позволяет сопоставить результаты исследований с контрольным экземпляром (версией) одного и того же ПО, что приводит к высоким временным затратам на исследование, потере производительности (за счет полного цикла проверок файлов исходных текстов различных версий ПО), а также снижению доверия к результатам.
Задачей изобретения является создание системы анализа программного обеспечения на отсутствие недекларированных возможностей, обеспечивающей расширение функциональных возможностей системы-прототипа за счет повышения достоверности результатов анализа программного обеспечения путем фиксации исходного состояния, проверки избыточности и анализа контекстной информации в исходных текстах исследуемого ПО. Техническим результатом является повышение достоверности результатов анализа программного обеспечения на отсутствие недекларированных возможностей за счет фиксации исходного состояния, проверки избыточности исходных текстов и анализа контекстной информации в исходных текстах исследуемого ПО.
Задача изобретения решается тем, что в системе анализа программного обеспечения на отсутствие недекларированных возможностей, включающей блок сохранения найденных потоков управления исследуемого программного обеспечения, блок хранения файлов исходных текстов программного обеспечения, блок установки контрольных точек в файлы исходных текстов программного обеспечения, блок компиляции файлов исходных текстов программного обеспечения с установленными контрольными точками, блок выполнения скомпилированных файлов программного обеспечения, блок сохранения перечня пройденных контрольных точек, блок сохранения трасс маршрутов выполнения скомпилированных файлов программного обеспечения, блок хранения перечня потенциально опасных программных конструкций, блок поиска потенциально опасных программных конструкций в файлах исходных текстов программного обеспечения, блок экспертной корректировки результатов автоматизированного анализа, блок тестирования потенциально опасных программных конструкций, блок сохранения итоговых результатов, вход блока хранения файлов исходных текстов программного обеспечения соединен с входом получения файлов исходных текстов программного обеспечения, второй выход - с входом блока поиска потенциально опасных программных конструкций в файлах исходных текстов программного обеспечения. Выход блока установки контрольных точек в файлы исходных текстов программного обеспечения соединен с входом блока компиляции файлов исходных текстов программного обеспечения с установленными контрольными точками, выход которого соединен с входом блока выполнения скомпилированных файлов программного обеспечения. Первый выход блока выполнения скомпилированных файлов программного обеспечения соединен с входом блока сохранения найденных потоков управления исследуемого программного обеспечения, второй выход - с входом блока сохранения перечня пройденных контрольных точек, третий выход - с входом блока сохранения трасс маршрутов выполнения скомпилированных файлов программного обеспечения. Выход блока сохранения найденных потоков управления исследуемого программного обеспечения соединен с первым входом блока экспертной корректировки результатов автоматизированного анализа, второй вход которого соединен с выходом блока сохранения перечня пройденных контрольных точек, третий вход - с выходом блока сохранения трасс маршрутов выполнения скомпилированных файлов программного обеспечения, выход - с входом блока сохранения итоговых результатов. Выход блока сохранения итоговых результатов соединен с выходом выдачи итоговых результатов контроля, второй вход блока поиска потенциально опасных программных конструкций в файлах исходных текстов программного обеспечения соединен с выходом блока хранения перечня потенциально опасных программных конструкций. Вход блока хранения перечня потенциально опасных программных конструкций соединен с входом формирования перечня потенциально опасных программных конструкций, выход блока поиска потенциально опасных программных конструкций соединен с блоком тестирования потенциально опасных программных конструкций, в файлах исходных текстов программного обеспечения. Выход блока тестирования потенциально опасных программных конструкций соединен с четвертым входом блока экспертной корректировки промежуточных результатов, согласно изобретению, между первым выходом блока хранения файлов исходных текстов программного обеспечения и входом блока установки контрольных точек в файлы исходных текстов программного обеспечения дополнительно введены блок фиксации исходного состояния исходных текстов программного обеспечения, блок проверки избыточности исходных текстов, блок анализа и систематизации контекстной информации. Первый выход блока хранения файлов исходных текстов программного обеспечения соединен с входом блока фиксации исходного состояния исходных текстов программного обеспечения. Выход блока фиксации исходного состояния исходных текстов программного обеспечения соединен с входом блока проверки избыточности исходных текстов, выход которого соединен со входом блока установки контрольных точек в файлы исходных текстов программного обеспечения.
Перечисленная совокупность существенных признаков повышает достоверность результатов анализа программного обеспечения на отсутствие недекларированных возможностей и обеспечивает возможность использования результатов работы системы при проведении сертификационных испытаний программного обеспечения.
Проведенный анализ позволил установить, что аналоги, тождественные признакам заявленной системы, отсутствуют, что указывает на соответствие заявленной системы условию патентоспособности «новизна».
Результаты поиска известных решений в данной и смежных областях техники с целью выявления признаков, совпадающих с отличительными от прототипа признаками заявленного объекта, показали, что они не следуют явным образом из уровня техники. Из уровня техники также не выявлена известность влияния предусматриваемых существенными признаками заявленного изобретения преобразований на достижение указанного технического результата. Следовательно, заявленное изобретение соответствует условию патентоспособности «изобретательский уровень».
Заявленные объекты системы поясняются чертежами, на которых показаны:
Фиг. 1 - Блок-схема системы анализа программного обеспечения на отсутствие недекларированных возможностей.
Фиг. 2 - Блок-схема блока фиксации исходного состояния исходных текстов программного обеспечения.
Фиг. 3 - Блок-схема блока проверки избыточности исходных текстов.
Фиг.4 - Блок-схема блока анализа и систематизации контекстной информации.
Схема предлагаемой системы анализа программного обеспечения на отсутствие недекларированных возможностей приведена на фиг. 1, содержит блок сохранения найденных потоков управления исследуемого программного обеспечения 1, блок хранения файлов исходных текстов программного обеспечения 2, блок фиксации исходного состояния исходных текстов программного обеспечения 16, блок проверки избыточности исходных текстов 17, блок анализа и систематизации контекстной информации 18, блок установки контрольных точек в файлы исходных текстов программного обеспечения 3, блок компиляции файлов исходных текстов программного обеспечения с установленными контрольными точками 4, блок выполнения скомпилированных файлов программного обеспечения 5, блок сохранения перечня пройденных контрольных точек 6, блок сохранения трасс маршрутов выполнения скомпилированных файлов программного обеспечения 7, блок хранения перечня потенциально опасных программных конструкций 8, блок поиска потенциально опасных программных конструкций в файлах исходных текстов программного обеспечения 9, блок экспертной корректировки результатов автоматизированного анализа 10, блок тестирования потенциально опасных программных конструкций 15, блок сохранения итоговых результатов 11, причем вход блока хранения файлов исходных текстов программного обеспечения 2 соединен с входом получения файлов исходных текстов программного обеспечения 12, первый выход – с входом блока фиксации исходного состояния исходных текстов программного обеспечения 16, второй выход - с входом блока поиска потенциально опасных программных конструкций в файлах исходных текстов программного обеспечения 9, выход блока фиксации исходного состояния исходных текстов программного обеспечения 16 соединен с входом блока проверки избыточности исходных текстов 17, выход блока проверки избыточности исходных текстов 17 соединен с входом блока анализа и систематизации контекстной информации 18 выход которого соединен с входом блока установки контрольных точек в файлы исходных текстов программного обеспечения 3, выход которого соединен с входом блока компиляции файлов исходных текстов программного обеспечения с установленными контрольными точками 4, выход которого соединен с входом блока выполнения скомпилированных файлов программного обеспечения 5, первый выход которого соединен с входом блока сохранения найденных потоков управления исследуемого программного обеспечения 1, второй выход - с входом блока сохранения перечня пройденных контрольных точек 6, третий выход - с входом блока сохранения трасс маршрутов выполнения скомпилированных файлов программного обеспечения 7, выход блока сохранения найденных потоков управления исследуемого программного обеспечения 1 соединен с первым входом блока экспертной корректировки результатов автоматизированного анализа 10, второй вход которого соединен с выходом блока сохранения перечня пройденных контрольных точек 6, третий вход - с выходом блока сохранения трасс маршрутов выполнения скомпилированных файлов программного обеспечения 7, выход - с входом блока сохранения итоговых результатов 11, выход которого соединен с выходом выдачи итоговых результатов контроля 14, второй вход блока поиска потенциально опасных программных конструкций в файлах исходных текстов программного обеспечения соединен 9 с выходом блока хранения перечня потенциально опасных программных конструкций 8, вход которого соединен с входом формирования перечня потенциально опасных программных конструкций 13, выход блока поиска потенциально опасных программных конструкций 9 соединен с блоком тестирования потенциально опасных программных конструкций в файлах исходных текстов программного обеспечения 15, выход блока тестирования потенциально опасных программных конструкций 15 соединен с четвертым входом блока экспертной корректировки промежуточных результатов 10.
Исходные тексты исследуемого программного обеспечения могут содержать недекларированные возможности. Проведение контроля исходного состояния исследуемого программного обеспечения, контроля полноты и отсутствия избыточности исходных текстов, а также анализа контекстной информации позволяет проводить сертификационные исследования ПО (согласно п. 2 и подпункту 3.1 перечня требований к уровням контроля, представленного в Руководящем документе «Защита от несанкционированного доступа к информации. Ч.1. Программное обеспечение средств защиты информации. Классификация по уровню контроля отсутствия недекларированных возможностей»).
Повышение достоверности результатов исследования исходных текстов за счет предотвращения внесения в них несанкционированных изменений осуществляется фиксацией исходного состояния файлов исследуемого программного обеспечения. Блок фиксации исходного состояния предназначен для выполнения расчета контрольных сумм исходных текстов исследуемого программного обеспечения. Данный блок реализует функции расчета, сравнения и хранения контрольных сумм.
Проверка избыточности исходных текстов исследуемого ПО на уровне файлов осуществляется с помощью сборки специализированной версии ПО, содержащей предварительно внедренные идентификационные данные. Эти идентификационные данные сформированы таким образом, чтобы при обработке исполняемых файлов для каждого из них можно было получить полный и безубыточный перечень использованных при его сборке файлов исходных текстов (из состава предоставленных на исследования). Использование данного блока повышает достоверность результатов исследования исходных текстов за счет устранения неиспользуемых файлов исходных текстов.
Блок анализа и систематизации контекстной информации предназначен для проведения исследования информации, содержащейся в комментариях исходных текстов. Данный блок реализует функции поиска и хранения информации комментариев к исходным текстам, а также выделения фрагментов текста в коде, которые могут указывать на описание деструктивной или недокументированной функциональности. Использование данного блока повышает достоверность результатов исследования исходных текстов за счет проведения исследования описательной части в исходных текстах ПО.
«Промышленная применимость» системы обусловлена наличием программного обеспечения, на основе которого указанные блоки могут быть выполнены.
Блок-схема блока фиксации исходного состояния исходных текстов программного обеспечения представлена на фиг. 2. Данный блок состоит из двух элементов: блок 16.1, в котором производится расчет контрольных сумм файлов исходных текстов (фиг. 2), блок 16.2 (фиг. 2), в котором осуществляется сравнение полученных контрольных сумм с эталонными (указанными в документации, поставляемой с исследуемым ПО), и блок 16.3, в котором осуществляется сохранение результатов контрольного суммирования в файл отчета (фиг. 2). Реализация блоков 16.1 и 16.2, входящих в состав блока 16, возможна на основе сертифицированных программных средств, таких как: «Средство фиксации и контроля исходного состояния программного комплекса ФИКС» [www.cbi-info.ru] или «ПИК - Эшелон» [www.npo-echelon.ru]. Алгоритмы контрольного суммирования, используемые данными программными средствами, широко известны и описаны в литературе [ГОСТ Р 34.11-94; ГОСТ Р 34.11-2012; RFC 1321; RFC 3174; «The MD5 Message-Digest Algoritm» R. Rivest, MIT Laboratory for Computer Science and RSA Data Security, Inc. 1992].
Блок-схема блока проверки избыточности исходных текстов представлена на фиг. 3. Данный блок состоит из трех элементов: блок 17.1, в данном блоке осуществляется поиск в файлах исходных текстов исследуемого ПО неиспользуемых участков кода (фиг. 3), блок 17.2 - проводит анализ выявленной избыточности (фиг. 3) и блок 17.3, в котором принимается решение о влиянии критичности выявленной избыточности на возможность и целесообразность проведения дальнейших проверок (фиг. 3). Реализация блока 17.1 в плане поиска неиспользуемых участков исходных текстов возможна с использованием различного инструментария, в том числе и с использованием средств фиксации факта доступа к файлам. В ОС Linux для этого используется скрипт проверки параметра «access time» (данный параметр показывает время последнего доступа к файлу) соответствующего файла, в Windows - это Process Monitor (данная программа в режиме реального времени отображает активность файловой системы, реестра, а также процессов и потоков) [https://technet.microsoft.com/ru-ru/sysinternals/processmonitor.aspx] в совокупности с компилятором (например, gcc) [https://gcc.gnu.org]. После чего выявленная избыточность передается на вход блока 17.2 в котором оператором осуществляется ее экспертный анализ, на основе результатов которого принимается решение в блоке 17.3.
Блок-схема блока анализа и систематизации контекстной информации представлена на фиг. 4. Данный блок состоит из трех элементов: блок 18.1 (в данном блоке осуществляется поиск контекстной информации в исследуемых файлах исходных текстов фиг. 4), блок 18.2 (в данном блоке проводится анализ и систематизация выявленной контекстной информации фиг. 4) и блок 18.3 (в данном блоке делается вывод о наличии в контекстной информации указаний на потенциально опасные участки кода фиг. 4). Осуществление поиска контекстной информации в исследуемых файлах исходных текстов (блок 18.1) выполняется с помощью специализированных для конкретной операционной системы инструментов (скриптов), реализующих функции поиска комментариев в файлах исходных текстов, а также выделения фрагментов текстов в коде, которые могут указывать на описание негативной функциональности. После чего выявленные комментарии передаются на вход блока 18.2, в котором оператором осуществляется их экспертный анализ, на основе результатов которого принимается решение в блоке 18.3.
Заявленная система работает следующим образом. Файлы исходных текстов ПО с входа 12 после сохранения в блоке 2 поступают в блок 16, где происходит фиксация исходного состояния файлов исходных текстов исследуемого ПО. После этого файлы исходных текстов поступают в блок 17, где осуществляется проверка избыточности исходных текстов, а затем передаются в блок 18 для анализа и систематизации контекстной информации. Следующим этапом является обработка файлов исходных текстов в блоке 3, где происходит установка контрольных точек в файлы, а также процедуры и функции исходных текстов. После чего файлы исходных текстов программного обеспечения с установленными контрольными точками поступают в блок 4, где происходит их компиляция. Скомпилированные файлы исходных текстов поступают в блок 5, где происходит их запуск на выполнение, обработка запросов из скомпилированных файлов и к ним со стороны других исполняемых файлов, перехват информации о найденных потоках управления исследуемого программного обеспечения и ее передаче в блок 1 для сохранения, перехват информации о пройденных контрольных точках и ее передаче в блок 6 для сохранения, перехват информации о пройденных трассах маршрутов выполнения скомпилированных файлов программного обеспечения и ее передаче в блок 7 для сохранения. Помимо этого файлы исходных текстов поступают в блок 9, где в них осуществляется поиск потенциально опасных программных конструкций, перечень которых поступает из блока 8. Предварительное формирование перечня потенциально опасных программных конструкций осуществляется с входа 13. Результаты автоматизированного анализа файлов исходных текстов поступают из блоков 1, 6, 7 и 9 в блок 10, где осуществляют корректировку с помощью интерактивного взаимодействия с экспертами. Полученные итоговые результаты после сохранения в блоке 11 поступают на выход 14.
Таким образом, заявленный технический результат достигнут за счет введения блоков фиксации исходного состояния, проверки избыточности и анализа контекстной информации в исходных текстах исследуемого программного обеспечения, использование которых повышает достоверность результатов анализа программного обеспечения на отсутствие недекларированных возможностей и позволяет проводить сертификационные исследования ПО согласно п. 2 и подпункта 3.1 перечня требований к уровням контроля, представленного в Руководящем документе «Защита от несанкционированного доступа к информации. Ч.1. Программное обеспечение средств защиты информации. Классификация по уровню контроля отсутствия недекларированных возможностей».