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

34
SDL Tools and Building Secure Applications Alex Lucas Principal Security Development Manager, Microsoft

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

Page 1: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

SDL Tools and Building

Secure Applications

Alex Lucas

Principal Security Development Manager, Microsoft

Page 2: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

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

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

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

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

• Защита

• Выводы

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

Page 3: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

Pre-SDL: Security Training

Phase 1: Requirements

Phase 2: Design

Phase 3: Implementation

Phase 4: Verification

Phase 5: Release

Post-SDL: Response

SDL Reminder…

Page 4: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

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

– SDL Blog

– SDL & Threat Modelling Books

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

―Threats Treated as bugs, mitigations as features.‖

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

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

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

Page 5: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

Модель

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

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

Верификация

Концепция

Page 6: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm
Page 7: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

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

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

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

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

системе bug tracking.

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

Server (TFS).

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

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

Page 8: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

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

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

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

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

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

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

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

Page 9: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

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

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

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

выполнения

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

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

Пример: GS and ASLR

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

Page 10: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

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

Page 11: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

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

Page 12: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

Random

value

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

буфера стека

String BufferCritical

data…AAAAAAAAAAAAAAAAAAAAAAAAA…

VulnerableCode()

{

WCHAR Buffer[BUFLEN];

Copy(UserData, Buffer);

return;

}

218429037AAAAAAA

Random value mismatch! Safelyterminate app

Page 13: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

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

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

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

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

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

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

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

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

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

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

буфера

Page 14: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

Запрет выполнения данных. 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

Page 15: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

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

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

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

модуля.

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

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

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

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

Address Space Layout Randomization

(ASLR)

Page 16: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

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

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

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

Page 17: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

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

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

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

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

валидации.

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

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

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

Page 18: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

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

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

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

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

функций.

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

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

Banned APIs

Page 19: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

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

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

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

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

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

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

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

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

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

Page 20: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

Native

– Compiler /analyze option

– Microsoft Auto Code Review - OACR (Windows

Driver Kit)

Managed

– FxCop.

– Managed – CAT.NET

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

Page 21: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

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

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

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

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

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

Fuzzing

Page 22: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

MiniFuzz

SDL RegEx Fuzzer

Fuzzing: SDL Tools

Page 23: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

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

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

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

приложения.

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

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

Attack Surface Analyzer

Page 24: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

ASA: First (baseline) scan

Page 25: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

ASA: Data collection

Page 26: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

ASA: Second (product) scan

Page 27: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm
Page 28: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm
Page 29: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

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

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

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

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

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

т.д.

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

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

EMET (The Enhanced Mitigation

Experience Toolkit)

Page 30: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

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

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

– Configuration

• Wild cards, default protection profiles

– Monitoring

• User Notifications, Event Log

• Group Policy, SCCM

EMET (2)

Page 31: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

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)

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

загрузки

Page 32: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

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

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

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

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

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

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

Заключение

Page 33: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

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

Page 34: SDL Tools and Building Secure Applicationsevents.bars-open.ru/sdl/img/S.Bragin_Lucas_SDLTool... · Моделирование угроз. ... /GS 2.0 2008 /NXCOMPAT Heap 2.0 HeapTerm

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