PVS-Studio как SAST решение

PVS-Studio и SAST


До недавнего времени в своих статьях мы позиционировали PVS-Studio как инструмент для выявления ошибок в коде. При этом мы почти не рассматривали PVS-Studio в контексте безопасности. Попробуем немного исправить эту ситуацию и взглянем на инструмент с точки зрения тестирования защищённости приложений и DevSecOps практик.
PVS-Studio является средством статического тестирования защищённости приложений (Static Application Security Testing, SAST). Другими словами, анализатор PVS-Studio выявляет не только опечатки, мёртвый код и другие ошибки, но и потенциальные уязвимости.

Инструмент работает в среде Windows, Linux, macOS и анализирует код программ на языке С, C++ и C#. К концу 2018 года планируется поддержка языка Java.

Для удобства специалистов, которые будут использовать PVS-Studio как SAST инструмент, анализатор отображает свои предупреждения на Common Weakness Enumeration, SEI CERT Coding Standards, а также поддерживает стандарт MISRA (сейчас находится в процессе реализации).

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

  1. Соответствие CWE
  2. Соответствие SEI CERT
  3. Поддержка MISRA (планируем реализовать до конца 2018 года)


Наиболее распространённой классификацией предупреждений SAST инструментов является Common Weakness Enumeration (CWE). Посмотрим, использую язык CWE, как анализатор PVS-Studio помогает предотвратить уязвимости.

Если обратиться к базе данных общеизвестных уязвимостей информационной безопасности (CVE), то выясняется, что часто причиной уязвимостей в программах являются не какие-то недоработки в системе безопасности, а обыкновенные программные ошибки. Национальный институт стандартов и технологий (NIST) подтверждает это, заявляя, что 64% уязвимостей в программах связаны с ошибками в коде.

Именно такие ошибки, которые потенциально могут привести к уязвимостям, и описаны в CWE. Соответственно, если ошибку можно классифицировать как CWE, есть вероятность, что она может эксплуатироваться как уязвимость и в итоге пополнить список CVE. Для наглядности можно использовать изображение воронки:

Ошибки, CWE, CVE


Есть множество ошибок. Часть из них представляют опасность с точки зрения безопасности и поэтому классифицируются согласно CWE. Некоторые CWE-ошибки можно эксплуатировать и они представляют собой уязвимости.

Да, на практике только очень малая часть из найденных CWE-ошибок представляет опасность и является уязвимостями. Однако если вы разрабатываете security-critical приложения и заботитесь о безопасности пользователей, то должны крайне серьезно отнестись к этим ошибкам. Устраняя CWE-ошибки, вы защищаете своё приложение от многих уязвимостей.

Теперь взаимосвязь между ошибками, PVS-Studio и уязвимостями становится очевидной. Анализатор PVS-Studio находит ошибки и многие из них классифицирует как CWE. Исправляя эти ошибки, вы делаете своё приложение более надёжным. Обнаружение в продукте уязвимости может серьёзно затронуть его репутацию. Исправляя ошибки анализатора, вы существенно сокращаете этот риск на наиболее раннем этапе разработки — написании кода.

Анализатор PVS-Studio, как и любой другой инструмент, не даёт гарантий, что в коде нет уязвимостей. Однако если PVS-Studio предотвратит, например, 50% потенциальных уязвимостей, это уже замечательно.

Дополнительно предлагаем ознакомиться со статьёй «Как PVS-Studio может помочь в поиске уязвимостей?», где показаны ошибки, которые приводили к уязвимостям, и которых можно было бы избежать при использовании в процессе разработке инструмента PVS-Studio.

Начните использовать PVS-Studio в качестве SAST решения: скачать PVS-Studio.

© Habrahabr.ru