Что появилось раньше, чем яйцо и курица? Конечно, спор о том, что лучше — vulnerability assessment или WAF. В статье я постараюсь определить ценность использования обоих подходов. Расскажу о том, что нового в безопасность организации может привнести инструмент для анализа исходного кода.
Обслуживание приложений на базе единой веб-инфраструктуры приводит к близости критически важных сервисов к смежным информационным системам. Это делает их привлекательной целью для злоумышленников: компрометируя одно веб-приложение, можно поставить под угрозу всю инфраструктуру.
Единые платформы для размещения прикладных систем обеспечивают доступ к самой важной информации — данным процессинга, коммерческой тайне, персональным данным. Из-за высоких рисков веб-инфраструктуры проектируются таким образом, чтобы не допустить компрометации системы в ходе целенаправленной атаки. Достигается это с помощью целого спектра фильтрующих средств наложенной защиты, куда помимо классических средств сетевой защиты входит и web application firewalls. Таким образом минимизируется число угроз и допустимых векторов для атак, активируется защита против известных и неизвестных уязвимостей.
Несмотря на высокий уровень защищенности, для организации эффективной защиты информации и обеспечения информационной безопасности приложений требуется не только иметь возможность фильтровать потенциально опасные HTTP-транзакции, но и получать точные сведения о качестве прикладных систем с помощью анализа исходного кода. Это особенно актуально, если прикладные системы разработаны множеством подрядчиков, а владелец веб-инфраструктуры не принимал участия в проектировании и разработке, не проводил аудит безопасности.
Анализ исходного кода, в отличие от фильтрующих средств защиты, позволяет организовать:
- своевременное выявление уязвимостей в разрабатываемых или покупаемых веб-приложениях,
- оценку возможности использования нарушителем найденных уязвимостей,
- практическую демонстрацию такой возможности,
- выработку рекомендаций по устранению уязвимостей — с целью повышения уровня защищенности приложений.
Для анализа исходного кода приложений предназначен отдельный подкласс сканеров уязвимостей, способных анализировать приложения методом белого ящика.
Основными достоинствами таких продуктов являются:
- отсутствие необходимости развертывать приложение для проведения анализа;
- статический анализ приложения (SAST);
- анализ файлов конфигурации и версий компонентов, используемых приложением;
- генерация шаблона атаки (демонстрационного эксплойта), объяснение реализации найденной уязвимости;
- ранжирование обнаруженных уязвимостей по степени опасности;
- генерация отчетов с описанием отдельных уязвимостей, а также динамических отчетов по результатам периодического анализа приложения.
Отдельным достоинством некоторых продвинутых анализаторов исходного кода является способность реализовать песочницу для проведения динамического (DAST) и интерактивного (IAST) тестирования.
Результатом работы анализатора исходного кода является перечень найденных ошибок и уязвимостей в программном обеспечении. Анализатор может предоставлять данные об уязвимостях. Например, такие:
- описание уязвимости
- указание на ее опасность
- описание условий эксплуатации
- текст запроса для эксплуатации
- строку кода с уязвимостью
Следующая таблица показывает, какие задачи безопасности выполняются анализирующими, а какие фильтрующими средствами защиты приложений.
Задачи |
Web application firewall |
Анализатор исходного кода |
Противодействие известным и неизвестным уязвимостям |
Да |
Да |
Проверка большого количества приложений |
Да |
Да |
Фильтрация запросов по белым и черным спискам |
Да |
Нет |
Защита клиента |
Да |
Нет |
Обнаружение реальных уязвимостей |
Нет |
Да |
Обнаружение программных закладок |
Нет |
Да |
Проверка качества приложения |
Нет |
Да |
Автоматическое закрытие обнаруженных уязвимостей |
Только совместно |
Выбор только одного подхода к защите — это нерациональное управление безопасностью веб-инфраструктуры. Например, при использовании WAF ошибкой будет пытаться настроить политику безопасности таким образом, чтобы фильтровались только истинно положительные события. Дело в том, что написав много исключающих правил для подозрительных, но не зловредных запросов, можно пропустить эксплуатацию ранее исключенного вектора. В контексте использования только анализаторов исходного кода — ошибкой будет вкладываться в дорогостоящую разработку для устранения всех замечаний отчета, которые в итоге будут определяться лишь конечным количеством проверок в анализаторе и не заменят защиту, базирующуюся на белых списках. Таким образом, совместное использование анализатора исходного кода и web application firewall дает оптимальную модель управления защитой информации в веб-инфраструктуре.
Особенно интересен случай с автоматическим закрытием обнаруженных уязвимостей. Когда WAF интегрирован с анализатором исходного кода, владельцы веб-инфраструктур получают возможность публиковать приложения, содержащие даже критически опасные уязвимости. Достигается это с помощью технологии виртуального обновления (virtual patching), когда отчеты анализатора загружаются в WAF. Это позволяет не задерживать запуск приложения до фактического устранения выявленных уязвимостей, но при этом гарантирует необходимый уровень безопасности приложения. Работа технологии виртуальных обновлений основана на интерпретации отчета анализатора для механизмов защиты WAF: формируются дополнительные правила фильтрации, исключающие уязвимости, найденные анализатором.
Подводя итог, скажем, что безопасность приложений — это наиболее сложный аспект информационных систем. С одной стороны, новая функциональность и постоянная доступность приложений — это залог финансовых достижений, с другой, растущая возможность компрометации приложений ставит под угрозу весь бизнес. Необходимо соблюдать хрупкий баланс между внедрением контрмер и целостностью протекающих бизнес-процессов.