БЕЗОПАСНОСТЬ ИНТЕРНЕТ-ПРОЕКТОВ СТАТИСТИКА WASC: Почему люди занимаются взломом? 1 место – кража конфиденциальной информации 2 место – дефейс 3 место – распространение вирусов данные из отчёта Breach и WASC за 2007 год СТАТИСТИКА WASC: Кого чаще атакуют? 1 место – правительственные сайты 2 место – сайты, посвящённые образованию 3 место – медиа-сайты и магазины данные из отчёта Breach и WASC за 2007 год БЕЗОПАСНОСТЬ Конфиденциальность Целостность Доступность Конфиденциальность - данные доступны только тем людям, для которых они предназначены Целостность - данные и системные ресурсы изменяются только надлежащим способом и только надлежащими людьми Доступность - системы готовы к работе по требованию и обеспечивают приемлемую производительность ПРИЧИНЫ УЯЗВИМОСТИ САЙТОВ ТЕХНИЧЕСКИЕ АСПЕКТЫ Протокол HTTP очень простой и не поддерживает сохранение состояния Нет необходимости прибегать к сложным специализированным средствам для отправки пакетов Каждый запрос к веб-приложению содержит все необходимые данные, а значит можно формировать запрос за запросом без необходимости подготовки чего-либо типа сессии Пользователь имеет полный контроль над навигацией по приложению Пользователю доступна часть исходного кода приложения (HTML, JavaScript) Почти все веб-приложения допускают анонимный доступ, по крайней мере, к странице входа. Эта страница может быть использована для атаки Веб-приложения являются последним бастионом между Интернетом и внутренними ресурсами (например, базой данных). Значит, они являются целью нападения ПРИЧИНЫ УЯЗВИМОСТИ САЙТОВ ЧЕЛОВЕЧЕСКИЙ ФАКТОР Программистские ошибки баги в исх. коде небрежный, медленный код Доступность информации по взлому сайтов Небрежность администраторов Нестойкие пароли Несвоевременная установка обновлений Потенциальные угрозы Атака на информационную среду (операционная система, веб-сервер, среда программирования, база данных) Атака системы управления сайтом Атака сторонних веб-приложений Уровни риска Минимальный – получение доступа к не конфиденциальной информации, к которой не санкционирован доступ, возможность создания косметических проблем и помех в работе проекта. Средний уровень – получение частичного доступа к конфиденциальной информации, частичный обход системы авторизации расширяющий полномочия. Высокий уровень – полный обход системы авторизации, получение неограниченного доступа к системе или приложению, возможность запуска несанкционированных приложений, возможность просмотра или подмены конфиденциальной информации. Взломщики Скрипт-кидди (script-kiddie) – в основном, подростки 15-18 лет. Взлом как самоутверждение. Используют уже готовые эксплоиты для атак. Неспособны сами чтолибо сделать. Максимальный ущерб – дефейс страниц сайта. Любители-идеалисты («white hat») – как правило, студенты в возрасте 19-24 года либо молодые специалисты. Взлом интересен как процесс. Часто сообщают о взломе и о найденных дырах. Пользы больше, чем вреда. Этическая сторона взлома важнее наживы. Вандалы («black hat») - тоже молодые специалисты либо студенты. Взлом ради нанесения вреда. Максимальный ущерб – от порчи данных до полного удаления страниц сайта/базы данных Профессионалы («grey hat») - опытные хакеры. Взлом интересует только с коммерческой точки зрения. Как правило, ломают на заказ. Ущерб максимальный: от разрушения сайта до кражи важной информации. Уязвимости веб-проектов Автоматизированный подбор • Недостаточная аутентификация (Insufficient Authentication) • Небезопасное восстановление паролей (Weak Password Recovery Validation) Авторизация • Предсказуемое значение сессии (Credential/Session Prediction) • Недостаточная авторизация (Insufficient Authorization) • Отсутствие таймаута сессии (Insufficient Session Expiration) • Фиксация сессии (Session Fixation) Атаки на клиента • Подмена содержимого (Content Spoofing) • Межсайтовое выполнение сценариев (Cross-site Scriptin - XSS) Выполнение кода • Переполнение буфера (Buffer Overflow) • Атака на функции форматирования строк (Format String Attack) • Выполнение команд ОС (OS Commanding) • Внедрение команд SQL (SQL Injection) Уязвимости веб-проектов Разглашение информации • Индексирование директорий (Directory Indexing) • Утечка информации (Information Leakage) • Обратный путь в директориях (Path Traversal) • Предсказуемое расположение ресурсов (Predictable Resource Location) Логические атаки • Злоупотребление функциями (Abuse of Functionality) • Отказ в обслуживании (Denial of Service) • Недостаточное противодействие автоматизации (Insufficient Anti-automation) • Недостаточная проверка процесса (Insufficient Process Validation) Наиболее популярные уязвимости (по данным WASC за 2007 год) SQL-Injection – внедрение произвольного SQL-кода в исполняемый запрос PHP-include bug – возможность включения произвольного PHP-кода в исполняемый поток на стороне сервера XSS – Cross-Site-Scripting – кража cookies пользователя путём использования межсайтового скриптинга DDoS – Distributed DoS – распределённая атака на отказ в обслуживании SQL-Injection – внедрение произвольного SQL-подзапроса в исполняемый запрос. Причина: недостаточная обработка входных данных. Уровень риска – от выяснения версии SQL-сервера (для последующего подбора эксплоита) до записи/чтения произвольных данных из таблиц. Способы защиты: - фильтрация данных пользователя - использование заранее сформированных («фиксированных») запросов Данные статистики сайта securitylab.ru за 2007 год по соотношению разных типов уязвимостей высокого уровня риска PHP-инклюдинг – включение произвольного кода в исполняемый поток. Причина: небрежное использование потенциально опасных функций PHP: include и require Уровень риска: средний (чтение любых файлов) / высокий (позволяет выполнить загрузку на сайт т. н. web-shell (командная оболочка) и выполнить произвольные команды ОС на сайте) Способы защиты: - контроль вводимых пользователем данных - уместное использование include/require XSS / CSRF – принципиально иной тип атак, так как направлен на клиента. Суть атак: хищение файлов cookies, хранящих данные об авторизации, путём внедрения в страницу вредоносного JavaScript-кода Причина: недостаточная обработка данных пользователя Уровень риска – любой. Возможны как кража и компрометация отдельного пользователя сайта, так и администратора со всемы вытекающими. Способы защиты: - запрет на использование HTML в форумах и блогах -жёсткий контроль и фильтрация всех данных от пользователя Как защитить сайт? Общие рекомендации по обеспечению безопасности Для защиты инфосреды веб-проекта необходимо использовать специальные средства мониторинга и моделирования атак Обязателен аудит кода веб-приложения. Желательно аудит поручать независимым компаниям Основные принципы безопасности Разработка механизмов безопасности должна быть включена в весь цикл разработки приложения Определение потенциальных проблем. Моделирование угроз. Минимально необходимые привилегии Надежный код Отслеживание и сохранение действий пользователя Разумное использование криптографии Моделирование угроз Моделирование угроз – изучение архитектуры приложения и его составных частей с целью обнаружения и устранения проблем безопасности Моделирование позволяет оперативно обнаружить и устранить возможные каналы атаки, а также непрерывно поддерживать должный уровень безопасности Моделирование угроз можно выполнять как вручную, так и с помощью специализированных средств – сканеров безопасности (Xspider, Tennable Nessus и им подобные) Использование криптографии Использование алгоритмов криптографии позволяет исключить целый класс потенциальных рисков, связанных с возможностью перехвата информации в канале передачи. Промышленным стандартом для защиты веб-приложений является SSL-шифрация в рамках протокола HTTPS. Данный протокол поддерживается всеми браузерами и не требует установки дополнительных компонент для клиентов. При использовании криптографии следует помнить: - использование блочных шифров замедляет работу, поэтому должно быть строго дозированно - криптография сама по себе не является панацеей от взломов. Слабые, поддающиеся подбору ключи могут ослабить защиту, а человеческий фактор может и вовсе свести защиту на нет Рекомендации Обеспечение безопасности информационной среды - задача сложная и ответственная. Для обеспечения более высокого уровня безопасности ваших интернет-проектов необходимо комплексно подойти к обеспечению безопасности Информационной среды и веб-приложений. своевременно устанавливайте обновления программных продуктов не используйте слабые, простые пароли периодически проводите аудит безопасности внимательно отслеживайте события в системных журналах желательно подписаться на рассылку о безопасности, чтобы быть в курсе обнаруженных ошибок и методах их устранения