microsof t security toolbox - средства верификации безопасности
DESCRIPTION
Microsof t Security Toolbox - средства верификации безопасности Валерий Берестецкий , Microsoft Corporation 24.11.2008, г.Киев. Жизненный цикл безопасности Моделирование угроз Валерий Берестецкий , Microsoft Corporation 27.11.2008, Одесса. Обзор предлагаемого материала. - PowerPoint PPT PresentationTRANSCRIPT
Жизненный цикл безопасностиМоделирование угроз
Валерий Берестецкий, Microsoft Corporation 27.11.2008, Одесса
1
Microsoft Security Toolbox - средства верификации
безопасности
Валерий Берестецкий, Microsoft Corporation 24.11.2008, г.Киев
Обзор предлагаемого материала• Верификация безопасности – когда, что и как мы
проверяем, средства верификации• Фаззинг – подача на вход намеренно некорректных
данных• Статический анализатор неуправляемого кода PreFast
(/analyze)• Aнализатор управляемого кода FxCop• Бинарный анализатор Binscope – проверка того, что dll и
сборки построены в соответствии с требованиями SDL• Динамический анализатор АppVerifier – верификация
неуправляемого кода в процессе исполнения• Библиотека Anti-XSS – для защиты веб-приложений от
межсайтового скриптинга• CAT.NET – статический анализатор кода на уязвимости
(распространенные типы атак)
Обучение
Начало,регистрация с
SWI
Лучшиепрактики
Обзор арх. и «атакуемой поверхности»
Использов.Средстви лучшихпрактик
Созд.документов
и спец.средств
Подго-товкаплана
реагиров.
Рывок
Тестир.взломом
Финальн.Обзор
Безопас-ности
Сопровожди реагиро-
вание
Списки компонентКритерии качества
Арх. документыПланы по времени
Спецификациидизайна
Тестирование и проверка
Разработка нового кода
Исправление ошибок
ЭлектроннаяПодпись + Checkpoint
Express
ВЫПУСК
Поддержка,Обновления
Требования Дизайн Разработка Верификация Выпуск Поддержка
SDL: Этап верификации безопасности
Модели-рование
угроз
ФункциональныеСпецификации
Традиционные шаги и процессы Жизненного Цикла Безопасности
Зачем нужен данный этап?
Постановка может содержать требования безопасности
Разработчики пишут соответствующий этим требованиям код
Но именно процесс тестирования определяет, насколько этот код безопасен в реальных условиях
Майкл Хоуард, «Разработка безопасного кода»
Ищите слабые точки в программе! Используйте подход взломщика, а не разработчика!
SDL: Верификация (2)Цели верификации: - конфиденциальность, целостность и доступность ПО
и обрабатываемой им информации; это включает в себя функциональность, разработанную для сдерживания угроз
- устранение проблем, вызывающих возникновение уязвимостей, например, переполнение буфера в коде, выполняющем парсинг
Начало верификации – как только написан код
Верификации подвергается как новый, так и ранее существовавший код
Обязательный этап в SDL
SDL: Верификация (3)
• Верификация вручную – эффективна, но исключительно трудоёмка
• Майкрософт предлагает инструментарий - средства автоматизации анализа кода
• Категории средств автоматизации:– Статические анализаторы исходного кода– Анализаторы библиотек и сборок
(бинарных ресурсов)– Анализаторы кода в процессе
выполнения• Тесты на основе модели угроз• Tестирование взломом
Пример планки ошибок безопасности
Рейтинг опасности
Описание угрозы
1 Несанкционированное повышение прав доступа анонимного удаленного пользователя
2 Постоянный отказ в обслуживании анонимного удаленного пользователя
3 Временный отказ в обслуживании
4 Ненаправленное раскрытие информации
Глубокая защита
Уязвимости, влекущие нарушение безопасности – способ атаки неизвестен
Фаззинг – автоматическое тестирование безопасности
• Фаззинг – метод поиска ошибок в коде путем подачи намеренно некорректных данных на вход программным интерфейсам (точки входа), обрабатывающим эти данные (парсеры файлов, регистра, общей памяти, сетевого траффика)
• На основании найденных в прошлом уязвимостей, считается что большую их часть можно было найти, используя фаззинг
SDL и фаззинг• Внутренние требования SDL
– Фаззинг файлов для всех продуктов, производящих чтение и разбор содержимого файлов
– Фаззинг внешних RPC интерфейсов– Фаззинг ActiveX– Постоянно обновляются
• Средства фаззинга– MiniFuzz– FileFuzz (iDefense labs)– Codenomicon Test Tools– Spike (unix/linux)– Peach (open source)– и т.д.
Стадии фаззинга
1) Предварительная (идентификация целей фаззинга, планирование, установка «планки ошибок»)
2) Создание некорректных данных: с учетом формата, порядка подачи, генерация или использование имеющихся данных, технология генерации некорректных данных
3) Определение лучшего способа подачи некорректных данных на вход приложения: командная строка, GUI, API и т.д., кодирование и тестирование этого способа
4) Мониторинг тестируемого приложения: что мы хотим увидеть и что делать, когда возникает прерывание
5) Обсуждение результатов, их классификация и анализ6) Идентификация причин прерываний, исправление
найденных ошибок, повторное прохождение теста и анализ результатов
Точки входа
• Фаззингу могут быть подвержены любые способы ввода информации, подлежащей обработке данным приложением
• Ввод происходит из разных источниковПрямой – например, через интерфейс
пользователяКосвенный – в результате чтения из базы
данных• Места ввода информации в приложение
называются точками входа• Рассмотрим некоторые из них
Точки входа (2)
Графический интерфейс Общая память
Файлы Регистр
Сетевой траффик COM-интерфейсы
ActiveX Командные аргументы
Запросы HTTP P2P траффик
Ответы HTTP Траффик SIP
Запросы в БД Сокеты
Графический интерфейс
• Вероятность атаки: низкая• Необходимо вовлечь пользователя в процесс
ввода вредоносной информации• Обычно это непросто • Может использоваться в сочетании со
спуфингом
Сокеты
• Вероятность атаки: Высокая• Сокеты используются для двустороннего
сетевого траффика• Адрес сокета содержит номер порта• Злоумышленник может подать вредоносную
информацию через сеть• Средство верификации: netstat -an
Объекты ActiveX и СОМ
• Вероятность атаки: Высокая• COM-объекты могут содержаться внутри
Internet Explorer’a, приложений Office и в других приложениях-контейнерах
• Злоумышленник может подать вредоносную информацию через документ-контейнер (html, документы Office и т.п.)
• Средства верификации: Interrogator, COMRaider, Fuzzing
Демо - MiniFuzz
Статический анализ неуправляемого кода (PreFast, /analyze)• Статический анализатор исходного кода, позволяет находить
определенные классы ошибок кодирования на С/С++, в частности переполнение буфера.
• Обычно через PreFast пропускают секцию кода около 10Мб, анализируют результат, затем повторяют процесс
• Запускается из командной строки или как опция /analyze из Visual Studio
• Предоставляет UI для анализа результатов• Интегрирован в Visual Studio Team Edition в виде опции
/analyze• При компиляции находит дополнительные ошибки
приведения типов, быстродействия, безопасности и операций с памятью
• Обязателен к исполнению в SDL
Демо - PreFast
Анализатор управляемого кода FxCop
• Бинарный анализатор сборок .Net, выявляющий ошибки следующего типа:– Безопасности– Портативности– Производительности– Глобализации– Общего дизайна– И многое другое
• Имеет UI и запускается из командной строки• Правила анализа настраиваются под
требования пользователя• Обязателен к исполнению в SDL
Демо - FxCop
Бинарный анализатор Binscope• Средство верификации программных проектов на
предмет соответствия требованиям SDL• Проверяет :
– Флаг /GS для предупреждения переполнения буфера– Флаг /SafeSEH для безопасной обработки прерываний– Флаг /NxCOMPAT для предупреждения наличия исполняемого
кода в данных (совместимость с функцией DEP Windows)– Флаг /DYNAMICBASE для рандомизации адресного
пространства приложения– соблюдение правил наименования сборок (строгие имена),
требований к версиям компилятора и сборщика, наличие запрещенных SDL конструкций
– правильность заголовков ATL– и многое другое
Демо - Binscope
Динамический анализатор AppVerifier
• Предназначен для анализа неуправляемого кода в процессе выполнения
• Выявляет следующие дефекты приложения:– Проблемы heap– Проблемы взаимодействия приложения с ОС– Проблемы ACLs– Небезопасные APIs – И многое другое
Динамический анализатор AppVerifier
• Имеет несколько уровней тестирования:– Базовый (прерывания, работа с хендлами,
проблемы heap, памяти, threads и прочее)– Тест, имитирующий недостаток ресурсов
(например, памяти) – Тест работы с разными привилегиями работы
приложения– Тесты нарушения защиты памяти– Тесты утечки ресурсов
Демо - AppVerifier
CAT.NET – статический анализатор кода на уязвимости (распространенные типы атак)
• Находит уязвимости распространенных типов (межсайтовый скриптинг, SQL- , Xpath-, LDAP-инъекции и многое другое)
• Сканирует сборки и Dll-ы приложения• Трассирует инфопотоки между операторами, методами и
сборками• Помодульно сканирует главную и ссылочные сборки в
приложении и анализирует все найденные методы• Наконец, выводит информацию обо всех уязвимостях• Интерфейс позволяет переходить от уязвимости
непосредственно к месту ее возникновения в коде• Запускается из командной строки или встраивается в Visual
Studio
Демо – CAT.NET
Библиотека Anti-XSS
• Предназначена для защиты веб-приложений от атаки межсайтового скриптинга
• Определяет допустимый интерпретируемый набор символов URL и оставляет в символьном виде всё остальное, не входящее в этот набор
• Поддерживает разные скриптовые языки• Содержит усовершенствованные методы
удаления опасных HTML-скриптов• По мере совершенствования атак межсайтового
скриптинга, выпускаются новые версии библиотеки
Демо – библиотека AntiXSS
Заключение
• Показаны лишь некоторые из инструментов верификации
• Выбор инструментов зависит от ваших приложений (клиентские/веб, управляемый код или нет и т.д.)
• Постоянно разрабатываются новые средства• Не нужно экономить ресурсы на тестировании
безопасности - исправлять ошибки после выпуска очень дорого
• Интерпретация результатов тестирования занимает время
Вопросы?
Жизненный цикл безопасностиМоделирование угроз
Валерий Берестецкий, Microsoft Corporation 27.11.2008, Одесса
32
Спасибо за внимание!