1 / 32

Microsof t Security Toolbox - средства верификации безопасности

Microsof t Security Toolbox - средства верификации безопасности Валерий Берестецкий , Microsoft Corporation 24.11.2008, г.Киев. Жизненный цикл безопасности Моделирование угроз Валерий Берестецкий , Microsoft Corporation 27.11.2008, Одесса. Обзор предлагаемого материала.

zalman
Download Presentation

Microsof t Security Toolbox - средства верификации безопасности

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Microsoft Security Toolbox - средства верификации безопасности • Валерий Берестецкий,Microsoft Corporation 24.11.2008, г.Киев Жизненный цикл безопасностиМоделирование угрозВалерий Берестецкий,Microsoft Corporation 27.11.2008, Одесса

  2. Обзор предлагаемого материала • Верификация безопасности – когда, что и как мы проверяем, средства верификации • Фаззинг – подача на вход намеренно некорректных данных • Статический анализатор неуправляемого кода PreFast (/analyze) • Aнализатор управляемого кодаFxCop • Бинарный анализатор Binscope – проверка того, что dllи сборки построены в соответствии с требованиями SDL • Динамический анализатор АppVerifier– верификация неуправляемого кода в процессе исполнения • Библиотека Anti-XSS – для защиты веб-приложений от межсайтового скриптинга • CAT.NET – статический анализатор кода на уязвимости (распространенные типы атак)

  3. SDL: Этап верификации безопасности Использов.Средстви лучшихпрактик Созд.документови спец.средств Подго-товкапланареагиров. Рывок Финальн.ОбзорБезопас-ности Сопровожди реагиро-вание Обучение Обзор арх. и «атакуемой поверхности» Начало,регистрация сSWI Лучшиепрактики Модели-рованиеугроз Тестир.взломом Традиционные шаги и процессы Жизненного Цикла Безопасности Тестирование и проверка Списки компонент Критерии качестваАрх. документы Планы по времени ЭлектроннаяПодпись + CheckpointExpress ВЫПУСК Поддержка,Обновления Спецификациидизайна Функциональные Спецификации Разработка нового кода Исправление ошибок Требования Дизайн Разработка Верификация Выпуск Поддержка

  4. Зачем нужен данный этап? Постановка может содержать требования безопасности Разработчики пишут соответствующий этим требованиям код Но именно процесс тестирования определяет, насколько этот код безопасен в реальных условиях Майкл Хоуард, «Разработка безопасного кода» Ищите слабые точки в программе! Используйте подход взломщика, а не разработчика!

  5. SDL: Верификация (2) • Цели верификации: • конфиденциальность, целостность и доступность ПО и обрабатываемой им информации; это включает в себя функциональность, разработанную для сдерживания угроз • устранение проблем, вызывающих возникновение уязвимостей, например, переполнение буфера в коде, выполняющем парсинг • Начало верификации – как только написан код • Верификации подвергается как новый, так и ранее существовавший код • Обязательный этап в SDL

  6. SDL: Верификация (3) • Верификация вручную – эффективна, но исключительно трудоёмка • Майкрософт предлагает инструментарий - средства автоматизации анализа кода • Категории средств автоматизации: • Статические анализаторы исходного кода • Анализаторы библиотек и сборок (бинарных ресурсов) • Анализаторы кода в процессе выполнения • Тесты на основе модели угроз • Tестирование взломом

  7. Пример планки ошибок безопасности

  8. Фаззинг – автоматическое тестирование безопасности • Фаззинг – метод поиска ошибок в коде путем подачи намеренно некорректных данных на вход программным интерфейсам (точки входа), обрабатывающим эти данные (парсеры файлов, регистра, общей памяти, сетевого траффика) • На основании найденных в прошлом уязвимостей, считается что большую их часть можно было найти, используя фаззинг

  9. SDL и фаззинг • Внутренние требования SDL • Фаззинг файлов для всех продуктов, производящих чтение и разбор содержимого файлов • Фаззинг внешних RPC интерфейсов • Фаззинг ActiveX • Постоянно обновляются • Средства фаззинга • MiniFuzz • FileFuzz (iDefense labs) • Codenomicon Test Tools • Spike (unix/linux) • Peach (open source) • и т.д.

  10. Стадии фаззинга • Предварительная (идентификация целей фаззинга, планирование, установка «планки ошибок») • Создание некорректных данных: с учетом формата, порядка подачи, генерация или использование имеющихся данных, технология генерации некорректных данных • Определение лучшего способа подачи некорректных данных на вход приложения: командная строка, GUI, API и т.д., кодирование и тестирование этого способа • Мониторинг тестируемого приложения: что мы хотим увидеть и что делать, когда возникает прерывание • Обсуждение результатов, их классификация и анализ • Идентификация причин прерываний, исправление найденных ошибок, повторное прохождение теста и анализ результатов

  11. Точки входа • Фаззингу могут быть подвержены любые способы ввода информации, подлежащей обработке данным приложением • Ввод происходит из разных источников • Прямой – например, через интерфейс пользователя • Косвенный – в результате чтения из базы данных • Места ввода информации в приложение называются точками входа • Рассмотрим некоторые из них

  12. Точки входа (2)

  13. Графический интерфейс • Вероятность атаки: низкая • Необходимо вовлечь пользователя в процесс ввода вредоносной информации • Обычно это непросто • Может использоваться в сочетании со спуфингом

  14. Сокеты • Вероятность атаки: Высокая • Сокеты используются для двустороннего сетевого траффика • Адрес сокета содержит номер порта • Злоумышленник может подать вредоносную информацию через сеть • Средство верификации: netstat -an

  15. Объекты ActiveX и СОМ • Вероятность атаки: Высокая • COM-объекты могут содержаться внутри Internet Explorer’a, приложений Office и в других приложениях-контейнерах • Злоумышленник может подать вредоносную информацию через документ-контейнер (html, документы Office и т.п.) • Средства верификации: Interrogator, COMRaider, Fuzzing

  16. Демо - MiniFuzz

  17. Статический анализ неуправляемого кода (PreFast, /analyze) • Статический анализатор исходного кода, позволяет находить определенные классы ошибок кодирования на С/С++, в частности переполнение буфера. • Обычно через PreFastпропускают секцию кода около 10Мб, анализируют результат, затем повторяют процесс • Запускается из командной строкиили как опция /analyze из Visual Studio • Предоставляет UI для анализа результатов • Интегрирован в Visual Studio Team Edition в виде опции /analyze • При компиляции находит дополнительные ошибки приведения типов, быстродействия, безопасности и операций с памятью • Обязателен к исполнению в SDL

  18. Демо - PreFast

  19. Анализатор управляемого кода FxCop • Бинарный анализатор сборок .Net, выявляющий ошибки следующего типа: • Безопасности • Портативности • Производительности • Глобализации • Общего дизайна • И многое другое • Имеет UI и запускается из командной строки • Правила анализа настраиваются под требования пользователя • Обязателен к исполнению в SDL

  20. Демо - FxCop

  21. Бинарный анализатор Binscope • Средство верификации программных проектов на предмет соответствия требованиям SDL • Проверяет : • Флаг /GS для предупреждения переполнения буфера • Флаг /SafeSEHдля безопасной обработки прерываний • Флаг /NxCOMPATдля предупреждения наличия исполняемого кода в данных (совместимость с функцией DEP Windows) • Флаг /DYNAMICBASE для рандомизации адресного пространства приложения • соблюдение правил наименования сборок (строгие имена), требований к версиям компилятора и сборщика, наличие запрещенных SDL конструкций • правильность заголовков ATL • и многое другое

  22. Демо - Binscope

  23. Динамический анализатор AppVerifier • Предназначен для анализа неуправляемого кода в процессе выполнения • Выявляет следующие дефекты приложения: • Проблемы heap • Проблемы взаимодействия приложения с ОС • Проблемы ACLs • Небезопасные APIs • И многое другое

  24. Динамический анализатор AppVerifier • Имеет несколько уровней тестирования: • Базовый (прерывания, работа с хендлами, проблемы heap, памяти, threads и прочее) • Тест, имитирующий недостаток ресурсов (например, памяти) • Тест работы с разными привилегиямиработы приложения • Тесты нарушения защиты памяти • Тесты утечки ресурсов

  25. Демо - AppVerifier

  26. CAT.NET – статический анализатор кода на уязвимости (распространенные типы атак) • Находит уязвимости распространенных типов (межсайтовый скриптинг, SQL- , Xpath-, LDAP-инъекции и многое другое) • Сканирует сборки и Dll-ы приложения • Трассирует инфопотоки между операторами, методами и сборками • Помодульно сканирует главную и ссылочные сборки в приложении и анализирует все найденные методы • Наконец, выводит информацию обо всех уязвимостях • Интерфейс позволяет переходить от уязвимости непосредственно к месту ее возникновения в коде • Запускается из командной строки или встраивается в Visual Studio

  27. Демо – CAT.NET

  28. Библиотека Anti-XSS • Предназначена для защиты веб-приложений от атаки межсайтового скриптинга • Определяет допустимый интерпретируемый набор символов URL и оставляет в символьном виде всё остальное, не входящее в этот набор • Поддерживает разные скриптовые языки • Содержит усовершенствованные методы удаления опасных HTML-скриптов • По мере совершенствования атак межсайтового скриптинга, выпускаются новые версии библиотеки

  29. Демо – библиотека AntiXSS

  30. Заключение • Показаны лишь некоторые из инструментов верификации • Выбор инструментов зависит от ваших приложений (клиентские/веб, управляемый код или нет и т.д.) • Постоянно разрабатываются новые средства • Не нужно экономить ресурсы на тестировании безопасности - исправлять ошибки после выпуска очень дорого • Интерпретация результатов тестирования занимает время

  31. Вопросы?

  32. Спасибо за внимание! vaberest@microsoft.com Жизненный цикл безопасностиМоделирование угрозВалерий Берестецкий,Microsoft Corporation 27.11.2008, Одесса

More Related