Бестиарий программирования
934 subscribers
282 photos
4 videos
4 files
350 links
Наблюдения за жизнью ошибок в коде.
Андрей Карпов.

ГОСТ Р 71207-2024, ГОСТ Р 56939-2024, РБПО, Статический анализ кода
Download Telegram
Выложена запись "Безопасная поставка программного обеспечения пользователям" из цикла "Вокруг РБПО за 25 вебинаров". Это 21-й процесс ГОСТ Р 56939-2024.

Приглашённые эксперты: Мария Рачева и Александр Гадай из компании Swordfish Security.

P.S. В ходе вебинара упоминался приказ ФСТЭК №117, который вступит в силу 1 марта 2026. Некоторые мои соображения по этой теме: Аутсорсинг и приказ ФСТЭК N 117, теория РБПО, инструменты.
👍21👌1
Forwarded from Ever Secure (Aleksey Fedulaev)
#созвон_сообщества
Запись созвона

Гости выпуска: Андрей Карпов (Co-Founder PVS-Studio).
Дмитрий Шмойлов (Head of software security Kaspersky Lab)
Тема: Разбираем новый ГОСТ Р 56939-2024 - РБПО

На созвоне поговорили про ГОСТ Р 56939-2024 и построении процессов вокруг него

Приятного просмотра:
- 📹 Youtube
- 📺 VK

👀@ever_secure | 💪 Мерч | 💳Поддержать
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
У нас в блоге появился новый жанр – отзывы клиентов. Представлю первые два из них от компании Eltex и СВД ВС. Большое им спасибо, что нашли время дать обратную связь.
"На начальном этапе нас поразила скорость работы. Другие анализаторы могли увеличивать время сборки до 30 минут, а PVS-Studio добавлял буквально пару минут. Это стало весомым преимуществом. Кроме того, интеграция через CMake идеально легла в наши процессы", — Павел Ильченко, руководитель группы Security, Eltex.

Читать далее: Как крупнейший в РФ производитель сетевого оборудования Eltex сделал разработку безопаснее благодаря PVS-Studio.
"Наши разработчики привыкли работать с кодом в системе контроля версий. С PVS-Studio это гораздо проще, возможно, именно потому, что не нужно отправлять что-то на удалённый сервер, чтобы посмотреть результат. Быстро формируется прекрасный HTML-отчёт, и с ним сразу можно работать", — Евгений Дужак, руководитель группы СЗИ, СВД ВС.

Читать далее: Как СВД ВС использует PVS-Studio в сертифицируемой разработке защищённой ОС.
👍6
Открытая конференция ИСП РАН 2025 завершилась. Было приятно встретить множество знакомых лиц и пообщаться с столь концентрированным РБПО сообществом :)

Узнал о компании ЕС-лизинг у которой есть различные наработки в сфере руководств, например по методикам выявления уязвимостей и НДВ или о прядке работы с продуктом Code Scoring. Есть заготовки формуляров, ведомостей и т.д., о которых часто спрашивают слушатели нашего цикла про РБПО. По крайней мере, я сделал такой вывод из беглого знакомства. Надо будет попробовать сделать с ними вебинар, чтобы они поподробнее рассказали, что и как.

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

Но думаю, подписчикам в первую очередь интересно услышать про результаты испытаний статических анализаторов. Про это будет следующий пост.
👍8
Об итогах испытаний статических анализаторов исходного кода при организационной и методической поддержке ФСТЭК России в 2025 году (часть 1 из 6)

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

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

Откуда непредвиденная сложность и дополнительные затраты времени, из-за которых не удалось провести планируемый объём испытаний? Один пример.

Анализаторы должны запускаться на отечественной ОС. Непосредственно перед началом этапа по проверке открытых проектов регулятор выбрал несколько важных для индустрии проектов. Хорошие проекты, нормальный выбор. Но на практике оказывается, что некоторые из этих проектов сходу не получается собрать на целевой операционной системе. И вместо анализа команды участников на площадке испытаний занимались попыткой собрать эти проекты. В результате досборку и анализ некоторых из них пришлось перенести другой день.

В ретроспективе выглядит так, что такую нестыковку можно было предвидеть и избежать. Но в ходе реального процесса получилось так, как получилось, и это только один пример нестыковки. Никто не виноват, но незапланированное замедление. Польза – опыт, но часть времени уже ушло.

Итак, в испытаниях участвовали [в скобка указано сокращение, которое я буду использовать далее для краткости]:
1) ООО «ПВС», PVS-Studio. [PVS]
2) АО «НПО «Эшелон», АК-ВС 3. [Echelon]
3) АО «Позитив Текнолоджиз», Positive Technologies Application Inspector. [PT]
4) АО «СОЛАР СЕКЬЮРИТИ», Solar AppScreene. [Solar]
5) ИСП РАН, Svace. [ISP RAS]
6) Базальт СПО представляет CodeChecker, включающей связку из: clang-static-analyzer, clang-tidy, cppcheck и gcc. [Basealt]

Echelon, PT, Solar и ISP RAS заявили к испытаниям все языки: C/C++, C#, Java, Go, Python, JavaScript. PVS языки: C/C++, C#, Java. Набор от Basealt испытывался только на C/C++.

С записью докладов, посвящённых испытаниям, можно познакомиться здесь (06:05:10 - приблизительно начало).

Соответствующие презентации лежат здесь (в папке 2. 16-17 Стат. анализаторы).
👍121❤‍🔥1👌1
Об итогах испытаний статических анализаторов исходного кода при организационной и методической поддержке ФСТЭК России в 2025 году (часть 2 из 6)

По итогам можно сказать, что все инструменты успешно запускаются на отечественных ОС ALT Linux или Astra Linux. Из таблицы видно, что PVS-Studio выполнил без аномалий анализ всех проектов для всех заявленных языков (C/C++, C#, Java). Нет подсвеченных красных ячеек, которые свидетельствуют об аварийном завершении проверки, о слишком длительной проверке или об аномальном количестве срабатываний.

Например, C/C++ анализаторам PT и Echelon не удалось выполнить проверку большого проекта ceph. Или что-то пошло не так. Для Java проекта netty анализтор Solar выдал 150491 срабатываний, что превышает количество строк в проекте. И так далее.

У PVS-Studio получились хорошие количественные показатели по предупреждениям и времени работы по всем заявленным языкам. Столь же аккуратные результаты демонстрирует ISP RAS.

Однако это не значит, что у команды PVS-Studio всё прям идеально шло. Например, выяснилось, что мы не поддерживаем формат C# проекта SignalR (.slnf). Мы дорабатывали утилиту командной строки и перезапускали анализ этого проекта на одной из дополнительных встреч.
👍10😁4
Об итогах испытаний статических анализаторов исходного кода при организационной и методической поддержке ФСТЭК России в 2025 году (часть 3 из 6)

Для начала шпаргалка для тех, кто путается в TP, TN, FP, FN :)

TP – True Positive – сколько ошибок выявлено.
TN – True Negative – сколько обманок обнаружено.
FP – False Positive – ложноположительные срабатывания (ошибки первого рода) (требование ГОСТ: не более 50 %).
FN – False Negative – ложноотрицательные срабатывания, т. е. пропуски заведомо известных ошибок (ошибки второго рода) (требование ГОСТ: не более 50 %).
TP обратно пропорционально FN.
TN обратно пропорционально FP.

Результат по основной формуле для C/C++ говорит, что все анализаторы не уложились в показатель: не более 50% False Positive (FP). Показатель FP обратно пропорционален True Negative (TN), который, как видно из графика, получился маленьким у всех анализаторов.

Кстати, даже я при всей вовлечённости в процесс и тому, что приводится формула, не до конца понимаю, что, собственно, изображено на графике и как его осознать :)

Впрочем, TN в любом случае у всех маленький (большой FP). Это говорит о том, что в сумме участниками были предоставлены синтетические тесты, на которых другим вендорам было тяжело. Это подсветило для каждого его слабые места и показало, куда стоит развивать инструменты.

Примечание. Результаты по бинарному принципу (см. 9 слайд презентации) другие, но не сильно лучше: только Svace укладывается в диапазон.
👍91
Об итогах испытаний статических анализаторов исходного кода при организационной и методической поддержке ФСТЭК России в 2025 году (часть 4 из 6)

Вернёмся к графикам по основной формуле. Оставив за скобками ISP RAS (Svace), результаты PVS, Echelon, Solar, PT выглядят как-то уж совсем скромно в сравнении с набором открытых анализаторов Basealt (clang-static-analyzer, clang-tidy, cppcheck и gcc). Не могут все эти коммерческие инструменты, развиваемые десятилетиями, оказаться настолько хуже.

Почему так получилось? Формула подсчёта. Всё подсчитывалось открыто, но неожиданно в последний момент появились веса для методов анализа. Рискну предположить, что это меняет картину.

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

Возможно, именно динамическая оценка оказала значимое влияние на результаты ISP RAS. Команда ИСП РАН писала сложные тесты и, как звучало на докладе, хочется видеть больше именно таких сложных тестов. Получается, это своего рода бонус за создание таких тестов.

На мой взгляд, это рискованная дорога. Если ценятся сложные/экзотические тесты, которые только твой инструмент и может пройти, то все начнут писать только такие тесты. Ведь если тест проходят и другие, у него будет низкий вес. В результате получится набор тестов, в котором каждый в основном будет находить только то, что создала его команда. Ведь можно, основываясь на тонкостях работы анализатора или его сильных сторонах, написать такой тест, с которым другим будет тяжело.

Плюс это уводит в сторону от основной задачи тестов: проверки технологий анализа кода. Вместо технологий начинают проверяться предельные/краевые возможности инструмента.

В общем, на приведённые числа интересно посмотреть, но какие-то выводы из них нужно делать очень аккуратно или вообще не делать.
👍11
Об итогах испытаний статических анализаторов исходного кода при организационной и методической поддержке ФСТЭК России в 2025 году (часть 5 из 6)

Про Java я затрудняюсь что-то сказать. Были исключены тесты на разыменования нулевой ссылки, выход за границу контейнера и т. д., как не входящие согласно ГОСТ 71207-2024 в список критических ошибок. Жаль, зря только делали. Мы почему-то думали, что раз они были в домашнем задании как расширение, то перейдут и на основной этап.

Жаль, что не добрались до C#. Мне кажется, PVS-Studio мог бы хорошо здесь себя показать.

До оценки синтетических наборов тестов для Go, Python и JavaScript дело тоже не дошло. Но в этом мы и не участвовали (спойлер: пока по крайней мере).

Итоги по доработке ГОСТ Р 71207-2024

Обсуждалась возможность доработки стандарта. Некоторые моменты действительно, на мой взгляд, следует изменить или уточнить. Основное: меня смущает пункт про долю FP срабатываний не более 50% при тестировании открытых проектов (см. 10 раздел стандарта)

Эти числа малоосмысленны вне контекста (типа, качества) исследуемых отрытых проектов (п. 10.2.в) и вне настройки анализаторов. Возьмём проект nginx. Это проект чем только не проверялся :) Странно ожидать, что, запустив на нём анализатор кода, мы получим, скажем, 200 предупреждений, 100 из которых окажутся прям истинными критическими ошибками.

Показатель 50% TP возможен только в случае какого-то особого консервативного режима работы. Это когда анализатор выдаёт на весь проект только два предупреждения, одно из которых будет верным :) Однако это не то, что мы хотим от статического анализа. От него должна быть польза, а не просто выполнение какой-то метрики. Здесь уместно вспомнить пост "Почему фолзят SAST’ы? Часть 1, Часть 2".
👍6