﻿# PVS\-Studio как SAST решение

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

![0577_SAST_ru/image1.png](https://import.viva64.com/docx/blog/0577_SAST_ru/image1.png)

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

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

Для удобства специалистов, которые будут использовать PVS\-Studio как SAST инструмент, анализатор отображает свои предупреждения на [Common Weakness Enumeration](https://cwe.mitre.org/), [SEI CERT Coding Standards](https://wiki.sei.cmu.edu/confluence/display/seccode/SEI+CERT+Coding+Standards), а также поддерживает стандарт [MISRA](https://www.misra.org.uk/) \(сейчас находится в процессе реализации\)\.

Таблицы соответствий [диагностик](https://pvs-studio.ru/ru/docs/warnings/) PVS\-Studio различным стандартам:

1. [Соответствие CWE](https://pvs-studio.ru/ru/pvs-studio/sast/cwe/)
1. [Соответствие SEI CERT](https://pvs-studio.ru/ru/pvs-studio/sast/cert/)
1. Поддержка MISRA \(планируем реализовать до конца 2018 года\)

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

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

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

![0577_SAST_ru/image2.png](https://import.viva64.com/docx/blog/0577_SAST_ru/image2.png)

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

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

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

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

Дополнительно предлагаем ознакомиться со статьёй "[Как PVS\-Studio может помочь в поиске уязвимостей?](https://pvs-studio.ru/ru/blog/posts/cpp/0514/)", где показаны ошибки, которые приводили к уязвимостям, и которых можно было бы избежать при использовании в процессе разработке инструмента PVS\-Studio\.

Начните использовать PVS\-Studio в качестве SAST решения: [скачать PVS\-Studio](https://pvs-studio.ru/ru/pvs-studio/download/)\.