При проведении сертификационных испытаний в части контроля недекларированных возможностей программного обеспечения анализ документации выполняется экспертом вручную. Комплекс предоставляет шаблонную форму отчётности, которая заполняется результатами анализа следующих документов на соответствие требованиям единой системы программной документации:
Комплекс «Project Viewer» обеспечивает автоматизацию выполнения следующих этапов статического анализа контролируемого программного обеспечения:
Комплекс «Project Viewer» обеспечивает автоматизацию выполнения следующих этапов динамического анализа контролируемого программного обеспечения:
С целью обеспечения визуализации результатов контроля совместно с комплексом «Project Viewer» используется программное изделие «Модуль визуализации дерева вызовов функций» АМСТ.30001-01.
Поскольку языки программирования С и С++ являются наиболее используемыми при разработке программого обеспечения, дальнейшее описание функциональных возможностей комплекса приводится применительно к анализу программного обеспечения, написанного на указанных языках программирования. Дополнительную информацию о функциональных возможностях комплекса для анализа программного обеспечения, написанного на иных языках программирования, можно получить при обращении по электронной почте.
Входными данными комплекса «Project Viewer» при анализе программного обеспечения, разработанного на языках программирования С и С++, являются файлы исходного кода и файлы препроцессора, которые формируются на этапе контрольной компиляции файлов проекта. Формирование файлов препроцессора выполняется с участием эксперта. Роль эксперта заключается в задании для компилятора ключей, необходимых для сохранения файлов препроцессора.
Препроцессирование необходимо для приведения исходного текста контролируемого программного обеспечения в строгое соответствие с синтаксисом языка программирования. При препроцессировании выполняются следующие операции: включение текста библиотек, раскрытие определений (в том числе не соответствующих синтаксису языка, выявление подмены вызовов и прочее), включение фрагментов текста в соответствие с директивами условной компиляции. Использование при выполнении контроля недекларированных возможностей программного обеспечения, разработанного на языках программирования С и С++, препроцессированного кода является гарантией получения достоверных результатов контроля.
Входными данными комплекса «Project Viewer» при анализе программного обеспечения, разработанного на языках программирования Delphi, Java, Ассемблер, являются файлы исходного кода.
Выходными данными комплекса является набор отчетных материалов (41 отчёт в соответствии с наименованиями таблиц, перечисленными ниже) по анализу наличия недекларированных возможностей контролируемого программного обеспечения:
Данный перечень таблиц соответствует отчетным материалам, оформляемым при осуществлении контроля отсутствия недекларированных возможностей программного обеспечения, разработанного на языках программирования С и С++. Перечень таблиц, соответствующий отчетным материалам, оформляемым при осуществлении контроля отсутствия недекларированных возможностей программного обеспечения, написанного на языках программирования Delphi, Java, Ассемблер, определяется спецификой языка программирования и является меньшим.
Поскольку при экспертизе отчетных материалов сертификационных испытаний в органе по сертификации должна быть обеспечена возможность ознакомления с материалами при применении экспертами общедоступных прикладных программных средств, комплекс «Project Viewer» предоставляет возможность конвертирования перечисленных таблиц в форматы файлов MS EXCEL и MS VISIO.
Описание приводится для случая контроля отсутствия недекларированных возможностей программного обеспечения, разработанного на языках программирования С и С++, как наиболее часто используемых разработчиками.
Построение таблиц результатов разбора исходных текстов программного обеспечения как первого этапа контроля предусматривает осуществление лексического и синтаксического анализа, в процессе которых происходит определение типов языковых конструкций, выявление определений типов, информационных и функциональных объектов, их использований. Сформированные на данном этапе таблицы как промежуточные данные используются в качестве исходных данных для последующих этапов контроля отсутствия недекларированных возможностей программного обеспечения. Промежуточные данные сохраняются в XML- формате «Комплекса «Project Viewer».
В процессе построения таблиц результатов разбора исходных текстов программного обеспечения комплекс осуществляет:
Контроль исходного состояния программного обеспечения осуществляется путем расчета контрольных сумм и фиксации размеров файлов исходных текстов и исполняемых модулей контролируемого программного обеспечения.
Последующий сравнительный анализ результатов расчета и фиксации с данными, представленными в документации на контролируемое программное обеспечение, позволяет эксперту сделать заключение о соответствии состояния представленного в испытательную лабораторию контролируемого программного обеспечения декларируемому в документации.
Алгоритм расчета контрольных сумм определяется в соответствии с документацией на контролируемое программное обеспечение и устанавливается соответствующей опцией в программном модуле контроля исходного состояния программного обеспечения, вызываемом на выполнение из главного окна комплекса «Project Viewer».
Критерием отсутствия избыточности исходных текстов контролируемого программного обеспечения на уровне файлов является факт отсутствия в проекте файлов, не используемых в процессе компиляции. Критерием полноты исходных текстов контролируемого программного обеспечения является факт безошибочной компиляции проекта.
Средствами комплекса «Project Viewer» в таблице «Исходные файлы» фиксируется перечень файлов исходных текстов проекта.
Поскольку комплекс «Project Viewer» не накладывает ограничения на перечень поддерживаемых компиляторов, используемых при разработке контролируемого программного обеспечения, а также не содержит в своем составе набор компиляторов, данный этап контроля недекларированных возможностей в части осуществления контрольной компиляции сертифицируемого программного обеспечения выполняется экспертом вручную. При этом предполагается, что в испытательную лабораторию совместно с контролируемым программным обеспечением для выполнения испытаний предоставляется среда разработки (операционная система, компилятор, библиотечные модули). Условием выполнения контрольной компиляции является запись в отдельный файл результатов компиляции в виде перечня файлов, которые использовались при компиляции проекта. В соответствии с представляемой в испытательную лабораторию документацией по осуществлению компиляции контролируемого программного обеспечения эксперт в среде разработки осуществляет контрольную компиляцию проекта. Путем сравнения перечня файлов исходных текстов контролируемого программного обеспечения, представленных в составе проекта, с перечнем файлов, реально используемых при компиляции, формируется отчетная таблица «Перечень файлов, подозреваемых на избыточность». Результат контроля является положительным, если таблица «Перечень файлов, подозреваемых на избыточность» является пустой. В противном случае таблица передается разработчику программного обеспечения с целью удаления избыточных файлов исходных текстов из проекта.
Средства комплекса «Project Viewer» предоставляют возможность побайтного сравнения исполняемого кода, представленного в испытательную лабораторию в качестве эталонного, и исполняемого кода, полученного в результате выполнения контрольной компиляции программного обеспечения. При побайтном совпадении кода делается вывод о соответствии исходных текстов программного обеспечения объектному (загрузочному) коду. При наличии несовпадений эксперту предстоит иными методами выяснять причины их возникновения. Например, методами использования дополнительных функциональных возможностей комплекса «Project Viewer».
Средства комплекса «Project Viewer» для каждого объявленного в исходных текстах функционального объекта (функции, процедуры) анализируют факты реального обращения к ним. Функциональные объекты, являющиеся объявленными, но не вызываемые по тексту исходного кода, идентифицируются как избыточные и заносятся в таблицу «Функциональные объекты, подозреваемые на избыточность». Таблица «Функциональные объекты, подозреваемые на избыточность» передается разработчикам программного обеспечения с целью получения разъяснений, либо внесения исправлений в исходные тексты.
Дополнительно, комплекс «Project Viewer» осуществляет контроль избыточности переменных и типов информационных объектов в программном обеспечении, разработанном на языках программирования С и С++. При выполнении контроля средства комплекса формируют таблицы «Типы информационных объектов, подозреваемые на избыточность» и «Информационные объекты, подозреваемые на избыточность».
Данный вид контроля заключается в сравнении восстановленных алгоритмов контролируемого программного обеспечения и алгоритмов, описанных в программной документации. Средства комплекса «Project Viewer» формируют таблицу «Связи функциональных объектов по управлению», в которую заносятся отношения по передачам управления между функциями. Таблица «Связи функциональных объектов по управлению» может быть отображена в виде дерева вызова функций средствами программного изделия «Модуль визуализации дерева вызовов функций» АМСТ.30001-01. Визуализация деревьев вызова функций позволяет на этапе статического анализа осуществлять сопоставление последовательности вызова функций, полученной по результатам анализа исходных текстов, с последовательностью вызова функций, описанной в программной документации на контролируемое программное обеспечение. Результат контроля считается положительным, если данные, представленные в таблице «Связи функциональных объектов по управлению», соответствуют данным, представленным в разделах программной документации, описывающих спецификации управляющих процессов и таблицы активации процессов.
Средства комплекса «Project Viewer» формируют таблицу «Связи функциональных объектов по информации», в которую заносятся данные о совместном использовании одних и тех же информационных объектов различными функциональными объектами. Сопоставление данных таблицы «Связи функциональных объектов по информации» с соответствующим данными программной документации на контролируемое программное обеспечение позволяет сделать эксперту вывод о наличии/отсутствии в исходном коде программного обеспечения недекларированных связей функциональных объектов (модулей, процедур, функций) по информации.
Контроль информационных объектов различных типов подразумевает выявление избыточности программного обеспечения на уровне переменных (локальных, глобальных), а также контроль использования объявленных переменных.
Перечень контролируемых информационных объектов формируется экспертом, исходя из следующих соображений:
Эксперт может внести в перечень также и другие информационные объекты, субъективно показавшиеся ему существенными. В результате выполнения контроля формируется список информационных объектов и ссылки на участки исходного текста, в которых эти информационные объекты используются. Результат контроля считается положительным, если список информационных объектов и ссылки на участки исходного текста, в которых эти информационные объекты используются, соответствуют данным, представленным в документах «Описание программы», «Описание применения» и «Пояснительная записка».
Контроль информационных объектов различных типов также осуществляется на этапе динамического анализа. При его выполнении могут применятся как методы, в которых контролируется процесс выполнения программного обеспечения, так и методы, в которых отслеживаются изменения в операционной среде, к которым приводит запуск программного обеспечения. Выбор метода исследований осуществляется экспертом.
Контроль наличия в исходном тексте программного обеспечения потенциально опасных конструкций осуществляется средствами комплекса «Project Viewer», формирующего отчетную таблицу «Выявленные потенциально опасные конструкции». В основе данного вида контроля лежит выполняемый средствами комплекса «Project Viewer» эвристический анализ, использующий базу данных потенциально опасных конструкций, которой соответствует следующая классификация потенциально опасных программных конструкций:
Сформированная таблица «Выявленные потенциально опасные конструкции» анализируется экспертом с целью идентификации отраженных в ней функциональных объектов (программных конструкций) именно как «программная закладка» либо формирования заключения о наличии в исходных текстах программного изделия опасных программных конструкций, степени их опасности (риска) и механизма их проявления. Пояснения по результатам анализа каждого функционального объекта из таблицы «Выявленные потенциально опасные конструкции» приводятся в соответствующем поле указанной таблицы.
Формирование перечня маршрутов выполнения функциональных объектов осуществляется на этапе построения таблиц для последующего статического анализа программного обеспечения.
Анализ критических маршрутов выполнения функциональных объектов основывается на положении о том, что критический маршрут выполнения функциональных объектов – это такой маршрут, при выполнении которого существует возможность неконтролируемого нарушения установленных правил обработки информационных объектов.
Данный вид контроля на этапе статического анализа предусматривает построение с применением комплекса «Project Viewer» таблицы «Критические маршруты выполнения функциональных объектов» на основании данных таблиц «Выявленные потенциально опасные конструкции» и «Определения информационных объектов» (в частности, в отношении сведений об информационных объектах, используемых совокупностью внутренних механизмов защиты информации). Экспертом выполняется сопоставление данных таблицы «Критические маршруты выполнения функциональных объектов» и данных документации, описывающей спецификации управляющих процессов и таблицы активации процессов. Результат контроля считается положительным, если данные, представленные в таблице «Критические маршруты выполнения функциональных объектов», соответствуют данным, представленным в документации.
Формирование критических маршрутов выполнения функциональных объектов осуществляется с целью определения исходных данных для проведения дальнейших исследований контролируемого программного обеспечения на этапе динамического анализа (в частности, при осуществлении контроля выполнения программного обеспечения).
Построение блок-схем алгоритмов работы функциональных объектов осуществляется средствами комплекса «Project Viewer» в соответствии с таблицей «Выражения». Целью данного вида контроля является восстановление алгоритмов функционирования контролируемого программного обеспечения по его исходным текстам для последующего сравнения восстановленных алгоритмов и алгоритмов, описанных в программной документации.
Комплекс «Project Viewer» поддерживает динамический метод восстановления алгоритмов контролируемого программного обеспечения и динамический анализ.
Динамический метод восстановления алгоритмов программного обеспечения основан на использовании программных отладочных средств (отладчиков). Отладчик - это программа, которая загружает в память другую программу и предоставляет пользователю возможность наблюдать за ходом выполнения этой программы. Поскольку данный метод является трудоемким, он применяется для анализа критических маршрутов выполнения функциональных объектов, определяемых в соответствии с таблицей статического анализа «Критические маршруты выполнения функциональных объектов».
Динамический анализ основываться на построении реальных трасс выполнения контролируемого программного обеспечения путем использования так называемых мониторов активности, встраиваемых в исходные тексты. В этом случае после внесение мониторов активности по определенному алгоритму в исходный код контролируемого программного обеспечения осуществляется компиляция программного обеспечения и его контрольное выполнение. При выполнении программного обеспечения важно осуществить выполнение всех продекларированных функциональных возможностей контролируемого программного обеспечения.
На этапе динамического анализа при помощи мониторов активности отслеживается общая направленность работы контролируемого программного обеспечения, а также факты обращения к файлам, портам и системным сервисам, в том числе параметры этих обращений: данные, записываемые/считываемые из скрытых и системных файлов, параметры вызова системных сервисов, протоколы обмена с портами ввода/вывода и др. В случае применения мониторов активности не имеет значения, реализованы ли в рамках системы защиты программы блоки противодействия отладке приложения или нет.
Комплекс «Project Viewer» осуществляет:
Программное изделие «Модуль визуализации дерева вызовов функций» АМСТ.30001-01 предназначено для совместного использования с программным изделием «Инструментальное средство автоматизации контроля недекларированных возможностей программного обеспечения «Комплекс «Project Viewer» (варианты исполнения АМСТ.78001-01, АМСТ.78001-02, АМСТ.78001-03, АМСТ.78001-04).
Программное изделие «Модуль визуализации дерева вызовов функций» АМСТ.30001-01 обеспечивает визуализацию вызовов функций анализируемого программного обеспечения на основании таблиц результатов статического и динамического анализа, сформированных комплексом «Project Viewer».
Программное изделие АМСТ.30001-01 осуществляет: