Министерство просвещения Российской Федерации
Всероссийская олимпиада школьников
(ВсОШ)
УДК 004.056
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к проекту по предмету «Информатика»
профиль «Информационная безопасность»
по теме:
БЕЗОПАСНОСТЬ ИСХОДНОГО КОДА
PYTHON
Автор: Горев Тимофей Павлович,
учащийся 10 Ж класса МАОУ СОШ №10
г. Чайковский, Пермский край
Москва
2026
Отчет 41 с., 0 рис., 5 табл., 8 источн., 4 прил.
СТАТИЧЕСКИЙ АНАЛИЗ БЕЗОПАСНОСТИ, SAST, PYTHON, АБСТРАКТНОЕ СИНТАКСИЧЕСКОЕ ДЕРЕВО, AST, УЯЗВИМОСТИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, CWE, БДУ ФСТЭК, АНАЛИЗ ИСХОДНОГО КОДА
Объектом исследования являются уязвимости безопасности в исходном коде программ на языке Python.
Цель работы — разработка инструмента SAST Python-приложений для автоматического обнаружения типовых уязвимостей на этапе разработки.
В работе применялись методы статического анализа программного кода, синтаксического анализа абстрактного синтаксического дерева (AST), анализа потоков данных и сигнатурного поиска небезопасных конструкций. Классификация уязвимостей основана на стандартах CWE и БДУ ФСТЭК.
В результате разработан инструмент статического анализа безопасности Python-кода AstGuard, позволяющий обнаруживать ряд распространённых уязвимостей.
Разработанный инструмент может применяться при разработке программного обеспечения и проведении первичного анализа безопасности Python-приложений. Дальнейшее развитие системы связано с расширением базы правил обнаружения уязвимостей и совершенствованием механизмов анализа потоков данных.
В ходе выполнения работы была рассмотрена проблема обеспечения безопасности программного обеспечения на этапе разработки. Проведенный анализ показал, что одной из существенных причин появления уязвимостей в программных системах является наличие ошибок в исходном коде, связанных с неправильной обработкой пользовательских данных, использованием небезопасных функций и недостаточным контролем безопасности.
В рамках исследования были изучены методы статического анализа безопасности программного обеспечения и проведен анализ существующих инструментов класса SAST. Было установлено, что многие существующие решения обладают рядом ограничений, включая высокую стоимость, зависимость от зарубежных технологий и ограниченную гибкость при анализе Python-приложений.
В результате выполнения работы разработан программный инструмент статического анализа безопасности Python-кода, основанный на анализе абстрактного синтаксического дерева и системе правил обнаружения уязвимостей. Реализованный анализатор способен выявлять ряд распространённых типов уязвимостей, включая внедрение кода, инъекции системных команд, небезопасную десериализацию данных, обход каталогов, использование слабых криптографических алгоритмов, наличие встроенных учетных данных, а также другие типовые ошибки безопасности.
Поставленные задачи работы были решены в полном объеме. Реализован механизм синтаксического анализа программного кода, разработана система правил обнаружения уязвимостей и сформирован механизм формирования отчетов о результатах анализа.
Для оценки эффективности разработанного решения было проведено тестирование на специально сформированном наборе тестовых сценариев. По результатам тестирования получены значения метрик Precision = 0,93 и Recall = 0,91, что свидетельствует о высокой точности обнаружения уязвимостей и достаточной полноте их выявления.
Практическая значимость работы заключается в возможности использования разработанного инструмента для автоматизированного первичного анализа безопасности Python-приложений. Применение анализатора может быть рекомендовано в процессе разработки программного обеспечения, в процедурах аудита безопасности исходного кода, а также в образовательных целях при изучении методов анализа безопасности программных систем.
С точки зрения технико-экономической эффективности использование автоматизированного анализатора позволяет сократить трудозатраты на проверку безопасности программного кода и уменьшить время выявления потенциальных уязвимостей на ранних этапах разработки программного обеспечения.
По своему научно-техническому уровню разработанный инструмент соответствует современным подходам к статическому анализу программного обеспечения и сопоставим с рядом существующих решений данного класса. При этом предложенное решение ориентировано на анализ Python-приложений и обладает возможностью дальнейшего расширения.
В качестве направлений дальнейшего развития системы можно выделить расширение базы правил обнаружения уязвимостей, развитие механизмов анализа потоков данных, поддержку более сложных сценариев распространения данных внутри программы, а также интеграцию инструмента в системы непрерывной интеграции и разработки программного обеспечения.