Введение
В Российской Федерации запущен срочный переход на отечественное программное обеспечение, которое государственное регулирование обосновывает несколькими аргументами, среди которых: защита интересов национальной безопасности; поддержка отечественных разработчиков, а соответственно и поддержка экономики страны в общем;острая необходимость обеспечить нормальное функционирование существующей критической инфраструктуры в условиях санкционных ограничений [1]. Многие эксперты и представители власти, опасаются, что использование в сложившейся современной политической ситуации цифровых продуктов, созданных по условиям юрисдикции других стран, является рискованным. Возможные риски связаны с высокой вероятностью потери и распространения персональных данных. Так же очень высок риск блокирования программ, без которых будет невозможно стабильная работа всех процессов предпринимательской и государственной деятельности, а также всех сфер жизнедеятельности. Куда вошла цифровизация. Поэтому оптимальным вариантом, который поможет избежать подобных проблем является переход на отечественный софт. Учитывая последние политические события, власти приняли решение провести такую интеграцию в ускоренном режиме [1]. Заявленная интеграция поставила перед отечественными разработчиками софта для различных сфер жизнедеятельности ряд срочных задач, среди которых разработка безошибочных и безопасных кодов. Поиск решения обозначенной задачи стал отправной точкой в знакомстве с современными разработками Института системного программирования им. В.П. Иванникова РАН и началом исследования возможностей статического анализатора Svace, разработанного в данном институте.
Основная часть
Программный продукт Svace
Svace – необходимый инструмент жизненного цикла разработки безопасного ПО, основной статический анализатор компании Samsung. Обнаруживает более 50 классов критических ошибок в исходном коде. Поддерживает языки C, C++, C#, Java, Kotlin и Go. Включён в Единый реестр российского ПО (№4047). Поставляется с web-интерфейсом просмотра предупреждений Svacer (Svace History Server) [2].
Одно из преимуществ Svace – это то, что он постоянно развивается, опираясь на актуальные исследования в сфере IT. Он собрал в себе многие важные качества зарубежных аналогов, среди которых Synopsis Coverity Static Analysis, Perforce Klocwork Static Code Analysis, Fortify Static Code Analyzer.
Социологическое исследование
Проведённое социологическое исследование показало, что многие пользователи различных устройств считают важным использование безопасного ПО и нуждаются в помощи по её обеспечению. Исследование проводилось с использованием облачных технологий Яндекс. В нём приняло участие 105 человек. Результаты представлены на рисунках (1 - 6).
Рис. 1 – 6. Результаты социологического исследования
Анализ исследования также показал, что со статическим анализатором Svace знакомы лишь те, профессиональная деятельность связана с программированием. Однако данное ПО может быть полезно и не только профессиональным программистам, но и начинающим для проверки своих программных кодов на ошибки. Как ранее было отмечено, Svace обнаруживает более 50 классов критических ошибок в исходном коде. Поддерживает языки C, C++, C# и Java, зарегистрирован в Едином реестре российского ПО. Я решил изучить его поподробнее, для дальнейшего использования в тестировании своих программных кодов.
История разработки и использования Svace в российских и зарубежных компаниях
Svace разрабатывался для компаний, нацеленных на разработку ПО с высокой степенью надёжности и безопасности и нуждающихся в сертификации разрабатываемого ПО, а также для сертификационных лабораторий. Внедрение Svace в масштабное использование начала компания Samsung в 2015 году. Анализатор применялся для проверки собственного ПО компании на базе ОС Android и исходного кода ОС Tizen, которая используется в смартфонах, информационно-развлекательных системах и бытовой технике Samsung. С 2017 года Svace проверял все изменения, необходимые для рецензирования и включения в операционную систему Tizen. C 2020 года Svace стал активно использоваться компанией Huawei.
В Российской Федерации Svace в настоящее время используется более чем в 100 компаниях и лабораториях, в том числе в ОАО «РусБИТех», АО «Лаборатория Касперского», Postgres Professional, ООО «Код Безопасности», МВП «СВЕМЕЛ» и др. [2].
Преимущества Svace
К важным преимуществам Svace можно отнести высокое качество анализа, масштабируемость, высокую скорость выполнения анализа, удобный интерфейс, очень быструю адаптацию к работе с новым окружением, возможность использования для реализации обеспечительных мер ГОСТ Р 56939-2016 и процедур «Методики выявления уязвимостей и не декларированных возможностей в программном обеспечении» ФСТЭК России (при необходимости сертификации ПО для использования на территории России). Статический анализатор поддерживает большое количество актуальных платформ и компиляторов, что делает его практически универсальным.
На рисунке 7 представлена схема работы Svace, на которой отражены все этапы работы сервиса от перехватки файла до анализа и предупреждений. Которые в итоге получает пользователи. Анализ кода проводится трёх видов: легковесный анализ синтаксических деревьев кода, межпроцедурный анализ и анализ помеченных пользователем данных. В результате чего на экране появляются предупреждения о найденных ошибках кода.
.
Рис.7. Схема работы статического анализатора Svace
Эксперимент
В рамках исследования был проведен эксперимент по установке и работе со статическим анализатором Svace. В ходе эксперимента были отмечены следующие положительные стороны Svace: простота использования, широкий набор поддерживаемых типов предупреждений, масштабируемость до программ в миллионы строк кода и приемлемое качество анализа.
Svace работает на следующих платформах: macOS/x64 (версия 10.10+, язык C# не поддерживается); архитектура x86 (только перехват сборки); Linux/x64 (версия ядра 3.10+, версия glibc 2.17+), Linux/ARM 64 (Ubuntu 18.04), Windows (начиная с Windows 7 SP 1 с обновлением KB2533623) и WSL (версий 1 и 2).
Исходный код анализируется для архитектур: для C/C++ — Intel x86/x86-64, ARM/ARM64, MIPS/MIPS64, Hexagon (генерация кода через Clang); Эльбрус, AEON,Power PC/Power PC 64, RISC-V 32/64, SPARC/SPARC64, TriCore, HIDSP, OpenRISC (генерация кода через одну из предыдущих архитектур); для Go — Intel x86-64 на ОС Linux; для C#, Java, Kotlin — платформы, на которых работает анализатор [6].
Поддерживаемыекомпиляторы: ДляС/С++ (версийдо C++17): GCC (GNU Compiler Collection), Clang (LLVM compiler), Microsoft Visual C++Compiler, RealView/ARM Compilation Tools (ARMCC), Intel C++ Compiler, Elbrus C/C++ Compiler, Wind River Diab Compiler, Keil CA51 Compiler Kit, NEC/Renesas CA850, CC78K0(R) C Compilers, C/C++ Compiler for the Renesas M16C Series and R8C Family, Panasonic MN10300 Series C Compiler, C compiler for Toshiba TLCS-870 and T900 Family, Samsung CalmSHINE16 Compilation Tools, Texas Instruments TMS320C6* Optimizing Compiler, Digital Mars C and C++ Compiler, Green Hills compiler for ARM, TASKING C compiler for TriCore, CEVA Toolbox for CEVA DSP cores, IAR C/C++ Compiler for ARM / Renesas RL78 MCU, CodeWarrior Development Studio for StarCore DSPs, Open Watcom C/C++ compiler, Freescale CodeWarrior, Cadence Tensilica
Xtensa C/C++ Compiler.ДляС# (версийдо C# 10): Roslyn, Mono. Для Java (версийдо Java 17): OpenJDK Javac Compiler, Eclipse Java compiler. Для Kotlin: Kotlin 1.6. Для Go: Go 1.17[6].
Заключение
Возникает вопрос: «Как начинающему пользователю работать со Svace?»
Шаг 1: установить программу Svacer через https://marketplace.visualstudio.com/| Marketplace
Шаг 2: после запуска Svacer, можно получить информацию о доступных командах. Информация доступна при использовании опции --help: svacer <command name> --help
Общий формат командной строки: Svacer [global options] command [command options] [arguments...]
Шаг 3: проверяем код на ошибки. Панель files – покажет список файлов, для которых есть какие-либо предупреждения в snapshot. Столбец issues покажет число предупреждений в файле. Сервер историй предоставит несколько режимов работы интерфейса, каждый из которых предназначен для выполнения определённых действий: review – просмотр и разметка найденных предупреждений, а также сравнение snapshot’ов или отдельных предупреждений; browse code – просмотр snapshot’ов исходного кода, связанного с результатами анализатора Svace; reports – формирование отчетов на основе хранимой информации: settings – управление сервером и просмотр его состояния.
Проведённое исследование позволило изучить запрос современных пользователей на безопасное ПО, а также программный продукт – статический анализатор Svace, который способен помочь отечественным разработчикам софта решить проблему безопасности и безошибочности разрабатываемых программ.
Список источников
Импортозамещение программного обеспечения 2022: общее представление. - URL: https://www.1cbit.ru/blog/plan-perekhoda-na-otechestvennoe-programmnoe-obespechenie/ (дата обращения 12.01.2023)
Сайт Института системного программирования им. В.П. Иванникова РАН. - URL:https://www.ispras.ru/technologies/svace/ (дата обращения 14.01.2023)
Статьи выставки «Связь 2023». Современное программное обеспечение. - URL:https://www.sviaz-expo.ru/ru/articles/2016/sovremennoe-programmnoe-obespechenie/ (дата обращения 14.01.2023)
Самый большой сборник учебной литературы, видеокурсов и статей для программиста.Инструменты программирования. Современные средства разработки. - URL:https://codernet.ru/articles/drugoe/instrumentyi_programmirovaniya_sovremennyie_sredstva_razrabotki/(дата обращения 15.01.20230
Svace History Server. Version 5.0.0. – URL: https://forge.ispras.ru/attachments/download/9673/svacer-manual-5.0.pdf (датаобращения 15.01.2023).
Институт системного программирования им. В.П. Иванникова РАН. Сборник технологий 2022. - URL:https://www.ispras.ru/downloads/ISP_RAS_Catalogue_of_technologies_2022_ru.pdf (дата обращения 15.01.2023)