Контроль отсутствия недекларированных возможностей программного изделия Цель контроля: формирование на основании анализа результатов проверочных действий заключения об отсутствии (наличии) недекларированных возможностей (далее по тексту – НДВ) программного обеспечения, в том числе отсутствия (наличия) программных закладок. Перечень проверочных действий, подлежащих выполнению в рамках конкретного уровня контроля, определяется положениями руководящего документа Гостехкомиссии России «Защита от несанкционированного доступа к информации. Часть 1. Программное обеспечение средств защиты информации. Классификация по уровню контроля отсутствия недекларированных возможностей» (введен в действия Приказом Председателя Гостехкомиссии России № 114 от 04.06.1999 г., далее по тексту – РД НДВ). РД НДВ устанавливает четыре уровня контроля программного обеспечения, отличающихся глубиной, объемом и условиями проведения испытаний. Наличие нескольких уровней контроля ПО при проведении испытаний на отсутствие НДВ, с одной стороны, регламентирует степень конфиденциальности информации, защита которой осуществляется ПО, проверенным по тому или иному уровню. С другой стороны, разные уровни контроля позволяют дифференцировать степень вероятности отсутствия в исследуемом ПО недекларированных возможностей. Самый низкий уровень контроля - четвертый. Данный уровень предусмотрен для проверки ПО, используемого при защите (обработке, хранении, передаче и т.п.) конфиденциальной информации. Для ПО, используемого для защиты информации, отнесенной к государственной тайне, при проведении испытаний должен быть обеспечен уровень контроля не ниже третьего. Причем, в соответствии с требованиями РД для программных средств, предназначенных для обработки информации, составляющей государственную тайну, проведение испытаний по соответствующим уровням контроля отсутствия НДВ обязательно. В соответствии с пунктом 2.1 РД НДВ под недекларированными возможностями понимаются функциональные возможности программного обеспечения (далее по тексту – ПО), не описанные или не соответствующие описанным в документации, при использовании которых возможно нарушение конфиденциальности, доступности или целостности обрабатываемой информации. Реализацией недекларированных возможностей, в частности, являются программные закладки. В соответствии с пунктом 2.2 РД НДВ под программными закладками понимаются преднамеренно внесенные в ПО функциональные объекты, которые при определенных условиях (входных данных) инициируют выполнение не описанных в документации функций ПО, приводящих к нарушению конфиденциальности, доступности или целостности обрабатываемой информации. Контроль отсутствия недекларированных возможностей программного обеспечения предполагает глубокое исследование программного обеспечения и связан с анализом как исполняемого кода, так и исходных текстов программ. Методологической основой таких исследований являются общие принципы анализа программ с учетом аспектов, связанных с информационной безопасностью. РД НДВ не требует определения количественных характеристик программного обеспечения. Пример перечня качественных характеристик, оцениваемых при выполнении 3 уровня контроля в соответствии с РД НДВ, приведен в таблице 1. Таблица 1 п/п 1. 2. 3. 3.1. 3.2. Требование РД НДВ Контроль состава и содержания документации Контроль исходного состояния ПО Контроль полноты и отсутствия избыточности исходных текстов ПО на уровне файлов Контроль соответствия исходных текстов ПО Пункт Качественная Метод РД НДВ характеристика исследований 3.2.1 Соответствие Экспертиза 3.3.1 требованиям, документации предъявляемым к составу и содержанию документации 3.2.2 Соответствие Расчет полученных контрольных результатов расчета сумм и контрольных сумм и фиксация фиксации файлов размеров исходных текстов и файлов дистрибутивов исходных анализируемого ПО текстов и данным, дистрибутивов приведенным в компонентов документации ПО Статический анализ исходных текстов программ 3.2.3 Полнота и отсутствие Выполнение избыточности контрольной исходных текстов ПО сборки ПО. на уровне файлов Выявление файлов, не участвующих в процессе сборки ПО 3.2.3 Соответствие Анализ исходных текстов ПО соответствия объектному результатов (загрузочному) коду контрольной Метод оценки Заключение эксперта Сравнительный анализ результатов расчета и фиксации с данными документации Заключение эксперта Заключение эксперта объектному (загрузочному) коду 3.3. 3.4. 3.5. 3.6. 3.7. Контроль полноты и отсутствия избыточности исходных текстов ПО на уровне функциональны х объектов (процедур, функций) Контроль связей функциональны х объектов (модулей, процедур, функций) по управлению Контроль полноты и отсутствия избыточности исходных текстов ПО на уровне типов информационны х объектов Контроль полноты и отсутствия избыточности исходных текстов ПО на уровне информационны х объектов (переменных) Контроль связей функциональны х объектов 3.3.3 Полнота и отсутствие избыточности исходных текстов ПО на уровне функциональных объектов (процедур, функций) 3.3.3 Отсутствие недекларированных в документации связей функциональных объектов (модулей, процедур, функций) по управлению Полнота и отсутствие избыточности исходных текстов ПО на уровне типов информационных объектов сборки ПО исходным текстам ПО и данными документации Выявление процедур (функций), которые в ПО только объявлены, но к которым нет обращений из функциональн ых объектов Заключение эксперта 3.3.3 Полнота и отсутствие избыточности исходных текстов ПО на уровне информационных объектов (переменных) Выявление отношений по передачам управления между функциональн ыми объектами Выявление типов информационн ых объектов, которые только объявлены, но нигде не используются Выявление переменных, которые только объявлены, но нигде не используются 3.3.3 Отсутствие недекларированных в документации связей Выявление Сравнительный отношений по анализ использованию выявленных 3.3.3 Сравнительный анализ выявленных отношений с данными документации Заключение эксперта Заключение эксперта 3.8. (модулей, процедур, функций) по информации функциональных объектов по информации Контроль 3.3.3 информационны х объектов различных типов Отсутствие недекларированных в документации обращений к переменным 3.9. Формирование перечня маршрутов выполнения функциональн ых объектов (процедур, функций) информационн ых объектов различными функциональн ыми объектами Формирование перечня информационных объектов, подлежащих контролю. Анализ всех участков кода, в которых осуществляется обращение к указанным в перечне информационным объектам отношений с данными документации Заключение эксперта Для данного Построение требования РД НДВ по исходным качественная кодам характеристика цепочки оценки результатов вызовов не вводится, функциональ данный этап ных объектов испытаний (маршрутов) рассматривается как технологический, результат которого используется совместно с результатом динамического анализа (см. ниже) 4. Динамический анализ исходных текстов программ 4.1. Контроль 3.3.4 Соответствие Контроль Сравнительвыполнения реальных процесса ный анализ функциональн обращений выполнения данных файла ых объектов (вызовов, передачи программно- результатов (процедур, управления) го контроля 3.3.3 функций) 4.2 Сопоставление фактических маршрутов выполнения функциональн ых объектов и маршрутов, построенных в процессе проведения статического анализа функциональных обеспечения объектов описанию, приведенному в документации 3.3.4 Соответствие фактических маршрутов выполнения функциональных объектов (процедур, функций) и маршрутов, построенных в процессе проведения статического анализа Выявление расхождений в маршрутах выполнения функциональ ных объектов, полученных на этапах статического и динамическог о анализа выполнения функциональных объектов и данных документации Сравнительный анализ Контроль состава и содержания документации подразумевает, что на программное обеспечение сертифицируемого изделия выпущена следующая документация: - спецификация (ГОСТ 19.202-78); - описание программы (ГОСТ 19.402-78); - описание применения (ГОСТ 19.502-78); - исходные тексты программ (ГОСТ 19.401-78); - пояснительная записка (ГОСТ 19.404-79). Контроль исходного состояния ПО подразумевает, что при идентификации объекта сертификации, заключающейся в расчете указанным разработчиком способом (технологическим средством) контрольных сумм модулей исполняемого кода и исходных текстов программного средства, полученные данные расчетов при последующем сравнении совпадут с данными, приведенными в документации на сертифицируемое программное средство. Контроль полноты и отсутствия избыточности исходных текстов ПО на уровне файлов подразумевает, что контролируемое программное средство не содержит в своем составе программных модулей (файлов), явно не используемых другими программными модулями. Контроль соответствия исходных текстов ПО объектному (загрузочному) коду подразумевает мониторинг сборки исполняемого кода из исходного с последующим побайтным сравнением результата сборки с исполняемым кодом, представленным заявителем для проведения сертификационных испытаний. Контроль полноты и отсутствия избыточности исходных текстов ПО на уровне функциональных объектов (процедур, функций) подразумевает отсутствие в составе исходных текстов контролируемого программного обеспечения функциональных объектов (процедур, функций, задач и защищенных объектов), явно не используемых множеством исполнений контролируемого программного обеспечения. Контроль связей функциональных объектов (модулей, процедур, функций) по управлению подразумевает построение взаимосвязей указанных объектов контролируемого программного обеспечения по управлению и сравнение построенных взаимосвязей с взаимосвязями, описанными в программной документации. Контроль связей функциональных объектов (модулей, процедур, функций) по информации подразумевает построение взаимосвязей указанных объектов контролируемого программного обеспечения по информации и сравнение построенных взаимосвязей с взаимосвязями, описанными в программной документации. Контроль информационных объектов различных типов подразумевает выявление избыточности программного обеспечения на уровне переменных (локальных, глобальных), а также контроль использования объявленных переменных. Перечень контролируемых информационных объектов формируется экспертом, исходя из следующих соображений: - наибольший интерес представляют те информационные объекты, которые участвуют в обработке данных аутентификации, - также важны информационные объекты, участвующие в хранении меток доступа и в принятии решения о предоставлении или не предоставлении доступа. Эксперт может внести в перечень также и другие информационные объекты, субъективно показавшиеся ему существенными. В результате выполнения контроля формируется список информационных объектов и ссылки на участки исходного текста, в которых эти информационные объекты используются. Результат контроля считается положительным, если список информационных объектов и ссылки на участки исходного текста, в которых эти информационные объекты используются, соответствуют данным, представленным в документах «Описание программы», «Описание применения» и «Пояснительная записка». Синтаксический и семантический контроль наличия заданных конструкций в исходных текстах ПО из списка потенциально опасных программных конструкций подразумевает контроль использования потенциально опасных конструкций (например, импортируемых функций языка С, использования переменной до присвоения начального значения и др.) в исходных текстах контролируемого программного обеспечения. Формирование перечня маршрутов выполнения функциональных объектов (процедур, функций, ветвей) подразумевает формирование перечня всех возможных маршрутов выполнения контролируемого программного обеспечения для последующего сравнения с наблюдаемым при динамическом анализе маршрутом выполнения контролируемого программного обеспечения. Анализ критических маршрутов выполнения функциональных объектов (процедур, функций) для заданных экспертом списков информационных объектов подразумевает определение маршрутов выполнения функциональных объектов контролируемого программного обеспечения, зависящих от состояния некоторых информационных объектов, а также маршрутов выполнения, производящих изменения указанных (определенных экспертом) информационных объектов. При этом, непосредственно под критическим маршрутом выполнения функциональных объектов понимается такой маршрут, при выполнении которого существует возможность неконтролируемого нарушения установленных правил обработки информационных объектов. Построение по исходным текстам контролируемого ПО блок-схем, диаграмм и т.п., и последующий сравнительный анализ алгоритма работы функциональных объектов (процедур, функций) и алгоритма работы, приведенного в "Пояснительной записке" подразумевает построение по исходным текстам программного обеспечения реализованных алгоритмов и последующий их анализ соответствия имеющемуся в документации описанию. Контроль выполнения функциональных объектов (процедур, функций, ветвей) подразумевает внесение так называемых мониторов активности по определенному алгоритму в исходный код программы, анализ результатов выполнения программы, в том числе сравнение данных, полученных в процессе динамического анализа, с соответствующими данными, полученными в процессе статического анализа. Таким образом, обеспечивается сравнение реального маршрута выполнения программы с теоретически предсказанным маршрутом. Актуальность контроля отсутствия недекларированных возможностей Преимущества сертифицированного на соответствие требованиям отсутствия недекларированных возможностей программного средства (ПС) условно можно разделить на два вида: технологические и потребительские (маркетинговые). Суть технологических преимуществ обусловлена самой спецификой проведения сертификационных испытаний такого рода. Технологические операции, присущие контролю отсутствия НДВ, такие, как идентификация объекта сертификации, мониторинг сборки исполняемого кода из исходного, мониторинг начальной инсталляции программного средства, статический анализ исходного кода позволяют получить большой объем полезной аналитической информации. Как уже упоминалось ранее, возможно четко соотнести исходный и исполняемый код ПС, выявить и устранить избыточность представленного на испытания исходного кода (которая присуща многим проектам, особенно большим по объему и разработанным разными программистами), однозначно определить действия ПС в процессе начальной инсталляции и деинсталляции по отношению к системным областям операционной системы ЭВМ, получить ряд других характеристик ПС. Полученные результаты испытаний могут быть использованы разработчиком для проведения углубленного анализа своего продукта, планирования и реализации корректирующих воздействий по отношению к ПС в части усовершенствования процессов его разработки и сопровождения. Характерная для более высоких уровней контроля по отсутствию НДВ технологическая операция по динамическому анализу ПС предусматривает фактическое его тестирование. Причем, такое тестирование является углубленным, учитывающим не только функциональные возможности исследуемого ПС, но и его технологические и структурные особенности. Это объясняется необходимостью инициирования отработки программой тех логических маршрутов ее выполнения, которые были определены как потенциальные на этапе статического анализа исходного кода. Не вызывает сомнения полезность для разработчика таких результатов тестирования, выполненных независимой организацией. Дополнительно разработчик ПС получает исчерпывающую информацию о степени соответствия представленной на сертификационные испытания программной документации требованиям соответствующих нормативных документов. Понятно, что такая информация также не бесполезна для разработчика при сопровождении своего продукта, разработке новых версий или новых программных продуктов. Следующий важный момент - процесс испытаний, выполняемых в рамках контроля отсутствия НДВ, объективно предполагает постоянный тесный контакт испытателя и разработчика, что зачастую позволяет разработчику оперативно улучшать функциональные и потребительские свойства ПС непосредственно в процессе испытаний. К числу потребительских или маркетинговых преимуществ можно отнести следующие преимущества: - государственный документ - сертификат - с определенной степенью вероятности, зависящей от уровня проведенного контроля, подтверждает тот факт, что в проверенном ПС нет явных программных конструкций, использование которых предполагает возможность несанкционированного доступа, нарушения целостности и доступности защищаемой информации. - при проведении испытаний по более высоким уровням контроля результирующим сертификатом фактически подтверждается способность ПС реализовывать свои продекларированные возможности. - по результатам проведенных испытаний ПС приобретает четкий идентификационный признак - зафиксированные контрольные суммы исходных и исполняемых файлов, позволяющий осуществлять мероприятия по контролю целостности сертифицированного ПС на этапах эго разработки, тиражирования и эксплуатации.