>
>
Релиз PVS-Studio 7.10: OWASP, AUTOSAR, …

Андрей Карпов
Статей: 671

Релиз PVS-Studio 7.10: OWASP, AUTOSAR, SARIF

Мы развиваем PVS-Studio не только как классический анализатор кода, но и в направлении Security и Safety. В связи с этим начата работа по поддержке стандартов OWASP и AUTOSAR C++14. Для облегчения интеграции PVS-Studio с другими инструментами контроля качества кода, поддержана конвертация результатов работы анализатора в формат SARIF. Реализованы 22 новые диагностики для языков C, C++, C# и Java. Из этого пресс-релиза вы узнаете об этих и других нововведениях более подробно.

Пока мир борется с вирусами, мы боремся с ошибками и потенциальными уязвимостями. Чтобы борьба была эффективней, в этом релизе PVS-Studio мы развивали следующие направления:

  • security (SAST);
  • safety;
  • интеграция;
  • новые диагностики.

Смотри, а не читай (YouTube)

Security

Анализатор PVS-Studio является SAST (Static Application Security Testing) инструментом и помогает выявлять потенциальные уязвимости и угрозы нулевого дня. Для удобства работы специалистов по безопасности мы уже достаточно давно классифицировали предупреждения PVS-Studio согласно списку CWE и стандарту SEI CERT.

Следующим шагом стало развитие анализатора в сторону поддержки стандарта OWASP ASVS. Нам ещё предстоит работа по более полной поддержке поиска паттернов потенциальных уязвимостей, описанных в OWASP. Однако, начиная с PVS-Studio 7.10, уже можно познакомиться с таблицей соответствия OWASP диагностикам. Пока таблица небольшая, но она будет постепенно пополняться.

Safety

Для обеспечения качества и надёжности программного обеспечения используются такие стандарты, как MISRA C и MISRA C++. Наиболее часто они применяются при разработке программного обеспечения для встраиваемых устройств. Подробнее про эти стандарты вы можете прочитать в статье "Что такое MISRA и как её готовить".

Однако, стандарт MISRA С++ уже достаточно устарел и не рассчитан на современные версии языка программирования C++. Поэтому ему на смену приходит стандарт AUTOSAR C++14 Coding Guidelines.

Мы решили, помимо MISRA, начать поддерживать и этот более новый стандарт. Первые работы в этом направлении проведены как раз в PVS-Studio 7.10. Таблица соответствия предупреждений PVS-Studio и AUTOSAR доступна здесь. Как и в случае с другими стандартами, мы будем постепенно расширять поддержку стандарта AUTOSAR.

Интеграция

Утилиты для преобразования результатов анализа PVS-Studio (PlogConverter.exe для Windows и plog-converter для Linux\macOS) теперь поддерживают конвертацию в формат SARIF (Static Analysis Results Interchange Format).

SARIF - это универсальный открытый формат для представления результатов работы инструментов, осуществляющих поиск ошибок, дефектов безопасности и защищённости. Этот формат поддерживается многими статическими анализаторами и позволяет совместно использовать различные инструменты контроля качества кода в единых экосистемах.

В плагин PVS-Studio для JetBrains Rider добавлена поддержка работы с результатами анализа при проверке проектов для Unreal Engine (JetBrains Rider для Unreal Engine доступен сейчас по программе раннего доступа).

SonarQube плагин PVS-Studio теперь умеет ассоциировать сообщения анализатора, имеющие CWE (Common Weakness Enumeration) идентификатор, с сообщениями о дефектах защищённости на вкладке Security Category.

Новые диагностики

Язык C, C++

  • V830. Decreased performance. Consider replacing the use of 'std::optional::value()' with either the '*' or '->' operator.
  • V831. Decreased performance. Consider replacing the call to the 'at()' method with the 'operator[]'.
  • V1064. The left operand of integer division is less than the right one. The result will always be zero.
  • V1065. Expression can be simplified: check similar operands.
  • V1066. The 'SysFreeString' function should be called only for objects of the 'BSTR' type.
  • V1067. Throwing from exception constructor may lead to unexpected behavior.

Язык C#

  • V3156. The argument of the method is not expected to be null.
  • V3157. Suspicious division. Absolute value of the left operand is less than the right operand.
  • V3158. Suspicious division. Absolute values of both operands are equal.
  • V3159. Modified value of the operand is not used after the increment/decrement operation.
  • V3160. Argument of incorrect type is passed to the 'Enum.HasFlag' method.
  • V3161. Comparing value type variables with 'ReferenceEquals' is incorrect because compared values will be boxed.
  • V3162. Suspicious return of an always empty collection.
  • V3163. An exception handling block does not contain any code.
  • V3164. Exception classes should be publicly accessible.

Язык Java

  • V6093. Automatic unboxing of a variable may cause NullPointerException.
  • V6094. The expression was implicitly cast from integer type to real type. Consider utilizing an explicit type cast to avoid the loss of a fractional part.
  • V6095. Thread.sleep() inside synchronized block/method may cause decreased performance.
  • V6096. An odd precise comparison. Consider using a comparison with defined precision: Math.abs(A - B) < Epsilon or Math.abs(A - B) > Epsilon.
  • V6097. Lowercase 'L' at the end of a long literal can be mistaken for '1'.
  • V6098. A method does not override another method from the base class.
  • V6099. The initial value of the index in the nested loop equals 'i'. Consider using 'i + 1' instead.

Дополнительные ссылки

Таблицы соответствий диагностик PVS-Studio различным стандартам:

Свежие публикации в нашем блоге, на которые хочется обратить внимание: