ГОСТ Р 71207–2024
Инструментальное средство PVS-Studio разрабатывается с учётом требований, предъявляемых к статическим анализаторам в ГОСТ Р 71207–2024. PVS-Studio выявляет критические ошибки и может использоваться при разработке безопасного программного обеспечения.
ГОСТ Р 71207–2024 – РАЗРАБОТКА БЕЗОПАСНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ. Статический анализ программного обеспечения. Общие требования.
Разработан ФСТЭК России и ИСП РАН. Впервые введён в действие 01.04.2024.
Стандарт устанавливает:
- требования к внедрению и выполнению статического анализа ПО;
- требования к методам статического анализа, инструментам анализа и к специалистам, участвующим в анализе;
- методику проверки устанавливаемых требований к инструментам анализа.
Входит в комплекс стандартов, направленных на предотвращение уязвимостей в программах, и применяется совместно с ГОСТ Р 56939.
Анализатор PVS-Studio реализует перечисленные в стандарте методы анализа для выявления критических ошибок:
- Анализ программы на синтаксическом уровне (построение AST-дерева, вывод типов);
- Внутрипроцедурный анализ потоков данных (data-flow analysis) и управления (control-flow analysis);
- Межпроцедурный и межмодульный контекстно-чувствительный анализ потока данных;
- Чувствительный к путям выполнения анализ потоков данных и управления;
- Межпроцедурный и межмодульный контекстно-чувствительный анализ помеченных данных (taint checking);
- Сигнатурный поиск (сопоставление с шаблоном);
- Анализ псевдонимов;
- Анализ косвенных вызовов;
- Статистический анализ;
- Анализ иерархии классов.
Это позволяет выявлять в коде программ на языках C, C++, C# и Java критические ошибки следующих типов:
- Ошибки переполнения буфера. Выявляется запись или чтение за пределами выделенной для буфера/массива памяти;
- Ошибки целочисленного переполнения и некорректного совместного использования знаковых и беззнаковых чисел;
- Ошибки некорректного использования системных процедур и интерфейсов, связанных с обеспечением информационной безопасности;
- Ошибки использования чувствительных данных без их предварительной проверки. Подразумеваются данные, прочитанные из внешних файлов, полученные по сети, введённые пользователем и т.д.;
- Ошибки при работе с многопоточными примитивами.
ГОСТ Р 71207–2024 дополнительно перечисляет несколько типов критических ошибок, специфичных для языков C и C++. Анализатор PVS-Studio для C и C++ их также выявляет:
- Ошибки разыменования нулевого указателя;
- Ошибки деления на ноль;
- Ошибки использования форматной строки;
- Ошибки использования неинициализированных переменных;
- Ошибки управления динамической памятью (двойное освобождение, использование освобождённой памяти и т.д.);
- Ошибки утечек памяти, незакрытых файловых дескрипторов и дескрипторов сетевых соединений.
Документация PVS-Studio содержит подробное описание всех типов ошибок, которые находит анализатор. Для каждого типа предупреждения приводятся:
- описание ошибки и объяснение возможных причин её возникновения;
- пример ошибочного кода, для которого выдаётся предупреждение;
- пример исправленного кода или рекомендация по исправлению данного типа ошибки;
- указание соответствия идентификаторам в системе классификации дефектов безопасности MITRE CWE.
Поддерживается выдача отчёта (списка предупреждений) в различных форматах, в том числе в формате открытого стандарта SARIF.
Анализатор PVS-Studio позволяет добавлять в отчёты маркировку предупреждений о критических ошибках согласно ГОСТ Р 71207–2024. Подробнее об этом можно прочитать в документации. Помимо этого, отчёты PVS-Studio возможно фильтровать по подобной маркировке. Это может быть полезно в случаях, когда отчёт должен содержать только критические сообщения по ГОСТ Р 71207–2024. Это возможно сделать с помощью плагинов PVS-Studio для сред разработки, или утилиты преобразования формата отчёта PlogConverter.
Инструмент разрабатывается в России с 2008 года (запись в Едином Реестре российского ПО N9837) и содержит более 1000 диагностических правил. Возможно использование в полностью закрытом контуре. Является SAST-решением.