PVS-Studio 7.13: SQL инъекции, Blame Notifier, .NET 5
- Tainted data analysis, SQL инъекции
- .NET 5
- Blame Notifier
- 16 новых диагностик
- Прочее
- Некоторые статьи, опубликованные с момента предыдущего релиза
Очередная версия статического анализатора PVS-Studio интересна следующими нововведениями: анализ непроверенных данных (tainted data analysis), поддержка .NET 5, утилита Blame Notifier научилась сортировать предупреждения по датам коммитов.

Хотим обратить внимание, что сайт продукта PVS-Studio сменил свой адрес и дизайн. Теперь он располагается здесь: https://pvs-studio.com. Если вы заметите на сайте какие-то ошибки, то мы будем рады, если вы сообщите нам про них.
Также хотим отметить, что теперь анализатор PVS-Studio включен в реестр отечественного ПО.
Tainted data analysis, SQL инъекции
В PVS-Studio для C++ уже давно имеются механизмы для поиска фрагментов кода, где используются непроверенные исходные данные. Про это ещё в 2018 году Сергей Васильев написал заметку "Стреляем в ногу, обрабатывая входные данные". Сейчас Сергей является руководителем C# направления, и он применил свои знания и опыт, чтобы развить tainted data analysis в ядре C# анализатора.
В C# анализаторе PVS-Studio появилось первое диагностическое правило из стандарта OWASP ASVS, ищущее в коде ошибки, связанные с непроверенными данными (tainted data). Это диагностическое правило V5608 для поиска потенциальных SQL инъекций. Данный класс ошибок занимает важное место в рейтинге OWASP Top 10, и в будущих релизах PVS-Studio мы будем добавлять диагностические правила для поиска множества других видов потенциальных tainted data уязвимостей.
.NET 5
Теперь PVS-Studio полноценно поддерживает анализ проектов, ориентированных на .NET 5 и использующих возможности C# 9. Кроме того, C# анализатор под Linux и macOS также использует платформу .NET 5 для своей работы. Таким образом, на этих системах потребуется наличие установленного пакета .NET 5 SDK. Версия анализатора под Windows, как и раньше, использует .NET Framework 4.7.2.
Более подробно об этом можно прочитать в статье "Свершилось! PVS-Studio поддерживает анализ проектов под .NET 5".
Blame Notifier
Утилита Blame Notifier для автоматической рассылки отчётов о найденных анализатором предупреждениях на основе blame информации из системы контроля версий теперь может сортировать предупреждения по номерам и датам коммитов. Это позволяет видеть предупреждения на код, появившиеся только за определённый день.
Раньше аналогичная функциональность была доступна только при использовании PVS-Studio в связке с SonarQube. Не все наши пользователи хотят использовать SonarQube, но им нужна возможность сортировки предупреждений по датам. Теперь стало больше вариантов и сценариев. Подробнее: Новые возможности PVS-Studio по оповещению разработчиков о найденных ошибках.
Примечание. Продолжая тему отчётов, следует отметить новую стороннюю утилиту. Теперь автоматическую публикацию отчётов можно делать не только с помощью Blame Notifier. Наш пользователь написал легковесный аналог (не требующий .NET для работы) данной утилиты, который вы можете попробовать на GitHub (Blame Notifier Script).
16 новых диагностик
- V832. It's better to use '= default;' syntax instead of empty body.
- V1070. Signed value is converted to an unsigned one with subsequent expansion to a larger type in ternary operator.
- V1071. Consider inspecting the 'foo' function. The return value is not always used.
- V1072. The buffer is securely cleared not on all execution paths.
- V1073. Consider checking for misprints. Check the following code block after the 'if' statement.
- V2577. MISRA. The function argument corresponding to a parameter declared to have an array type should have an appropriate number of elements.
- V2578. MISRA. An identifier with array type passed as a function argument should not decay to a pointer.
- V2579. MISRA. Macro should not be defined with the same name as a keyword.
- V2580. MISRA. The 'restrict' specifier should not be used.
- V2581. MISRA. Single-line comments should not end with a continuation token.
- V2582. MISRA. Block of memory should only be freed if it was allocated by a Standard Library function.
- V3170. Both operands of the '??' operator are identical.
- V3171. Potentially negative value is used as the size of an array.
- V3551. AUTOSAR. An identifier with array type passed as a function argument should not decay to a pointer.
- V5013. OWASP. Storing credentials inside source code can lead to security issues.
- V5608. OWASP. Possible SQL injection. Potentially tainted data is used to create SQL command.
Прочее
- В C++ анализаторе улучшена поддержка проверки Ninja проектов на Windows с использованием JSON Compilation Database (compile_commands.json).
- Использование компилятора Clang для сборки C++ анализатора PVS-Studio позволило сократить на 10% время его работы при проверке исходных файлов.
- Плагин PVS-Studio для JetBrains Rider теперь поддерживает работу с версией Rider 2021.1.
- В утилиту для поверки C++ и C# Visual Studio проектов PVS-Studio_Cmd.exe добавлена возможность передавать файл подавленных сообщений напрямую. До этого подавленные сообщения можно было добавлять только на уровне проектов и solution'а.
0