PVS-Studio 7.15: развитие MISRA, CWE, OWASP, Unreal Engine
Инструмент PVS-Studio активно развивается в сторону выявления дефектов Safety и Security направленности. А именно: улучшается поддержка стандартов MISRA C:2012 и OWASP ASVS. Поддержан стандарт MISRA Compliance 2020. Из необычных нововведений можно назвать режим отображения лучших (наиболее интересных) срабатываний анализатора, который будет полезен для оценки инструмента при знакомстве с ним.


Лучшие срабатывания анализатора


В Visual Studio плагине PVS-Studio появилась возможность легко посмотреть лучшие срабатывания анализатора среди найденных в проверенном проекте. Другими словами, это самые интересные срабатывания, которые демонстрируют возможности анализатора на этапе знакомства с ним.


Мы называем этот новый режим Analyzer Best Warnings. PVS-Studio всегда группировал срабатывания анализатора по 3 уровням достоверности. И эти уровни традиционно использовались для приоритизации просмотра результатов анализа — все лучшие предупреждения должны попадать на 1-ый уровень. В новой версии анализатора мы разработали более точный механизм оценки предупреждений, использующий помимо уровней много дополнительных критериев — как статических (средняя "ценность" диагностики), так и динамических, основанных на срабатываниях анализатора на конкретной кодовой базе (например, частота обнаружения).


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


В будущих релизах мы планируем расширять возможности нового режима оценки предупреждений, а также добавить его поддержку в другие IDE плагины и режимы интеграции анализа. Подробнее про работу режима Analyzer Best Warnings можно почитать в нашем блоге и документации.


Unreal Engine


Улучшено качество анализа проектов для Unreal Engine — в C++ анализаторе PVS-Studio были дополнительно проаннотированы несколько сотен стандартных функций из этого игрового движка.


MISRA Compliance


В утилитах для конвертации отчётов поддержана генерация отчёта соответствия на основе стандарта MISRA Compliance 2020. Подробнее про этот формат и генерацию отчёта о соответствии MISRA можно почитать в нашем блоге: Зачем нужен отчёт MISRA Compliance и как его получить в PVS-Studio?


Диагностики


Так как данный релиз посвящен развитию направлений Safety и Security, новые диагностики предназначены расширить поддержку одного из следующих стандартов: MISRA C, AUTOSAR, OWASP.


Достигнута поддержка стандарта MISRA C на уровне 70%. До конца этого года мы планируем увеличить поддержку MISRA C не менее чем до 80%.


Поддержка OWASP Top 10 2017 теперь составляет 9 из 10 категорий. Таким образом, в данном списке осталась лишь одна не поддерживаемая в PVS-Studio категория — использование компонентов с известными уязвимостями. Данная категория относится к классу инструментов, известных как SCA (Software Composition Analysis). В будущих релизах для полного закрытия OWASP Top 10 мы планируем реализовать SCA в PVS-Studio C# анализаторе.


На сайте появилось сопоставление диагностик анализатора PVS-Studio со списком наиболее опасных и распространённых потенциальных уязвимостей CWE Top 25.


Новые диагностики (C, C++)


  1. V2604. MISRA. Features from <stdarg.h> should not be used.
  2. V2605. MISRA. Features from <tgmath.h> should not be used.
  3. V2606. MISRA. There should be no attempt to write to a stream that has been opened for reading.
  4. V2607. MISRA. Inline functions should be declared with the static storage class.
  5. V2608. MISRA. The 'static' storage class specifier should be used in all declarations of object and functions that have internal linkage.
  6. V2609. MISRA. There should be no occurrence of undefined or critical unspecified behaviour.
  7. V2610. MISRA. The ', " or \ characters and the /* or // character sequences should not occur in a header file name.
  8. V2611. MISRA. Casts between a pointer to an incomplete type and any other type shouldn't be performed.
  9. V2612. MISRA. Array element should not be initialized more than once.
  10. V2613. MISRA. Operand that is a composite expression has more narrow essential type than the other operand.
  11. V2614. MISRA. External identifiers should be distinct.
  12. V3555. AUTOSAR. The 'static' storage class specifier should be used in all declarations of functions that have internal linkage.

Новые диагностики (C#)


  1. V3173. Possible incorrect initialization of variable. Consider verifying the initializer.
  2. V5612. OWASP. Do not use old versions of SSL/TLS protocols as it may cause security issues.
  3. V5613. OWASP. Use of outdated cryptographic algorithm is not recommended.
  4. V5614. OWASP. Potential XXE vulnerability. Insecure XML parser is used to process potentially tainted data.
  5. V5615. OWASP. Potential XEE vulnerability. Insecure XML parser is used to process potentially tainted data.

Другие улучшения


В C++ анализаторе PVS-Studio был стандартизован формат выдачи диапазона значений переменных для больших чисел. Изменение текста некоторых сообщений может привести к тому, что они вновь появятся в отчёте, хотя ранее были подавлены с помощью baselining механизма. Если вы столкнулись с этим — пожалуйста, подавите эти предупреждения заново.


В Visual Studio плагине добавлена возможность задавать shortcut'ы для операций подавления ложных срабатываний и разметки предупреждений.


Очередная оптимизация производительности C# анализатора PVS-Studio позволит ускорить проверку крупных проектов за счёт значительного уменьшения времени подготовки (разбора) проекта перед анализом. Подробнее почитать про это можно в нашем блоге.


Некоторые свежие публикации в нашем блоге


  1. CWE Top 25 2021. Что такое, с чем едят и чем полезен при статическом анализе?
  2. Как Visual Studio 2022 съела 100 Гб памяти и при чём здесь XML бомбы?
  3. Зачем нужен отчёт MISRA Compliance и как его получить в PVS-Studio?
  4. Обзор нововведений в C# 9.
  5. Создание статического анализатора для C# на основе Roslyn API.
  6. Выявляем ошибки в релизе LLVM 13.0.0.

Комментарии (0)