Создание безопасных Веб-приложений Алексей Кирсанов ведущий разработчик компании «Битрикс»
Ошибки безопасности Существенные и не существенные ошибки Ошибки безопасности всегда существенные Результаты взлома приложения
Понятие безопасности Конфиденциальность - данные доступны только тем людям, для которых они предназначены Целостность - данные и системные ресурсы изменяются только надлежащим способом и только надлежащими людьми Доступность - системы готовы к работе по требованию и обеспечивают приемлемую производительность Аутентификация - устанавливается подлинность пользователя (кто есть пользователь) Авторизация - пользователям явным образом предоставляется (или не предоставляется) доступ к ресурсам Невозможность аннулирования - пользователи не могут выполнить действие и впоследствии отказаться признать его выполнение
Уязвимость Веб-приложений Протокол HTTP очень простой и не поддерживает сохранение состояния Нет необходимости прибегать к сложным специализированным средствам для отправки пакетов Каждый запрос к веб-приложению содержит все необходимые данные, а значит можно формировать запрос за запросом без необходимости подготовки чего-либо типа сессии Пользователь имеет полный контроль над навигацией по приложению Пользователю доступна часть исходного кода приложения (HTML, JavaScript) Почти все веб-приложения допускают анонимный доступ, по крайней мере, к странице входа. Эта страница может быть использована для атаки Веб-приложения являются последним бастионом между Интернетом и внутренними ресурсами (например, базой данных). Значит, они являются целью нападения
Основные ошибки Использование входных данных (ввода) без проверки SQL Injection Cross-Site Scripting Directory Traversal Недостаточный контроль доступа Ошибки аутентификации Недостаточная проверка выходных данных Cross-Site Scripting Недостаточная обработка ошибок Небезопасное хранение секретов DoS
Основные принципы Разработка механизмов безопасности должна быть включена в весь цикл разработки приложения Определение потенциальных проблем. Моделирование угроз. Минимально необходимые привилегии Надежный код Отслеживание и сохранение действий пользователя Разумное использование криптографии Развертывание приложения
Моделирование угроз - STRIDE Моделирование угроз – изучение архитектуры приложения и его составных частей с целью обнаружения и устранения проблем безопасности Spoofing identity - подмена идентификацииАутентификация Tampering – подделкаЦелостность Repudiation – отказ Невозможность аннулирования Information disclosure - раскрытие информации Конфиденциальность DoS - отказ в обслуживанииДоступность Elevation of privilege - повышение полномочий Авторизация
Моделирование угроз - компоненты Разделение приложения на компоненты Потоки данных – передача данных между компонентами Хранилища данных Процессы Посредники – конечные точки (люди, веб-службы,…) Магазин 1 Магазин 2 Магазин N Процесс сбора данных База данных По то ки Хра ни ли ща Про цес сы Пос ред ни ки Подмена идентификации ++ Подделка+++ Отказ++ Раскрытие информации +++ Отказ в обслуживании+++ Повышение полномочий +
Аудит безопасности Для обеспечения высокого уровня защищенности необходимо заказать независимый аудит информационной безопасности у сторонних компаний Непрерывный аудит обеспечит независимый экспертный надзор и сохранит уровень безопасности приложения на высоком достигнутом уровне