SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... ·...

Post on 13-Sep-2020

0 views 0 download

Transcript of SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... ·...

SDL Tools and Building

Secure Applications

Alex Lucas

Principal Security Development Manager, Microsoft

• Моделирование угроз (Threat Modelling)

• Снижение опасности (Mitigations)

• Статический анализ (Fuzzing)

• Анализ приложения

• Защита

• Выводы

План выступления

Pre-SDL: Security Training

Phase 1: Requirements

Phase 2: Design

Phase 3: Implementation

Phase 4: Verification

Phase 5: Release

Post-SDL: Response

SDL Reminder…

Приведено поверхностное описание, подробнее:

– SDL Blog

– SDL & Threat Modelling Books

Рассматриваем упрощенный 4-шаговый процесс.

―Threats Treated as bugs, mitigations as features.‖

Уязвимость –это дефект, разрешение уязвимости –

элемент дизайна.

Моделирование угроз

Модель

Выявление угроз

Снижение опасности

Верификация

Концепция

Описание каждого взаимодейcтвия между

элементами DF диаграммы.

Веделение уязвимостей этих взаимодействий

(STRIDE) и их представление как дефектов в

системе bug tracking.

Отслеживаем прогресс через Team Foundation

Server (TFS).

Продолжаем моделирование

угроз…(SDL threat modelling tool)

Два основных типа:

– Инструментарий разработчика(Compiler, Linker etc.)• Дополнительное инструментирование бинарных

файлов. (Проверки, безопасные функции).

– OS/Платформа• Обеспечивает управление памятью, загрузку

приложения и т.п.

Mitigation/Снижение опасности

(Платформа и инструментарий)

Затрудняет превращение ошибок в уязвимости.

Понижает шансы атакующего на успех

Проводит автоматические проверки во время

выполнения

Делает взаимодействие с окружением меннее

предсказуемым.

Пример: GS and ASLR

Снижение опасности (Mitigation)

10

Развитие системы управления

памятью

Stack

Heap / Pool

Executable Code

/GS 1.0 /GS 1.1

Heap 1.0

DEP ASLR DEP IE8

20072006200520042003

/GS 2.0

2008

/NXCOMPAT

Heap 2.0 HeapTerm

EH4 SEHOP /GS 3.0

DEP+ATL

Safe Unlinking

2009

DEP O14

2010 2011

SEHOPIE9

Mitigation Mitigates Available in Enabled by

Stack cookies Dev 10 /GS

Strict GS ‘non-traditional’ stack overflows

Dev 10 #pragma strict_gs_check(on)

DEP W^X XP SP2+ /NXCOMPAT

Heap hardening Heap metadata attacks

Vista + (OS Platform Support)

Heap terminate on corruption

“ XPSP3 HeapSetInformation or /SUBSYSTEM:WINDOWS,6.0

ASLR ROP /DYNAMICBASE

SafeSEH SEH overwrites /SAFESEH

SEHOP “ Win 7+ Reg key entry

Базовые встроенные маханизмы

защиты

See http://msdn.microsoft.com/en-us/library/bb430720.aspx

Random

value

Обнаружение переполнения

буфера стека

String BufferCritical

data…AAAAAAAAAAAAAAAAAAAAAAAAA…

VulnerableCode()

{

WCHAR Buffer[BUFLEN];

Copy(UserData, Buffer);

return;

}

218429037AAAAAAA

Random value mismatch! Safelyterminate app

Защищает от переполнения буфера в стеке.

/GS флаг компиляции( включен по умолчинаю)

Применяется только если

Applies only when there is a GS buffer detected:• Выделен массив больше 4 байт, в котором больше двух

элементов и тип элемента не указатель.

– Структуры, которые не содежат указателей и имеют размер больше 8 байт.

– Буфер, созданных с помощью функции_alloca.

– Любые класс или структура, содержащие такой буфер .

Некоторые обьекты еще не защищены, например vtable.

Механизм защита стекового

буфера

Запрет выполнения данных. Data Execution Prevention (DEP) – Использует функции, поддерживаемые процессором для предотвращения выполнения кода из области данных (e.g. stack, heap etc).

– Затрудняет выполнение кода, внесенного при атаке.

– Включено по умолчанию флагом /NXCOMPAT компоновщика.

SafeSEH и SEHOP

– Оба механизма защищают от подмены обработчика структурных исключений (распространенная цель атаки переполнениями)

– /SAFESEH это ключ компоновщика. Если этот ключ используется, то требуется поддержка всеми компануемыми модулями.

– SEH Overwrite Protection (SEHOP) защита на уровне операционной системы. Предоставляет больше гарантий и не требует поддержку SEH. (Win7/Win2008R2). Включено по умолчанию в Win2008R2. В Win7 активируется ключем регистра.

([HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\MyExecutable.exe] "DisableExceptionChainValidation"=dword:00000000)

DEP/NX, SafeSEH, SEHOP

Делает случайными базовые адреса модулей.

Многие уязвимости основываются на том, что при

атаке известен статический адрес запускаемого

модуля.

Для эфективной работы должен использоваться DEP.

Адреса системных DLLs изменяются при каждой

загрузке. Адреса программных модулей, кучи и

стека при каждом запуске.

Address Space Layout Randomization

(ASLR)

Address Space Layout Randomization

(ASLR)

app.exe

user32.dll

kernel32.dll

ntdll.dll

Boot 3Boot 1 Boot 2

app.exe

user32.dll

kernel32.dll

ntdll.dll

app.exe

user32.dll

kernel32.dll

ntdll.dllprocessaddressspace

Region Entropy

Image 8 bits

Heap 5 bits

Stack 14 bits

Artificial Diversity

• Изменяет базовые адреса при каждом запуске

• Адресное пространство непредсказуемо при атаках

Проверьте ваше приложение!

Хорошая практики сделать такие проверки частью

pre-release процесса/build validation.

Используйте BINSCOPE как часть процесса

валидации.

Удостоверьтесь, что использутся

базовые механизмы устранения

уязвимостей.

Существует некоторое количество функций,

которые со временем были признаны

небезопасными для использования.

Компилятор выводит предупреждения для таких

функций.

Небезопасные по SDL приведены в banned.h.

Используйте безопасные аналоги.

Banned APIs

Автоматизированный анализ кода.

– Проверка выполнения политик кодирования.

– Выявление дефектов и сигнатур уязвимостей.

Поддерживается MSRC (Microsoft Security Response

Center) и другими группами

Затем детекторы используются продуктовыми

группами, включаются в SDL и инструменты в

общем доступе.

Статический анализ.

Native

– Compiler /analyze option

– Microsoft Auto Code Review - OACR (Windows

Driver Kit)

Managed

– FxCop.

– Managed – CAT.NET

Статический анализ (2)

Тестирование приложения неожиданными

наборами данных. Инструменты предоставляют

возможность автоматической модификации

наборов данных.

Подробнее рассматривается в QA.

Fuzzing

MiniFuzz

SDL RegEx Fuzzer

Fuzzing: SDL Tools

Сканирует и запоминает состояние системы

(файлы, регистр, порты и т.д.)

Сканирование повторяется после установки

приложения.

Помогает анализировать изменение поверхности

атаки вызванные приложением.

Attack Surface Analyzer

ASA: First (baseline) scan

ASA: Data collection

ASA: Second (product) scan

EMET — это служебная программа, которая

предотвращает эксплуатирование уязвимостей в

программном обеспечении, которое не было

собрано с рекомендованными SDL флагами..

Помогает успользование 3rd Party компонент и

т.д.

Обеспечивает некоторое снижение опасности для

готовых исполняемых файлов.

EMET (The Enhanced Mitigation

Experience Toolkit)

Выпущена версия 3.5

– Предназначена для enterprise использования.

– Configuration

• Wild cards, default protection profiles

– Monitoring

• User Notifications, Event Log

• Group Policy, SCCM

EMET (2)

Release SDL Guidance and tools

Threat Modelling – Guidance and Tool

Tools:

– VS Extensions

– !exploitable

– EMET

– Attack Surface Analyzer

– and others…

Joint Industry initiatives:

– SAFECode (www.safecode.org)

Материалы для свободной

загрузки

Разрабатывайте, используя SDL (или эквивалент)

Моделируйе угрозы

Используйте актуальные инструменты и компиляторы

Используйте встроенные механизмы снижения опасности.

Выполняйте Статический анализ и исправляйте дефекты.

Проводите Deployment analysis.

Заключение

Trustworthy Computing

http://www.microsoft.com/twc

TwC Blogs

http://www.microsoft.com/mscorp/twc/blogs/default.mspx

SDL Portal

http://www.microsoft.com/sdl

SDL Process on MSDN (Web)

http://msdn.microsoft.com/en-us/library/cc307748.aspx

SAFECode

http://www.safecode.org

Openness

http://www.microsoft.com/openness

Resources

Спасибо за внимание!