Статья опубликована в рамках: LXII Международной научно-практической конференции «Вопросы технических и физико-математических наук в свете современных исследований» (Россия, г. Новосибирск, 24 апреля 2023 г.)
Наука: Информационные технологии
Секция: Методы и системы защиты информации, информационная безопасность
Скачать книгу(-и): Сборник статей конференции
дипломов
БЕЗОПАСНАЯ РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
SECURE SOFTWARE DEVELOPMENT
Alexander Penkov
Master's degree, Department of Information Security, Reshetnev Siberian State University of Science and Technology,
Russia, Krasnoyarsk
Bogdan Zaviryukha
Master's degree, Department of Information Security, Reshetnev Siberian State University of Science and Technology,
Russia, Krasnoyarsk
АННОТАЦИЯ
Целью данной работы является анализ и описание важности безопасной разработки программного обеспечения для минимизации рисков уязвимостей, связанных с безопасностью, и обеспечения высокого уровня защиты приложений.
Для достижения поставленной цели был проведен анализ существующих уязвимостей в программном обеспечении, связанных с безопасностью, и рассмотрены основные риски, которые могут возникнуть из-за наличия уязвимостей в приложениях.
Результатом исследования является выявление важности безопасной разработки программного обеспечения и ее роли в минимизации рисков уязвимостей, связанных с безопасностью, и обеспечении высокого уровня защиты приложений. Были рассмотрены основные методы и принципы безопасной разработки программного обеспечения, которые могут быть использованы разработчиками для создания безопасных приложений и предотвращения появления уязвимостей в исходном коде.
В результате исследования можно сделать вывод, что безопасная разработка программного обеспечения является необходимым условием для создания безопасных приложений, и ее реализация на всех этапах жизненного цикла приложения, начиная с проектирования и разработки, и заканчивая эксплуатацией и поддержкой, позволяет снизить риски уязвимостей и повысить доверие клиентов.
ABSTRACT
The purpose of this work is to analyze and describe the importance of secure software development in order to minimize the risks of security-related vulnerabilities and ensure a high level of application protection.
To achieve this goal, an analysis of existing security-related vulnerabilities in software was carried out and the main risks that may arise due to the presence of vulnerabilities in applications were considered.
The result of the study is to identify the importance of secure software development and its role in minimizing the risks of security-related vulnerabilities and ensuring a high level of application protection. The main methods and principles of secure software development that can be used by developers to create secure applications and prevent vulnerabilities in the source code were considered.
As a result of the research, it can be concluded that secure software development is a prerequisite for creating secure applications, and its implementation at all stages of the application lifecycle, from design and development to operation and support, reduces vulnerability risks and increases customer confidence.
Ключевые слова: безопасность; уязвимости в коде; разработка; программное обеспечение; разработчики.
Keywords: security; vulnerabilities in code; development; software; developers.
Для большинства разработчиков важно создать безопасное приложение. Безопасность программного обеспечения связана с контролем вредоносных атак, выявляя потенциальные уязвимости в программном обеспечении и принятия необходимых мер по ее защите. Программное обеспечение не могут быть безопасными на 100%, поскольку разработчики могут допустить ошибки, создать новые ошибки в попытке исправить существующие или создать новые уязвимости с помощью обновлений.
В ходе эксплуатации программного обеспечения могут возникать уязвимости, которые представляют серьезную угрозу как для финансового благополучия, так и для репутации компании. Финансовый ущерб может проявляться в виде расходов на обновление программного продукта и устранение обнаруженных уязвимостей, а также потери дохода, вызванные оттоком клиентов, потерявших доверие к небезопасному приложению.
Чтобы минимизировать риски и обеспечить необходимый уровень безопасности приложения, важно следовать процессу безопасной разработки программного обеспечения (SSDL - Secure Software Development Lifecycle). Этот процесс включает в себя выявление и устранение уязвимостей в коде приложения, а также поддержание его безопасности на всех этапах жизненного цикла - от проектирования и разработки до эксплуатации и поддержки.
Построение SSDL должно стать первоочередной задачей для разработчиков программного обеспечения, поскольку это позволяет сократить накладные расходы на обслуживание продукта и повысить доверие клиентов. Кроме того, при следовании SSDL возможно предотвратить потенциальные угрозы и избежать необходимости в крупномасштабных ремонтах, которые могут привести к серьезным проблемам с финансами и репутацией.
Длинный список существующих уязвимостей в ПО заставляет нас ограничиться рассмотрением лишь некоторых из них, включая те, которые часто встречаются и причиняют наибольший ущерб.
Согласно исследованию [1], некоторыми из наиболее распространенных уязвимостей являются: утечка информации - 65,9%, межсайтовый скриптинг (XSS) - 47,1%, внедрение SQL-кода - 27,8%.
Обеспечение безопасности приложения — это задача, прежде всего, разработчика, который должен заботиться о безопасности продукта и пользователей с первых строк кода. Специалисты по информационной безопасности могут помочь улучшить код, находя и исправляя уязвимости.
В идеальном мире разработчик (самостоятельно или с помощью специалистов) тестирует свой продукт на проникновение, используя новейшие методы взлома, и анализирует полученные результаты, делая выводы.
Качество и безопасность кода — это разные вещи, но они тесно связаны. В нынешней среде киберугроз разработчики должны заботиться об этом. Написание хорошего кода с самого начала — это проще, чем исправление ошибок, которые влияют на безопасность и которые нужно сначала найти, опередив злоумышленников.
При построении процесса разработки, который обеспечивает непрерывную безопасность используются три основных компонента: распределенная система управления версиями GIT, непрерывная интеграция (CI) и средство статического анализа исходного кода (SAST).
Непрерывная интеграция, включает в себя постоянное объединение рабочих копий в основную ветвь разработки и автоматизированное создание сборок проекта для выявления возможных ошибок и проблем при интеграции. Средство SAST является основным инструментом для поиска уязвимостей на этапе разработки.
Одним из основных рисков, связанных с уязвимостями, является появление недостатков в исходном коде. Некоторые недостатки могут приводить к нарушению работы приложения, а другие могут стать уязвимостями приложения.
Нарушение синтаксиса языка может вызвать нарушение работы приложения. Использование уязвимых функций или библиотек также может привести к уязвимости приложения. Хранение отладочных данных в исходном коде, таких как логины и пароли, может привести к получению несанкционированного доступа к приложению. Ошибки конфигурации приложения могут позволить злоумышленникам получить несанкционированный доступ к информации. Недостаточная проверка вводимых пользователем данных может загрузить вредоносное программное обеспечение. Наконец, неиспользуемые участки кода могут содержать логические бомбы или бэкдоры, которые злоумышленник может использовать для манипуляции приложением.
Чтобы предотвратить появление этих уязвимостей, необходимо проводить статический анализ исходного кода приложения. Использование компонентов GIT, CI и SAST позволяет обеспечить непрерывную безопасную разработку и выявлять потенциальные уязвимости на раннем этапе. Важно также осуществлять дополнительную проверку сторонних библиотек и расширений, используемых в приложении.
При создание безопасного ПО, чтобы не допустить присутствие уязвимостей в исходном коде, во время разработки приложения нужно соблюдать несколько условий:
- Разработка. На этапе написания кода пользоваться контролем версиями с помощью GIT. Регулярное создание копий для снижения рисков выхода из строя ПО и оперативное возвращение к рабочей версии.
- Баг-трекинг. Использование системы помогающей команде разработчиков выявлять, фиксировать и отслеживать баги в создаваемом ПО. Чтобы в дальнейшем ставить приоритеты по задачам. Например, Jira Software.
- Анализ кода. Использование программ для обнаружения уязвимости в коде. Например, Snyk Security, SonarQube, ESLint.
- Работа с контейнерами и сборка образов. Изолированная разработка кода. Например, Docker. 5. CI/CD. Управление непрерывной интеграцией, умение настраивать CI/CD пайплайны. Осмотр (не)покрытого кода тестами, автоматизация тестов, анализ commit, анализ зависимостей. Например, с помощью GitLab.
В заключение, следует отметить, что построение безопасного процесса разработки в долгосрочной перспективе будет положительно влиять на качество создаваемого приложения и уменьшать расходы на его поддержку. В то же время, при отсутствии принципиальных различий между используемыми инструментами и подходами для сканирования при построении SSDL, необходимо опираться на существующие процессы разработки кода и уровень квалификации сотрудников.
Список литературы:
- State of Software Security [Электронный ресурс]. URL: https://www.veracode.com/sites/default/files/pdf/resources/sossreports/state-of-software-securityvolume-11-veracode-report.pdf (дата обращения 01.02.2023).
- Коржов В. Стратегия и тактика защиты / Computerworld 2004. № 14. С. 26.
- Что такое методология разработки CI/CD [Электронный ресурс]. URL: https://selectel.ru/blog/what-is-ci-cd (дата обращения 01.02.2023).
- А. С. Марков, В. Л. Цирлов, А. В. Барабанов Методический аппарат анализа и синтеза комплекса мер разработки безопасного программного обеспечения / Программные продукты и системы 2015. № 4. С. 166-174.
- В. С. Горбатов, А. А. Мещеряков Курс тренинга по безопасной разработке программного обеспечения / Безопасность информационных технологий 2017. Т. 24. № 2. С. 35-41.
дипломов
Оставить комментарий