Анализ уязвимостей программного обеспечения в настоящее время является обязательным мероприятием, выполняемым специалистами испытательных лабораторий отечественных систем сертификации средств информационной безопасности (ИСИБ).
Данный вид работ выполняется как при сертификации на соответствие требованиям профилей защиты, в которые явно включены требования семейства трастов AVA_VAN «Анализ уязвимостей» (стандарты по «Общим критериям»), так и при тестировании на соответствие требованиям.
технических условий или классических руководящих документов Гостехкомиссии России.
В данном исследовании представлена статистика выявления уязвимостей в программном обеспечении, прошедшем сертификационные испытания в Испытательной лаборатории НПО «Шелон» в период 2016 – 2017 гг.
Методология исследования
Методика анализа уязвимостей, используемая испытательными лабораториями (ИЛ) в рамках сертификационных испытаний, основана на «Общей методологии оценки» (международный стандарт ISO/IEC 18045) и в целом состоит из следующих этапов.ЭШаг 1. Выявление известных (подтвержденных) уязвимостей объекта сертификации.
На этом этапе специалисты ИЛ ищут известные (подтвержденные) уязвимости в общедоступных источниках информации, например: в Банке данных угроз информационной безопасности ФСТ России, ресурсах CVE, NVD, ресурсах разработчиков программного обеспечения.
Если обнаруживается информация об уязвимостях, то тесты приостанавливаются до тех пор, пока в ИЛ не будут переданы обновления программного обеспечения, «закрывающие» известные уязвимости.
«Шаг 2. Выявление ранее неопубликованных уязвимостей объекта сертификации.
На этом этапе эксперты IL обычно выполняют следующие шаги:
- шаг 1: формирование списка потенциальных уязвимостей объекта сертификации на основе изучения различных типов источников данных (проектной документации объекта сертификации, исходного текста, информации из открытых источников);
- шаг 2: создание тестовых сценариев (атак) для каждой выявленной потенциальной уязвимости;
- Шаг 3: проведение тестов для определения правильности сделанного предположения.
- экспертно-документальный метод, предполагающий формирование перечня потенциальных уязвимостей на основе информации об известных уязвимостях в продуктах со схожим функционалом, в других версиях (например, более старых) объекта сертификации, в заимствованных компонентах, типичных уязвимостях, характерных для технологий используются при разработке объектов сертификации;
- статический анализ исходных кодов программного обеспечения (если доступ к исходным кодам предоставляется в рамках сертификационных испытаний);
- фаззинговое тестирование.
.
Предполагается, что уязвимости, выявленные в ходе сертификационных испытаний/инспекционных проверок, должны пройти процедуру раскрытия через Банк данных угроз информационной безопасности ФСТ России.
Объекты исследования
Исследования проводились в период 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) - анализ архитектуры программного обеспечения с точки зрения реализации угроз информационной безопасности, статический анализ.
исходных кодов, тестирование безопасности.
Внедрение подобных процедур в практику отечественных разработчиков программного обеспечения, на наш взгляд, позволит повысить уровень безопасности создаваемого программного обеспечения и, как следствие, существенно снизить количество инцидентов информационной безопасности.
-
Ярославские Выбоины
19 Oct, 24 -
Реанимация Тестера Маркуса
19 Oct, 24 -
Научно-Популярные Видеоролики (Конкурс)
19 Oct, 24 -
Сервис Сбора Статистики С Помощью Flussonic
19 Oct, 24 -
Мультфильмы И Сериалы
19 Oct, 24 -
Введение В Высокочастотную Торговлю (Hft)
19 Oct, 24