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