sdl tools and building secure applicationsevents.bars-open.ru/sdl/img/s.bragin_lucas_sdltool... ·...
Post on 13-Sep-2020
3 Views
Preview:
TRANSCRIPT
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
Спасибо за внимание!
top related