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