БЕЗОПАСНОСТЬ ИНТЕРНЕТ-ПРОЕКТОВ

advertisement
БЕЗОПАСНОСТЬ
ИНТЕРНЕТ-ПРОЕКТОВ
СТАТИСТИКА 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. Данный протокол поддерживается всеми браузерами и не
требует установки дополнительных компонент для клиентов.
При использовании криптографии следует помнить:
- использование блочных шифров замедляет работу, поэтому должно быть
строго дозированно
- криптография сама по себе не является панацеей от взломов. Слабые,
поддающиеся подбору ключи могут ослабить защиту, а человеческий фактор
может и вовсе свести защиту на нет
Рекомендации
Обеспечение безопасности информационной среды - задача сложная и ответственная.
Для обеспечения более высокого уровня безопасности ваших интернет-проектов
необходимо комплексно подойти к обеспечению безопасности Информационной среды
и веб-приложений.
своевременно устанавливайте обновления программных продуктов
не используйте слабые, простые пароли
периодически проводите аудит безопасности
внимательно отслеживайте события в системных журналах
желательно подписаться на рассылку о безопасности, чтобы быть в курсе
обнаруженных ошибок и методах их устранения
Download