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.
    • +24
    • 2,1k
    • 6
    PVS-Studio
    474,00
    Static Code Analysis for C, C++, C# and Java
    Поделиться публикацией

    Похожие публикации

    Комментарии 6

      +1
      А нет планов сделать облачный вариант PVS-Studio? Так чтобы с интеграцией с гитхабом и популярными сервисами CI. Недавно решил посмотреть что есть на рынке в этой сфере для плюсов и как-то там всё грустно. Начинать смотреть можно вот отсюда github.com/marketplace/category/code-quality Есть ещё всякое, вроде Coverty с интеграций с TravisCI. Но думаю для PVS-Studio это мог бы быть неплохо рынок.
        0
        С интеграцией все проще. Можно сделать докер образ с выводом ошибок в спец формате в json, и добавить его в pipeline на gitlab. docs.gitlab.com/ee/ci/examples/sast.html

        Для github'а тоже можно, но надо использовать скорее всего другой ci чем travis, и писать руками вывод ошибок.

        Но к сожалению с открытыми проектами так использовать PVS-Studio не получится, из-за требования бесплатной версии добавлять спец текст до текста лицензии.
          –1
          Но к сожалению с открытыми проектами так использовать PVS-Studio не получится, из-за требования бесплатной версии добавлять спец текст до текста лицензии.
          Ещё один вариант бесплатного лицензирования: habr.com/company/pvs-studio/blog/434012
          0
          Это возможные вектора будущего развития, но решение пока не принято. Сейчас мы заняты поддержкой MISRA и Java.

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое