Министерство науки и высшего образования Российской Федерации Федеральное государственное автономное образовательное учреждение высшего образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра комплексной информационной безопасности электронно-вычислительных систем (КИБЭВС)
ИСПОЛЬЗОВАНИЕ СТАТИЧЕСКОГО АНАЛИЗАТОРА ДЛЯ ТЕСТИРОВАНИЯ ПО
Отчет по лабораторной работе №8
по дисциплине «Безопасность интернета вещей и сенсорных систем»
-
Студент гр.
____________
Руководитель
Ст. преподаватель каф. КИБЭВС
Калинин Е.О.
____________
Введение
Цель работы: ознакомление с инструментами статического анализа исходного кода и освоение их использования для выявления потенциальных ошибок.
1 Ход работы
Первоочередно был загружен сервис Docker и добавлен текущий пользователь в группу docker, что представлено на рисунке 1.1.
Рисунок 1.1 – Загрузка Docker
Далее запущен сервис и проверен доступ к образам Docker, что представлено на рисунке 1.2.
.
Рисунок 1.2 – Запуск сервиса Docker
Далее загружен образ SonarQube и произведен вход в него с заменой стандартного пароля, что представлено на рисунках 1.3 – 1.4.
Рисунок 1.3 – Запуск SonarQube
Рисунок 1.4 – Установка нового пароля
Далее был добавлен существующий проект в SonarQube и произведена генерация токена, что представлено на рисунках 1.5 – 1.6.
Рисунок 1.5 – Создание проекта
Рисунок 1.6 – Генерация токена
Далее было произведено сканирование на уязвимости Python-проекта представленного в рамках задания с помощью утилиты «sonar-scanner», что представлено на рисунках 1.7 – 1.9.
Рисунок 1.7 – Установка утилиты и начало сканирования
Рисунок 1.8 – Первая часть отчета по сканированию
Рисунок 1.9 – Вкладка Issues отчета по сканированию
Далее было произведено сканирование на уязвимости С++-проекта, представленного в приложении А, скаченного с GitHub’а при помощи утилиты «cppcheck», что представлено на рисунке 1.10.
Рисунок 1.10 – Сканирование С++-проекта
На основе сканирования С++-проекта были заполнены таблицы 1.1 и 1.2.
Таблица 1.1 – Общие результаты выполнения анализа
Параметр |
Значение |
Язык программирования тестируемого проекта |
C++ |
Наименование используемого анализатора исходного кода |
CppCheck (версия 2.13+, Ubuntu 24.04) |
Число ошибок, уязвимостей и несоответствий качеству ПО, обнаруженных анализатором |
6 (все категории – style: 2 × variableScope, 2 × constParameter, 2 × unreadVariable) |
Общая оценка качества проекта, предоставленная выбранным анализатором |
B (Код функционален, критических ошибок не выявлено; присутствуют замечания по стилю: область видимости переменных может быть сужена, параметры функций могут быть объявлены const, имеются неиспользуемые переменные) |
Таблица 1.2 – Наименование ошибок
№ |
Примеры сообщений об ошибках, уязвимостях и несоответствиях, обнаруженных анализатором |
1 |
[data_estimation_test.cpp:287:21]: (style) The scope of the variable 'input' can be reduced. [variableScope] Переменная input объявлена в широкой области видимости, хотя используется только в локальном блоке. Рекомендуется объявлять переменные непосредственно перед использованием. |
2 |
[data_estimation_test.cpp:388:26]: (style) Parameter 'word' can be declared with const [constParameter] Параметр функции encryptWord не модифицируется внутри функции, но объявлен без квалификатора const. Добавление const повысит читаемость и защитит от случайных изменений. |
3 |
[data_estimation_test.cpp:263:14]: (style) Variable 'any' is assigned a value that is never used. [unreadVariable] Переменная any получает значение через getch(), но далее не используется. Это указывает на избыточный код или незавершённую логику отладки. |
4 |
[data_estimation_test.cpp:474:9]: (style) The scope of the variable 'temp' can be reduced. [variableScope] Временная переменная temp объявлена в широкой области видимости, хотя используется только внутри одного блока. Рекомендуется сузить область видимости. |
5
|
[data_estimation_test.cpp:493:37]: (style) Parameter 'guess' can be declared with const [constParameter] Параметр guess функции checkWord не изменяется в теле функции. Объявление const char* guess улучшит безопасность и читаемость интерфейса функции. |
