Ничего эпического в этой статье не будет. Мы проверили с помощью PVS-Studio исходный код Bitcoin. Нашли всего пару подозрительных мест. Это не удивительно. Думаю, эти исходные коды не проверял только ленивый. Но раз проверили, то решил написать маленькую заметку. Так сказать, «для галочки».
Читать полностью »
Рубрика «статический анализ кода» - 26
Проверка Bitcoin
2014-07-29 в 10:48, admin, рубрики: bitcoin, c++, open source, pvs-studio, static code analysis, Блог компании PVS-Studio, Си, статический анализ кодаРабота с ложными срабатываниями в PVS-Studio и CppCat
2014-06-20 в 18:00, admin, рубрики: c++, code review, cppcat, pvs-studio, static code analysis, Блог компании PVS-Studio, обзор кода, разработка, статический анализ кода, метки: c++, code review, cppcat, pvs-studio, static code analysis, обзор кода, Си, статический анализ кода
Недавно я решил вновь проверить физический движок Newton Game Dynamics. Код проекта качественный. Поэтому почти не было предупреждений, выявивших ошибки. Зато было несколько десятков ложных срабатываний. Вроде бы писать статью не о чем. Но мне пришла в голову мысль, что можно написать о том, как работать с ложными срабатываниями, и как сделать, чтобы их не было. Проект Newton Game Dynamics показался мне подходящим для этого кандидатом.
Читать полностью »
Легко и просто проверяем Firefox с помощью PVS-Studio Standalone
2014-06-15 в 9:39, admin, рубрики: bugs, c++, code review, Firefox, open source, pvs-studio, static code analysis, Блог компании PVS-Studio, обзор кода, ошибки в программе, статический анализ кода, метки: bugs, c++, code review, firefox, pvs-studio, static code analysis, обзор кода, ошибки в программе, Си, статический анализ кода
Три года назад мы уже проверяли Mozilla Firefox с помощью анализатора PVS-Studio. Тогда это было неудобно и затруднительно. Для Firefox отсутствует проектный файл для Visual Studio. Сборка осуществляется с помощью make-файлов. Поэтому просто взять и проверить проект нельзя. Требовалось интегрировать PVS-Studio в систему сборки, что оказалось трудной задачей. В результате, как мне помнится, была проанализирована только часть проекта. Но всё поменялось, когда появился PVS-Studio Standalone. Теперь можно отследить все запуски компиляторов и легко проверить проект.
Читать полностью »
CppCat провереяет OpenMW: во вселенной Morrowind не всё гладко
2014-05-28 в 5:38, admin, рубрики: bugs, c++, code review, cppcat, game development, static code analysis, Блог компании PVS-Studio, разработка игр, статический анализ кода, метки: bugs, c++, code review, cppcat, static code analysis, разработка игр, Си, статический анализ кода
Я проверил проект OpenMW с помощью CppCat и написал эту крошечную статью. Нашлось слишком мало ошибок. Но меня просили написать про это проверку этого проекта статью, и вот она.
Читать полностью »
Особенности мобильных приложений на платформе iOS, использующих логин и пароль клиентов для доступа к платному контенту
2014-04-02 в 11:03, admin, рубрики: iOS, анализ защищенности, анализ кода, аудит ИБ, Блог компании Инфосистемы Джет, защита информации, информационная безопасность, кибератаки, мобильные приложения, статический анализ кода, хакерство Разработчики мобильных приложений зачастую сталкиваются с необходимостью хранить конфиденциальные данные пользователя на пользовательском устройстве. Это могут быть, например, номер кредитной карточки или аутентификационные данные. В этой статье мы поговорим о типичных ошибках реализации хранения конфиденциальных данных с точки зрения информационной безопасности на примере мобильной платформы iOS.
Обычно настройки приложения хранятся в конфигурационных файлах. Библиотека Cocoa Touch, используемая при разработке приложений для мобильной платформы iOS, предоставляет слой абстракции для хранения настроек приложения в классе NSUserDefaults. Класс NSUserDefaults реализует нелюбимый многими шаблон проектирования «Одиночка» (более известный как Singleton), предоставляя доступ к интерфейсу над стандартным конфигурационным файлом приложения.
Стандартный файл конфигурации приложения располагается в его домашней директории по относительному адресу Library/Preferences/<your.company.name>.<app.name>.plist. Как и другие файлы, расположенные в «песочнице», он не доступен на чтение для других приложений пользовательского уровня. Исключения составляют устройства, подвергнутые модификациям политики безопасности системы (jailbroken-устройства).
Многие разработчики по достоинству оценили удобство работы с классом NSUserDefaults. Подавляющее число приложений используют его для хранения внутренних настроек и/или настроек пользователя. К сожалению, удобство использования редко коррелирует с безопасностью. Хранение конфиденциальных данных пользователя в стандартном файле настроек является типичной ошибкой разработчиков, приводящей к утечке пользовательской информации.
В результате исследования исходного кода Приложения А на наличие ошибок в контексте информационной безопасности было выявлено, что приложение сохраняет данные аутентификации пользователя в конфигурационном файле настроек. Загрузив Приложение А на iPad под управление оригинальной операционной системы iOS версии 6.1.3, мы прошли стадию аутентификации и принялись за исследование файла настроек приложения.
Рис. 1. Загрузка приложения на iPad
Для демонстрации уязвимости мы использовали приложение iExplorer, доступное для операционных систем семейств Windows NT и Mac OS X. Приложение iExplorer представляет собой графический файловый менеджер для устройств под управлением iOS. Находим Приложение А в списке установленных приложений и открываем Library/Preferences/<settings-name>.plist на чтение.
Рис. 2. Внешний вид приложения iExplorer c доступом к нужному файлу
Рис. 3. Конфигурационный файл с конфиденциальной информацией
Математикам доверяй, но проверяй
2014-03-30 в 5:52, admin, рубрики: bugs, c++, error, pvs-studio, SciLab, Блог компании PVS-Studio, математический пакет, обзор кода, ошибки в коде, ошибки в программе, Си, статический анализ кода, метки: bugs, c++, error, pvs-studio, SciLab, математический пакет, обзор кода, ошибки в коде, ошибки в программе, Си, статический анализ кода
Я временами бываю озадачен, рассматривая ошибки в очередном программном проекте. Многие из этих ошибок живут в проектах годами. Смотришь на сотню ляпов в коде и удивляешься, как программа вообще работает. И ведь как-то работает. Ей даже пользуются. Причем, я говорю не о коде, рисующем покемона в игре. А, например, о математических библиотеках. Да, вы верно догадались. В этой статье пойдет речь о проверке кода математической библиотеки Scilab.
Читать полностью »
PVS-Studio теперь поддерживает любую сборочную систему на Windows и любой компилятор. Легко и «из коробки»
2014-03-28 в 5:19, admin, рубрики: pvs-studio, visual c++, Блог компании PVS-Studio, статический анализ кода, метки: pvs-studio, visual c++, статический анализ кода
Сейчас в PVS-Studio мы делаем бомбу!
В следующей версии PVS-Studio 5.15 сможет проверять проекты, которые собираются абсолютно в любой сборочной системе: Makefile, Visual Studio Project, собственная система сборки на основе Python, Bash или что там еще… Теперь мы можем просто «наблюдать» за вызовами компилятора. И собирать всю необходимую информацию для запуска анализа автоматически. Более того, это работает с любым (разумным) компилятором C/C++, который запускается в Windows. Хотите подробностей?
Сравнение анализаторов кода: CppCat, Cppcheck, PVS-Studio, Visual Studio
2014-03-12 в 5:49, admin, рубрики: c++, c++11, cppcat, cppcheck, pvs-studio, visual c++, Visual Studio, visual studio 2013, Блог компании PVS-Studio, Си, статический анализ кода, метки: c++, c++11, cppcat, cppcheck, pvs-studio, visual c++, Visual Studio, visual studio 2013, Си, статический анализ кодаАвторы: Евгений Рыжков (EvgeniyRyzhkov), Андрей Карпов (Andrey2008), Павел Еремеев (Paull), Святослав Размыслов (svyatoslavmc).
Мы провели подробное сравнение четырёх анализаторов Си/Си++ кода: CppCat, Cppcheck, PVS-Studio и статический анализатор, встроенный в Visual Studio 2013. Это серьезное исследование, на которое нами было потрачено около 170 человеко-часов и которое, на наш взгляд, хорошо отражает картину, существующую на данный момент.
Читать полностью »
Сколько стоит одна ошибка в наших программах, или какие ошибки бывают в PVS-Studio и CppCat
2014-02-28 в 5:58, admin, рубрики: c++, cppcat, pvs-studio, Блог компании PVS-Studio, пятница, статический анализ кода, метки: cppcat, pvs-studio, пятница, статический анализ кодаВ списке вопросов, которые всегда задают нам после прочтения наших статей есть вопрос: «А вы проверяете код своего анализатора им самим?». И дается ответ в том ключе, что у нас всегда проверяется код во время написания с помощью режима инкрементального анализа (проверки файлов сразу после компиляции). А также запускаются ночные проверки для всего кода. И в связи с этим мы, к сожалению (ирония), никогда не сможем написать статью про ошибки в наших программных продуктах.
Однако сегодня – именно статья про одну нашу ошибку и про то, сколько она нам стоила. Заинтриговал?
Эксперимент по проверке библиотеки glibc
2014-02-26 в 11:22, admin, рубрики: glibc, linux, pvs-studio, Блог компании PVS-Studio, Си, статический анализ кода, метки: c++, glibc, pvs-studio, Си, статический анализ кода
Мы провели эксперимент по проверке библиотеки glibc с помощью PVS-Studio. Цель эксперимента посмотреть, насколько успешно анализатор может проверять Linux-проекты. Пока плохо может. Возникает огромное количество ложных срабатываний из-за использования нестандартных расширений. Однако, всё равно удалось найти кое что интересного.
Читать полностью »