Анализ уязвимостей программного обеспечения в настоящее время является обязательным видом деятельности, выполняемым экспертами испытательных лабораторий отечественных систем сертификации средств защиты информации (СЗИ). Данный вид работ выполняется как при сертификации на соответствие требованиям профилей защиты, в которых в явном виде включены требования семейства доверия AVA_VAN «Анализ уязвимостей» (стандарты по линии «Общих критериев»), так и при испытаниях на соответствие требованиям технических условий или классических руководящих документов Гостехкомиссии России.
В настоящем исследовании представлена статистика выявления уязвимостей в программном обеспечении, которое было объектом сертификационных испытаний в Испытательной лаборатории НПО «Эшелон» в период 2016 — 2017 гг.
Методика анализа уязвимостей, используемая испытательными лабораториями (ИЛ) в рамках сертификационных испытаний, базируется на «Общей методологии оценки» (международный стандарт ISO/IEC 18045) и в общем случае состоит из следующих этапов.
Этап 1. Выявление известных (подтвержденных) уязвимостей объекта сертификации. На данном этапе экспертами ИЛ осуществляется поиск известных (подтвержденных) уязвимостей в общедоступных источниках информации, например: в Банке данных угроз безопасности информации ФСТЭК России, ресурсах CVE, NVD, ресурсе разработчика программного обеспечения (ПО). Если информация об уязвимостях обнаруживается, то испытания приостанавливаются до момента передачи в ИЛ обновлений ПО, «закрывающих» известные уязвимости.
Этап 2. Выявление ранее не опубликованных уязвимостей объекта сертификации. На данном этапе эксперты ИЛ выполняют в общем случае следующие шаги:
В рамках данного исследования при выполнении шага 1 специалисты ИЛ НПО «Эшелон» использовали следующие методы формировании перечня потенциальных уязвимостей:
При выявлении уязвимости в объекте сертификации подробная техническая информация предоставляется разработчику ПО с целью получения подтверждения сделанных экспертами ИЛ выводов и формирования мер по нейтрализации выявленной уязвимости (путем обновления ПО или определения указаний по эксплуатации). Предполагается, что выявляемые в ходе сертификационных испытаний/инспекционных контролей уязвимости должны проходить процедуру раскрытия через Банк данных угрозы безопасности информации ФСТЭК России.
Исследования проводились в период 2016 — 2017 гг. в рамках испытаний 76 продуктов по линии системы сертификации во всех системах сертификации (сертификационные испытания, инспекционные контроли) в ИЛ НПО «Эшелон».
Распределение исследованных продуктов по типам представлено на рис.1.
Рис.1. Распределение исследованных продуктов по типам
(СЗИ от НСД – средство защиты от несанкционированного доступа; ППО с СЗИ – прикладное программное обеспечение со встроенными средствами защиты информации; МЭ – межсетевой экран; САВЗ – средство антивирусной защиты; СУБД – системы управления базами данных; ОС – операционная система; СОВ – система обнаружения вторжений)
Разработчиками продуктов являлись как отечественные, так и зарубежные организации.
В зависимости от критериев сертификации, определяемых потенциальной областью применения сертифицируемого продукта, экспертам ИЛ предоставлялся или не предоставлялся доступ к исходным текстам объекта сертификации (рис. 2).
Рис.2. Распределение исследованных продуктов в зависимости от доступа к исходным текстам
Результаты исследований
В результаты исследований специалистами ИЛ НПО «Эшелон» была выявлена 81 уязвимость (уязвимости были выявлены в 26 продуктах из 76 исследованных). Для всех выявленных уязвимостей ПО было получено подтверждение об их актуальности со стороны разработчика ПО, разработчиками ПО были приняты меры по устранению выявленных уязвимостей.
На рис. 3 показано распределение выявленных уязвимостей по степени критичности (оценка выполнялась по методике CVSS версия 3.0).
Рис.3. Распределение выявленных уязвимостей в зависимости от степени критичности
Наиболее популярным типом уязвимого ПО стало прикладное ПО со встроенными средствами защиты информации (рис. 4).
Рис.4. Распределение выявленных уязвимостей в зависимости от типа
исследованного ПО
Основными типами векторов успешных атак, которые были разработаны экспертами ИЛ с целью подтверждения актуальности уязвимости, стали (рис. 5):
Рис.5. Распределение выявленных уязвимостей в зависимости от типа вектора атаки
В категорию «Иное» попали такие типы векторов атак, как: удалённое выполнение команд операционной системы путем передачи данных в HTTP-запросах (CAPEC-76), XML-инъекция (CAPEC-250), фиксация сессии (CAPEC-61), выход за пределы назначенной директории (CAPEC-126), атаки типа «Reparse-Point», «RegSafe/RegRestore».
Основными типами недостатков ПО, ставших причинами уязвимостей, стали (рис. 6):
Рис.6. Распределение выявленных уязвимостей в зависимости от ошибки (недостатка) ПО
В категорию «Иное» попали такие типы ошибок ПО, как: использование заданных в коде программы аутентификационных данных (CWE-798), переполнение буфера (CWE-120), ошибки, приводящие к фиксации сессии (CWE-384), неверное использование данных, полученных из недоверенного источника, для генерации команд ОС (CWE-22) и пр.
Говоря о методах формирования перечня потенциальных уязвимостей, следует отметить, что большинство уязвимостей было обнаружено благодаря предположениям, сделанным на основе изучения документации на объект сертификации и данных об уязвимостях в схожих с объектом сертификации продуктах (рис.7).
Рис.7. Распределение выявленных уязвимостей в зависимости от метода формирования перечня потенциальных уязвимостей
В настоящем исследовании представлена статистика выявления уязвимостей в программном обеспечении, которое было объектом сертификационных испытаний в Испытательной лаборатории НПО «Эшелон» в период 2016 — 2017 гг.
Методика исследования
Методика анализа уязвимостей, используемая испытательными лабораториями (ИЛ) в рамках сертификационных испытаний, базируется на «Общей методологии оценки» (международный стандарт ISO/IEC 18045) и в общем случае состоит из следующих этапов.
Этап 1. Выявление известных (подтвержденных) уязвимостей объекта сертификации. На данном этапе экспертами ИЛ осуществляется поиск известных (подтвержденных) уязвимостей в общедоступных источниках информации, например: в Банке данных угроз безопасности информации ФСТЭК России, ресурсах CVE, NVD, ресурсе разработчика программного обеспечения (ПО). Если информация об уязвимостях обнаруживается, то испытания приостанавливаются до момента передачи в ИЛ обновлений ПО, «закрывающих» известные уязвимости.
Этап 2. Выявление ранее не опубликованных уязвимостей объекта сертификации. На данном этапе эксперты ИЛ выполняют в общем случае следующие шаги:
- шаг 1: формирование перечня потенциальных уязвимостей объекта сертификации на основе изучения различных типов источников данных (проектная документация на объект сертификации, исходный текст, информация из открытых источников);
- шаг 2: создание тестовых сценариев (атак) для каждой идентифицированной потенциальной уязвимости;
- шаг 3: выполнение тестов с целью определения верности сделанного предположения.
В рамках данного исследования при выполнении шага 1 специалисты ИЛ НПО «Эшелон» использовали следующие методы формировании перечня потенциальных уязвимостей:
- экспертно-документальный метод, предусматривающий формирование перечня потенциальных уязвимостей на основе информации об известных уязвимостях в схожих по функциональным возможностям продуктах, в других версиях (например, более старых) объекта сертификации, в заимствованных компонентах, типовых уязвимостях, характерных для технологий, используемых при разработке объекта сертификации;
- статический анализ исходных текстов ПО (в случае предоставления доступа к исходным текстам в рамках сертификационных испытаний);
- фаззинг-тестирование.
При выявлении уязвимости в объекте сертификации подробная техническая информация предоставляется разработчику ПО с целью получения подтверждения сделанных экспертами ИЛ выводов и формирования мер по нейтрализации выявленной уязвимости (путем обновления ПО или определения указаний по эксплуатации). Предполагается, что выявляемые в ходе сертификационных испытаний/инспекционных контролей уязвимости должны проходить процедуру раскрытия через Банк данных угрозы безопасности информации ФСТЭК России.
Объекты исследования
Исследования проводились в период 2016 — 2017 гг. в рамках испытаний 76 продуктов по линии системы сертификации во всех системах сертификации (сертификационные испытания, инспекционные контроли) в ИЛ НПО «Эшелон».
Распределение исследованных продуктов по типам представлено на рис.1.
Рис.1. Распределение исследованных продуктов по типам
(СЗИ от НСД – средство защиты от несанкционированного доступа; ППО с СЗИ – прикладное программное обеспечение со встроенными средствами защиты информации; МЭ – межсетевой экран; САВЗ – средство антивирусной защиты; СУБД – системы управления базами данных; ОС – операционная система; СОВ – система обнаружения вторжений)
Разработчиками продуктов являлись как отечественные, так и зарубежные организации.
В зависимости от критериев сертификации, определяемых потенциальной областью применения сертифицируемого продукта, экспертам ИЛ предоставлялся или не предоставлялся доступ к исходным текстам объекта сертификации (рис. 2).
Рис.2. Распределение исследованных продуктов в зависимости от доступа к исходным текстам
Результаты исследований
В результаты исследований специалистами ИЛ НПО «Эшелон» была выявлена 81 уязвимость (уязвимости были выявлены в 26 продуктах из 76 исследованных). Для всех выявленных уязвимостей ПО было получено подтверждение об их актуальности со стороны разработчика ПО, разработчиками ПО были приняты меры по устранению выявленных уязвимостей.
На рис. 3 показано распределение выявленных уязвимостей по степени критичности (оценка выполнялась по методике CVSS версия 3.0).
Рис.3. Распределение выявленных уязвимостей в зависимости от степени критичности
Наиболее популярным типом уязвимого ПО стало прикладное ПО со встроенными средствами защиты информации (рис. 4).
Рис.4. Распределение выявленных уязвимостей в зависимости от типа
исследованного ПО
Основными типами векторов успешных атак, которые были разработаны экспертами ИЛ с целью подтверждения актуальности уязвимости, стали (рис. 5):
- межсайтовое выполнение скриптов (CAPEC-63);
- межсайтовая подделка запросов (CAPEC-62);
- повышение привилегий, связанное с обходом функций безопасности (CAPEC-233);
- атаки, направленные на отказ в обслуживании (CAPEC-2);
- раскрытие критичной информации ПО в сообщениях об ошибках (CAPEC-54);
- инъекция SQL-кода (CAPEC-66).
Рис.5. Распределение выявленных уязвимостей в зависимости от типа вектора атаки
В категорию «Иное» попали такие типы векторов атак, как: удалённое выполнение команд операционной системы путем передачи данных в HTTP-запросах (CAPEC-76), XML-инъекция (CAPEC-250), фиксация сессии (CAPEC-61), выход за пределы назначенной директории (CAPEC-126), атаки типа «Reparse-Point», «RegSafe/RegRestore».
Основными типами недостатков ПО, ставших причинами уязвимостей, стали (рис. 6):
- неверное использование данных, полученных из недоверенного источника, для генерации HTML-страницы (CWE-79);
- использование аутентификационных данных (данные cookie) для авторизации запроса (CWE-352);
- неверное использование данных, полученных из недоверенного источника, при выполнении функций безопасности (CWE-807);
- отсутствие авторизации при выполнении критичных операций (CWE-862);
- неверное использование данных, полученных из недоверенного источника, для генерации запроса к СУБД (CWE-89);
- неверная генерация сообщений об ошибках (CWE-209).
Рис.6. Распределение выявленных уязвимостей в зависимости от ошибки (недостатка) ПО
В категорию «Иное» попали такие типы ошибок ПО, как: использование заданных в коде программы аутентификационных данных (CWE-798), переполнение буфера (CWE-120), ошибки, приводящие к фиксации сессии (CWE-384), неверное использование данных, полученных из недоверенного источника, для генерации команд ОС (CWE-22) и пр.
Говоря о методах формирования перечня потенциальных уязвимостей, следует отметить, что большинство уязвимостей было обнаружено благодаря предположениям, сделанным на основе изучения документации на объект сертификации и данных об уязвимостях в схожих с объектом сертификации продуктах (рис.7).
Рис.7. Распределение выявленных уязвимостей в зависимости от метода формирования перечня потенциальных уязвимостей
Выводы
- Надо признать, что доля уязвимостей, обнаруженных в ПО отечественного производства, несколько больше доли уязвимостей, обнаруженных в зарубежном ПО, даже на фоне существенной разницы между объемами исследованных продуктов отечественного и зарубежного производства. Думается, это объясняется существенными различиями в уровнях зрелости процессов жизненного цикла разработки безопасного ПО, внедренных у зарубежных и отечественных разработчиков ПО. Надеемся, с внедрением в стране стандарта по менеджменту безопасной разработке эта ситуация изменится.
Следует отметить, что при проведении исследований для ПО зарубежного производства в большинстве случаев разработчиками не обеспечивался доступ к исходному коду объектов исследования, что делало принципиально невозможным формирование перечня потенциальных уязвимостей на основе исследования исходных текстов программы. - Большая часть выявленных в рамках исследования уязвимостей могла быть обнаружена разработчиками ПО на ранних стадиях разработки ПО с использованием анализа архитектуры ПО с точки зрения реализации угроз безопасности информации и статического анализа исходных текстов ПО.
- С целью уменьшения количества уязвимостей разработчикам ПО рекомендуется внедрять в процессы жизненного цикла основные активности, направленные на разработку безопасного ПО (ГОСТ Р 56939) – анализ архитектуры ПО с точки зрения реализации угроз безопасности информации, статический анализ исходных текстов, тестирование безопасности. Внедрение подобных процедур в практику отечественных разработчиков ПО, на наш взгляд, повысить уровень защищенности создаваемого ПО и, как следствие, значительно уменьшить число инцидентов информационной безопасности.
Комментарии (8)
lostpassword
03.11.2017 21:04Два вопроса:
- Что происходит, если в ходе испытаний выявляется уязвимость? Не выдаётся сертификат соответствия? Что, если обнаружилась только незначительная уязвимость?
- Планируется ли пост (ну или хотя бы комментарий) про КРОВЬ КИШКИ МЯСО на сертификационных испытаниях? Ну там всякие байки из разряда "приносят нам как-то раз межсетевой экран, мы Nmap запустили и нашли скрытую админку, которую разработчики забыли из кода убрать".
Интересно всё-таки, как вы всё это выявляете. Сколько мегабайт исходного кода аналитик разбирает в день, используется ли какая-то автоматизация, что было особенно запоминающегося и так далее.
timelle
04.11.2017 12:54Скорее всего есть поправки на критичность уязвимости, от которых зависит итог сертификации. А вообще очень интересная тема. А что если найдутся уязвимости после сертификации? Сертифицируется ли отдельный билд, ветка или просто — вот сертификат «Виндоус!»
А если сертифицированный продукт вдруг явил свету критичный баг — обновление лишает сертификата или нет?
methlab
04.11.2017 19:37+1Сертифицируется конкретный билд, что делает сертификацию профанацией в масштабе государства. Как разработчик сертифицированного ПО, могу вам сказать, что дальнейшая судьба этого билда — лежать записанным на диске на полке у клиента.
vilgeforce
Квадратно-гнездовой пост тащемта ниачом…
yarric
Как я понял из поста, сертификация проводится путём испытаний сертификационных :)
vilgeforce
Проводящихся в сертификарии при помощи сертификатов. См. Сепульки.
lostpassword
Нет, ну почему же. Хотя бы понятно, что в ходе испытаний действительно что-то находилось. Уже радует.)