
Безопасность банковских приложений
Узнать больше09.10.2021
Анализ безопасности ПО: какие угрозы и как искать
Согласно ГОСТ Р 56546-2015, под уязвимостью понимается недостаток (или слабость) информационной системы или программного средства, который может использоваться для реализации угроз безопасности информации.
2020 год побил все рекорды по росту количества уязвимостей, обнаруживаемых в ПО. В крупном программном обеспечении за этот период было выявлено более 17 500 уязвимостей, дыр и эксплойтов (против чуть более 17 300 в 2019 г.). 4177 из них присвоен высокий уровень критичности. И это только в крупных ПО, с которыми работает огромное количество пользователей. В статистику, как правило, не попадают программы, разрабатываемые на заказ, и специфичные программные продукты, не применяющиеся массово. В них тоже могут быть уязвимости. Ведь совершенного программного обеспечения не бывает.
Оценивая тенденции в сфере информационной безопасности (далее – ИБ) и прогнозы специалистов, можно прийти к выводу, что у 2021 года есть все шансы установить новый рекорд. Этому способствует продолжающийся рост популярности удаленного формата работы. В частности, наблюдается увеличение количества атак на VPN и RDP.
В связи с ежегодным ростом количества обнаруживаемых проблем в ПО не теряет актуальности анализ безопасности программного обеспечения. Он может встраиваться в процесс разработки, а также проводиться регулярно в процессе эксплуатации ПО. Ведь уязвимости могут появляться на любом этапе жизненного цикла программного средства.
Виды уязвимостей, угрожающих программному обеспечению
ГОСТ Р 56546-2015 выделяет по области происхождения 5 видов уязвимостей:
Подавляющее большинство уязвимостей, выявляемых при проверке программного обеспечения, обусловлены недостатками кода.
Среди некоторых часто встречающихся в ПО уязвимостей:
Переполнение буфера (Buffer Overflow). Уязвимость реализуется за счет записи данных за пределами выделенного в памяти ПО буфера. Это – один из популярнейших способов взлома компьютерных программ и информационных систем. Он позволяет загрузить и выполнить произвольный код от имени программы, в которой выявлена такая уязвимость. Кроме того, она приводит к отказам обслуживания (DoS) из-за зависания или аварийного завершения программы.
Уязвимости Tainted Input Vulnerability («испорченного ввода»). Возникают из-за недостаточного контроля вводимых в ПО данных (как вариант – в формы авторизации, отправки данных и так далее). В результате появляется возможность задать такие входные данные, которые позволят выполнить нужную злоумышленнику команду, в то время как ПО или информационная система будут «думать», что выполняют другую, легальную. Один из подвидов этой уязвимости, которые могут реализовываться в программах, написанных на СИ-подобных языках, – ошибки форматных строк.
Ошибки синхронизации (Race Conditions). Связаны с многозадачностью. Злоумышленники могут изменять файлы, которые использует программа (и другое ПО) и заставлять ее выполнять определенные действия.
Также современному ПО часто угрожают такие уязвимости, как Authorization Bypass (обход аутентификации, позволяющий получать несанкционированный доступ к учетным записям через других пользователей). Довольно распространены SSI Injection, позволяющие вставлять серверные команды в HTML-код. В веб-приложениях угрозы часто реализуются посредством уязвимостей XSS: выполнение вредоносных программ для атаки на пользователей на сгенерированных приложением страницах.
Это малая часть проблем, которые могут угрожать программному обеспечению. Всего же их гораздо больше, и новые появляются с завидной регулярностью.
Как бизнесу находить уязвимости программного обеспечения
Не стоит думать, что тесты ПО на уязвимости – это обязанность только разработчиков. Да, они должны это делать безоговорочно. Но те, кто использует программы и приложения, тоже должны заботиться о безопасности и своевременном обнаружении проблем.
Для анализа безопасности программного обеспечения хорошо подходят 2 метода: динамический и статический анализ. В первом случае производится тестирование работающего ПО. Моделируются различные ситуации, анализируется выполнение кода и так далее. Вариант подходит компаниям с собственными разработчиками в штате и имеющим ресурсы для развертывания отдельной копии приложения для проведения тестирования. Такой вариант анализа программного обеспечения требует существенных временных трат. Также он никогда не обеспечивает 100-процентное покрытие кода, да и разработчики с нужными компетенциями есть далеко не в каждой компании.
Статический анализ и тестирование ПО на уязвимости происходит без необходимости его запуска. Статический анализатор SAST проверяет код, обеспечивая 100-процентное его покрытие. Для реализации этой технологии не требуются существенные вычислительные мощности. Кроме того, для интерпретации результатов анализа с помощью высокоуровневых инструментов статического анализа не нужна специальная подготовка, и работать с ними могут офицеры информационной безопасности или специалисты другого профиля.
Это означает, что организовать проверку ПО и поиск уязвимых мест в процессе эксплуатации может любая компания. Не стоит об этом забывать, поскольку безопасность вашей IT-инфраструктуры в ваших руках.
Самые важные новости кибербезопасности у вас в почте
Выберите темы, на которые бы вам было интересно получать новости.
Для получения бесплатной консультации заполните форму ниже и отправьте заявку. Наш менеджер свяжется с вами в ближайшее время.