

Испытания открытых и коммерческих статических анализаторов исходных кодов компилируемых и динамических языков программирования под патронажем ФСТЭК России [1] — это уникальное для отечественного рынка событие, свидетельствующее как о растущем уровне зрелости рынка и требований [2], так и о востребованности технологии статического анализа для организации процессов разработки безопасного и качественного ПО (далее — РБПО).
Особый интерес к испытаниям вызван формулировкой их целей (см. ниже) и антицелей. Во главу угла ставятся именно технологические возможности «движков» инструментов, определяемые и регламентируемые ГОСТ Р 71207–2024 [3].
Разумеется, конечного пользователя при выборе инструмента могут интересовать и иные критерии — наличие интеграционного функционала, наличие детекторов на актуальные «мисконфиги» (под этим термином понимается класс уязвимостей, связанных с неправильной настройкой ПО, например, установленные в настройках «по умолчанию» слабые режимы шифрования трафика веб-сервера), и даже наличие понятной маркетинговой стратегии разработчика инструмента. Естественно и желание увидеть некую совокупную метрику, сочетающую в себе «тёплое с мягким умноженное на цветовые предпочтения» — аналог точки в знаменитом «Гартнеровском квадрате».
Тем не менее ФСТЭК России сознательно фокусируется именно на испытаниях возможностей «движков» инструментов. Поиск различных актуальных «мисконфигов», в том числе снижающих защищенность системы, бесспорно одна из важных задач при обеспечении реальной безопасности. Качественно реализованный функционал интеграции с иными корпоративными сервисами и вспомогательным инструментами — такими как службы домена, корреляторы ошибок и багтрекеры — это практически безальтернативное свойство любого анализатора, планирующегося к применению в крупной организации. Наличие понятных обучающих и маркетинговых материалов, равно как и собственной «школы» внедренцев и последователей, разумеется, также способствует комфорту конечного пользователя. Однако реализация всего вышеуказанного, как правило, представляет собой всё-таки «задачи», а не «проблемы». Число инженеров и иных специалистов, умеющих решать данные задачи, в России и Мире бесспорно многократно выше, чем число узкопрофильных специалистов, умеющих создавать, развивать и поддерживать «сердца» инструментов статического анализа.
Именно поэтому в фокусе испытаний именно «движки» инструментов — как отечественных, так и подмножества «открытых» — это должно подчеркнуть важность создания и развития соответствующих отечественных «школ», способных в том числе составлять конкуренцию на мировом рынке. А одной из важнейших целей испытаний является выработка методики оценки возможностей движков, которая в дальнейшем может быть использована не только для оценки возможностей инструментов, но и в качестве актуализируемого обобщенного Технического Задания, на которое смогут ориентироваться начинающие коллективы, желающие попробовать свои силы в создании и развитии статических анализаторов.
[1] https://ib-bank.ru/bisjournal/news/21667
[2] https://ib-bank.ru/rbpo_pubs
[3] https://protect.gost.ru/document1.aspx?control=31&baseC=6&page=3&month=2&year=2024&search=&id=257752
Краткая характеристика испытаний
Цели испытаний
— оценка технологических возможностей отечественных и открытых статических анализаторов исходного кода
— формирование публичных методик оценки и критериев применимости анализаторов в различных видах исследований и испытаний
Критерии оценки
— соответствие требованиям ГОСТ Р 71207-2024 в части:
— соответствие дополнительным критериям, вырабатываемым жюри
Предметная область испытаний
— компилируемые языки программирования (Си / Си++ / Java / Go / C#)
— интерпретируемые языки программирования с динамической типизацией (Python / JavaScript)
Не войдут в критерии оценки
— наличие сертификатов тех или иных регуляторов или добровольных сертификаций
— интеграционный функционал и возможности инструментов по встраиванию, взаимодействию с иными видами анализаторов
— факты использования технологий искусственного интеллекта «в движке», либо «для приоритизации»
— функционал, требующий запуска ПО и его анализа в динамическом режиме
— активность маркетологов и рекламщиков; число статей и выступлений на коммерческих конференциях
План испытаний
Критерии оценки на этапе «Домашнее задание»
Комплект тестов этапа «Домашнее задание» доступен всем участникам испытаний, а оценка результатов будет носить декларативный характер. Каждая организация-участник, получив комплект тестов и, проведя испытания самостоятельно, также самостоятельно заполнит типовую анкету зафиксировав там результаты, полученные в ходе анализа комплекта тестов. Данные результаты будут переданы жюри и организаторам испытаний без какой-либо дополнительной верификации — цель данного этапа это не только верхнеуровневая оценка возможностей инструментов, но и выравнивание позиций и восприятия коллективами участников и жюри.
В критерии оценки этапа «Домашнее задание» войдут количественные показатели обнаружения заложенных в атомарные тесты дефектов кода, а также некоторые качественные характеристики инструментов, такие как маппинг детекторов на «пункты» ГОСТ 71207-2024, наличие документации по всем типам ошибок и выдача результатов разметки в открытых форматах.
Комментарии от организаций-участников испытаний
ИСП РАН (участник испытаний)
Испытания статанализаторов — важная инициатива регулятора, которая решает сразу несколько задач. Во-первых, раскрывает сильные и слабые стороны анализаторов на едином наборе тестов как для пользователей-вендоров, так и для разработчиков самих анализаторов. Во-вторых, «обкатывает» положения недавно принятого ГОСТ 71207 в отношении к уровню технологий анализа и классам критических ошибок на ряде популярных языков программирования. Можно ожидать, что по итогам испытаний будут, кроме прочего, сформированы предложения по развитию требований ГОСТ. Наконец, методика испытаний в дальнейшем сможет стать основой для оценки и других инструментов, в частности, динамических анализаторов. Также важно, что все ведущие российские разработчики анализаторов откликнулись на предложение ФСТЭК. Совместно с коллегами приятно работать и обмениваться опытом, и мы уверены, что результаты испытаний будут интересны и полезны для всего сообщества.
ПВС (участник испытаний)
Благодаря инициативе ФСТЭК у разработчиков ПО и сертификационных лабораторий появится единая методика оценки инструментов при их выборе.
В ГОСТ Р 71207–2024 (раздел 7 и 8) перечислены требования, предъявляемые к инструментам СА. Однако пользователям затруднительно самостоятельно проверить, насколько им соответствует анализатор. Нужен большой набор синтетических (малых) и реальных (больших) тестов, проверяющих, что выявляются все типы критических ошибок (п. 6.7). Более того, тесты должны проверить, что детекторы СА реализованы на должном уровне и обеспечивают глубокий анализ кода. Имеется в виду, что тесты следует делать разносторонними и иногда сложными, чтобы убедиться, что в инструменте реализованы методы анализа, перечисленные в п. 7.4., например анализ потока данных.
Всё это возможно, но ресурсозатратно. Дополнительная сложность, что пользователи инструментов просто не обладают такой же экспертизой, какая есть у команд, разрабатывающих СА. Непонятно, как убедиться, что разработанные тесты действительно проверяют все важные аспекты.
Поэтому очень важно, что ФСТЭК привлёк к созданию методики сами команды, разрабатывающие инструменты анализа. Благодаря совместным усилиям можно подготовить хорошие наборы тестов и провести их кросс-верификацию.
Ценность разрабатываемой методики в том, что затем можно взять любой инструмент и достаточно быстро, надёжно и единообразно оценить, насколько он соответствует требованиям ГОСТ Р 71207–2024.
Существование публичной методики испытаний будет стимулировать вендоров адаптировать инструменты к особенностям стандарта, что в итоге поможет пользователям. Например, для испытаний потребуется готовый набор детекторов для выявления критических ошибок. Сложно внедрять СА в процесс РБПО, если такого набора нет и пользователям самим предстоит его составлять, рискуя ошибиться.
Базальт СПО (жюри и участник испытаний)
В ходе испытаний будут выработаны материалы и способы сравнения статических анализаторов, проявятся их преимущества и ограничения. Это позволит разработчикам, в том числе в «Базальт СПО», обоснованно выбирать инструменты в зависимости от конкретных задач.
«Базальт СПО» предложила внести в программу испытаний свободные статические анализаторы Clang Static Analyzer и Cppcheck, нагрузку по сопровождению которых полностью возьмут на себя специалисты компании.
Мы также готовы способствовать открытой публикации тестов, материалов и техники тестирования не только для участников испытаний, но и для всего мирового сообщества.
Отправляя данную форму вы соглашаетесь с политикой конфиденциальности персональных данных
Отправляя данную форму вы соглашаетесь с политикой конфиденциальности персональных данных