В этой статье я со своих позиций Senior Software Architect и Security Champion в микроядерной операционной системе KasperskyOS рассмотрю кейсы-ловушки, в которые можно попасть практически в любом из стандартов, и покажу, что меняется в С++20/23/26, — уменьшается ли количество кейсов с неопределенным поведением, и становится ли С++ безопаснее.
Рубрика «статический анализ кода»
Опасность устарела: несколько важных нюансов в новых стандартах C++
2024-06-27 в 14:17, admin, рубрики: C, c++, C++20, cybersecurity, LLVM, qt, stm32, undefined behavior, безопасность, информационная безопасность, кибератаки, кибербезопасность, компилятор, Компиляторы, Программирование, разработка, Си, системное программирование, статический анализ кода, уязвимости, языки программированияОбъявляю ошибку вида if (x = 42) вымирающей и заношу её в Красную книгу C и C++ багов
2024-05-30 в 7:53, admin, рубрики: C, c++, pvs-studio, баги, Компиляторы, Красная книга, нотация Йоды, ошибки в коде, Программирование, Си, статический анализ кода
Если спросить программиста, какие баги чаще всего можно встретить в C и C++ коде, он назовёт разыменование нулевого указателя, неопределённое поведение, выход за границу массива и другие, на его взгляд, типовые паттерны ошибок. Скорее всего, он назовёт и случайное присваивание в условии. Но действительно ли эта ошибка распространена в наше время?
Насколько хорошо защищены ваши пароли? Проверка проекта Bitwarden
2022-05-13 в 12:55, admin, рубрики: .net, C#, pvs-studio, Блог компании PVS-Studio, статический анализ кодаBitwarden – менеджер паролей с открытым исходным кодом. Это программное обеспечение помогает генерировать уникальные пароли и управлять ими. Получится ли у анализатора PVS-Studio отыскать ошибки в таком проекте?
Введение
Брутальный Protocol Buffers от Google vs статический анализ кода
2021-11-05 в 10:58, admin, рубрики: c++, open source, protobuf, protocol buffers, pvs-studio, SAST, баги, Блог компании PVS-Studio, информационная безопасность, открытые проекты, статический анализ, статический анализ кодаProtocol Buffers — это очень популярный, крутой и качественный проект, развиваемый в основном компанией Google. Это хороший вызов для статического анализатора кода PVS-Studio. Найти хоть что-то — это уже достижение. Попробуем.
Выявляем ошибки в релизе LLVM 13.0.0
2021-10-08 в 19:16, admin, рубрики: c++, clang, clang static analyzer, Clang-Tidy, LLVM, llvm 13, open source, pvs-studio, баги, Блог компании PVS-Studio, информационная безопасность, Компиляторы, обзоры кода, опечатки, открытый исходный код, ошибки в коде, статический анализ кода
Задача коммерческих статических анализаторов выполнять более глубокий и полный анализ кода, чем компиляторы. Давайте посмотрим, что смог обнаружить PVS-Studio в исходном коде проекта LLVM 13.0.0.
Один день из жизни разработчика PVS-Studio, или как я отлаживал диагностику, оказавшуюся внимательнее трёх программистов
2021-07-05 в 12:51, admin, рубрики: C, c++, static analysis, static analyzer, strncat, Блог компании PVS-Studio, ложное срабатывание, С++, статический анализ, статический анализ кода, статический анализаторГлавное предназначение статических анализаторов – найти те ошибки, которые остались незамеченными разработчиком. И недавно команда PVS-Studio снова столкнулась с интересным примером мощи этой методики.
Релиз ruleguard v0.3.0
2021-01-24 в 14:52, admin, рубрики: Go, golang, open source, ruleguard, static analysis, Программирование, статический анализ кода, управление разработкойА что, если я скажу вам, что линтеры для Go можно создавать вот таким декларативным способом?
func alwaysTrue(m dsl.Matcher) {
m.Match(`strings.Count($_, $_) >= 0`).Report(`always evaluates to true`)
m.Match(`bytes.Count($_, $_) >= 0`).Report(`always evaluates to true`)
}
func replaceAll() {
m.Match(`strings.Replace($s, $d, $w, $n)`).
Where(m["n"].Value.Int() <= 0).
Suggest(`strings.ReplaceAll($s, $d, $w)`)
}
Год назад я уже рассказывал об утилите ruleguard. Сегодня хотелось бы поделиться тем, что нового появилось за это время.
Основные нововведения:
- Поддержка установки наборов правил через Go модули (bundles)
- Программируемые фильтры (компилируются в байт-код)
- Добавлен режим отладки фильтров
- Появился хороший обучающий материал: ruleguard by example
- У проекта появились реальные пользователи и внешние наборы правил
- Онлайн песочница, позволяющая попробовать ruleguard прямо в браузере
Продолжение: обидно за мнения про статические анализаторы кода
2020-10-16 в 7:36, admin, рубрики: C, c++, pvs-studio, volatile, Блог компании PVS-Studio, опечатки, ошибки в коде, С++, Си, Совершенный код, статический анализ кода, статический анализатор кода
Планировалось, что, написав статью "Обидно за мнения про статические анализаторы кода", мы выговоримся и спокойно отпустим тему. Но неожиданно эта статья вызвала бурный отклик. К сожалению, обсуждение пошло не туда, и сейчас мы сделаем вторую попытку объяснить своё видение ситуации.
Читать полностью »
Обидно за мнения про статические анализаторы кода
2020-10-12 в 13:30, admin, рубрики: C, c++, pvs-studio, Блог компании PVS-Studio, Программирование, Си, статический анализ кода, статический анализатор кодаИнструменты статического анализа кода ушли далеко вперёд. Это вовсе не те "линтеры", которые активно применялись 20 лет тому назад. Однако многие по-прежнему относятся к ним как к очень простым инструментам. Обидно. Обидно как за методологию анализа кода в целом, так и за инструмент PVS-Studio.