Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
ГОСТ Р 71207–2024

ГОСТ Р 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.

Инструмент разрабатывается в России с 2008 года (запись в Едином Реестре российского ПО N9837) и содержит более 1000 диагностических правил. Возможно использование в полностью закрытом контуре. Является SAST-решением.

Типы критических ошибок, выявляемых PVS-Studio в коде программ, написанных на компилируемых языках (C, C++, C#, Java):

Типы критических ошибок, выявляемых PVS-Studio

Диагностики

Ошибки непроверенного использования чувствительных данных (ввода пользователя, файлов, сети и пр.)

C, C++: V541, V755, V1010

C#: V5608, V5609, V5610, V5611, V5614, V5615, V5616, V5618, V5619, V5620, V5621, V5622, V5623, V5624, V5626, V5627, V5628

Java: V5309

Ошибки целочисленного переполнения и некорректного совместного использования знаковых и беззнаковых чисел

C, C++: V569, V605, V658, V784, V1012, V1026, V1028, V1029, V1070, V1081, V1083, V1085, V1112

C#: V3134, V3200, V3204

Java: V6034, V6117, V6124

Ошибки переполнения буфера (записи или чтения за пределами выделенной для буфера памяти)

C, C++: V512, V518, V557, V582, V594, V635, V643, V645, V752, V781, V1038, V1111

C#: V3106, V3184

Java: V6025, V6079

Ошибки некорректного использования системных процедур и интерфейсов, связанных с обеспечением информационной безопасности (шифрования, разграничения доступа и пр.)

C, C++: V597, V618, V631, V642, V1057, V1072, V1109, V5014

C#: V3039, V5601, V5612, V5613, V5617

Java: V5305, V6109

Ошибки при работе с многопоточными примитивами (интерфейсами запуска потоков на выполнение, синхронизации и обмена данными между потоками и пр.)

C, C++: V513, V712, V720, V744, V1011, V1018, V1025, V1036, V1088, V1089

C#: V3032, V3054, V3079, V3082, V3083, V3089, V3090, V3147, V3167, V3168, V3190, V5604, V5605

Java: V5304, V6064, V6070, V6074, V6082, V6095, V6102, V6125

Согласно требованиям стандарта, PVS-Studio дополнительно выявляет следующие типы критических ошибок в коде программ на языках C и C++. Для других языков эти типы ошибок не считаются критичными:

Типы критических ошибок, выявляемых PVS-Studio

Диагностики

Ошибки разыменования нулевого указателя

C, C++: V522, V595, V664, V713, V757, V769, V1004

Ошибки деления на ноль

C, C++: V609

Ошибки управления динамической памятью (выделения, освобождения, использования освобожденной памяти)

C, C++: V515, V554, V585, V586, V599, V611, V613, V630, V641, V680, V697, V723, V726, V748, V749, V752, V758, V772, V774, V1002, V1006, V1062

Ошибки использования форматной строки

C, C++: V510, V541, V576, V618

Ошибки использования неинициализированных переменных

C, C++: V573, V614, V670, V679, V730, V788, V1007, V1050, V1077, V1086

Ошибки утечек памяти, незакрытых файловых дескрипторов и дескрипторов сетевых соединений

C, C++: V599, V701, V773, V1020, V1023, V1100, V1106, V1110

Серия вебинаров по тематике ГОСТ:

close form

Заполните форму в два простых шага ниже:

Ваши контактные данные:

Шаг 1
Поздравляем! У вас есть промокод!

Тип желаемой лицензии:

Шаг 2
Team license
Enterprise license
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности
close form
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Бесплатная лицензия PVS‑Studio для специалистов Microsoft MVP
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
check circle
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок:

  • Промоакции
  • Оповещения
  • Спам