Как сделать ваши приложения безопасными

реклама
Как сделать ваши приложения
безопасными
Бешков Андрей
Менеджер программ информационной безопасности
Центральная и Восточная Европа
@abeshkov,
[email protected]
Microsoft Developer Tour #MSDevTour
О чем будем говорить?
• Как дела с безопасностью
кода глобально?
• Как вас будут атаковать
• Создание моделей угроз
• Простые способы защиты
встроенные в Windows
• Противодействие эксплоитам.
Стоимость устранения уязвимостей
после выпуска дороже в 30 раз
Относительная стоимость устранения ошибок
30
Выпуск
25
20
15
10
5
0
Требования/
Архитектура
Кодирование
Интеграция/
Тестирование
компонент
Финальное
тестирование
После
выпуска
Источник: National Institute of Standards and Technology
Разработка безопасного ПО и эффективность
Исследование Aberdeen:
 Предотвращение одной уязвимости почти
полностью покрывает годовые затраты на
повышение безопасности разработки
Исследование Forrester:
 Компании применяющие методы SDL
демонстрируют гораздо более быстрый возврат
инвестиций
Большинство приложений выглядит так
А в реальности?
У вас также?
Не используете SDL? Они идут к вам!
Разработка безопасных приложений в облаке с SDL
Conception
 Проверенная временем
методология
 Практический подход
 Не ограничен Windows или Microsoft!
Release
 Проактивный – не просто «поиск ошибок»
 Нахождение проблем как можно раньше в
цикле разработки (TM)
 Защищает клиентов платформы
Windows Azure:
 Уменьшение количества и критичности
уязвимостей
Моделирование угроз
Рекомендуемая архитектура приложений
Диаграмма потоков данных в модели Gatekeeper
Пример типовой атаки SQL Injection
Используйте встроенные технологии ИБ правильно!
http://Microsoft.com/sdl
Изоляция компонентов
приложения
Integrity Level и UIPI
Уровни целостности - Integrity Levels
Процессы изолируются пяти основными уровнями
Уровень
Типовой процесс
System
Сервисы
High
Medium
Приложения в повышением прав в режиме
«Elevated»
Стандартные приложения (по умолчанию)
Low
IE в режимер Protected mode
App Container
IE Enhanced Protected Mode (IE10/IE11) и
Modern UI приложения
Ярлыки целостности -Integrity Labels
• Каждый защищаемый объект системы имеет ярлык
• В нем описаны уровень целостности и политики
целостности
• Политики могут включать:
• No-Write-Up:
• No-Read-Up:
• No-Execute-Up:
Нижний уровень IL не может писать
Нижний уровень IL не может читать объект
Нижний уровень IL не может выполнять объект
• Нет ярлыка IL = Medium + No-Write-Up
• Процессы по умолчанию No-Write-Up + No-ReadUp
Window Hooks
• Хуки Window могут применяться только к равному
уровню целостности или по нисходящей от высшего
к низшему
• Это позволяет убить множество вредоносного кода,
включая кейлогеры
• Хуки вызванные процессом с низким уровнем
целостности вызовут запрос на повышение
привилегий
DEMO
Контроль целостности
Process Explorer + icacls
Microsoft Developer Tour #MSDevTour
Создавайте приложение Windows Store
 На основе того что вам уже привычно:
 Воспользуйтесь навыками JavaScript и HTML/CSS или C#,
VB.NET, или C++ with XAML. Используйте .NET, WPF, или
Silverlight или C++ with DirectX.
Modern UI
приложения безопаснее
и надежнее чем
традиционные
приложения
Всё дело в пакете!
Modern UI правда безопаснее?
С Modern UI так не бывает!
Политика безопасности приложений MS Store
Разработчику даётся 180 дней на устранение
критических уязвимостей в его приложении если они не
находятся под активной атакой.
Microsoft оставляет за собой право удалить приложение
из магазина приложений в случае, если разработчик не
атакуемого приложения не реагирует на уязвимости.
https://technet.microsoft.com/enus/security/dn436303.aspx
Где хранятся Windows Store Apps?
 C:\Program Files\WindowsApps
 По умолчанию владелец файлов: TrustedInstaller
WSA Location + имя пользователя
C:\Program Files\WindowsApps
Изоляция App Container
•
Дает более тонкие настройки доступа приложения по
сравнению с Integrity Level
•
Блокирует доступ на чтение и запись к большей части
системы
 JavaScript WSA приложения работают в рамках WWAHost.exe
 XAML WSA работают в своем собственной исполняемом файле
DEMO
App Container и Low Integrity
Level
Process Explorer + Broker
Zero day нашли?
Защита от эксплоитов
EMET и прочие
Windows XP
Internet Explorer 8
Windows 8
Internet Explorer 10
SEHOP
Нет
Да
Protected Mode
Нет
Да
Enhanced Protected Mode (EPM)
Нет
Да
Virtual Table Guard
Нет
Да
ASLR
Ограничено
Расширенный
Stack randomization
Нет
Да
Heap randomization
Нет
Да
Image randomization
Нет
Да
Force image randomization
Нет
Да
Bottom-up randomization
Нет
Да
Top-down randomization
Нет
Да
High-entropy randomization
Нет
Да
PEB/TEB randomization
Да
Да
Heap hardening
Ограничено
Расширенный
Header encoding
Нет
Да
Terminate on corruption
Нет
Да
Guard pages
Нет
Да
Allocation randomization
Нет
Да
Safe unlinking
Да
Да
Header checksum
Да
Да
/GS
Да
Да
Enhanced GS
Нет
Да
Safe SEH
Да
Да
Совет №1 – правильные ключи VS
Используйте ключи компилятора против эксплоитов!
/SDL
/GS
/NXCOMPAT
/DYNAMICBASE
/SAFESEH
DEMO
EMET
Microsoft Developer Tour #MSDevTour
Совет №2 – минимум app capabilities приложению
Назначение capabilities
Группа
File/Library
Capabilities
Pictures, Music, Videos,
Documents
Предназначение
• Если нужен программный доступ ко
всей библиотеке без запроса
разрешений. Проиграть всю музыку.
Devices
Microphone, WebCam,
Location
InternetClient,
InternetClientServer,
PrivateNetwork
• Доступ к устройствам.
EnterpriseAuthentication,
SharedUserCertificates
• Аутентификация для корпоративных
инфраструктур
Network
Enterprise
• По умолчанию используйте
InternetClient
• InternetClientServer пользуйте только
для peer-to-peer
• PrivateNetwork для доступа к LAN
Совет №3 – используйте «file picker» вместо library
Совет №4 – Не доверяйте внешним данным
Совет №5 – Не давайте web контенту работать с WinRT
http://code.msdn.microsoft.com/windowsapps/MashupSample-10689f5b
Совет №6 – аутентифицируйте приложение и
пользователя
http://code.msdn.microsoft.com/windowsapps/Web-Authentication-d0485122
http://code.msdn.microsoft.com/windowsapps/PasswordVault-f01be74a
Совет №7 – шифруй всё! HTTPS!
.
Нет сертификата для сервера? Подпиши его сам!
WSA - работа с десктоп приложением
Так делать не радо! 
WinClipboard – copy, paste, cut, move.
3.1 Requirement “Your app may only depend on software listed
in the Windows Store“. => DON’T use file or protocol
association.
 http://iinspectable.wordpress.com/2013/03/08/inter-process-communication-with-file-association-inwinrt-part-2/
Рекомендуемые инструменты
WACK - Windows App Certification Kit version 3.1
Windows App Certification Kit
Windows App Certification Kit
Приложения проверяются по основным критериям.
Отчет выдается в XML.
Wintellect Tool
 Wintellect Tool - http://wintellect.com/
Заглянем в пакет с помощью Wintellect
«Пишите код так, как будто сопровождать его будет
склонный к насилию психопат, который знает, где
вы живёте».
Мартин Голдинг
Где научиться?
Как написать безопасный код на С++, Java, Perl,
PHP, ASP. NET
Защищенный код для Windows Vista
Игра «Spot the vuln»
10 уязвимостей веб проектов - OWASP Top Ten
Курсы SANS
Книга по SDL
Упрощенный SDL
Где научиться?
www.microsoft.com/sdl
www.Secunia.org
The Simplified Implementation of the SDL
Блог об SDL
MSDN
Windows 8 developer blog
Где научиться?
 [HOLMES 2010]. Holmes, Graham. (2010, April 05). Cisco CSDL Announcement –
http://blogs.cisco.com/security/the_cisco_secure_development_lifecycle_an_overview/
 [LANE 2010]. Lane, Adrian. (2010, May 10). FireStarter: Secure Development Lifecycle – You’re
Doing It Wrong. Securosis. Retrieved December 29 2010, from
http://securosis.com/blog/firestarter-secure-development-lifecycle-your-doing-it-wrong
 [LADD 2010]. Ladd, David. (2010, May 11). “Do what Microsoft did, not what they do”.
Retrieved December 29 2010, from http://blogs.msdn.com/b/sdl/archive/2010/05/11/dowhat-microsoft-did-not-what-they-do.aspx
 [LARSON_LADD 2010]. Larson, Larry. Ladd, David. (2010, May 14). Security Talk: Simplified SDL
with David Ladd. Channel 9. Retrieved December 29 2010, from
http://channel9.msdn.com/Blogs/LarryLarsen/Security-Talk-Simplified-SDL-with-David-Ladd
Контакты
Бешков Андрей
{Microsoft, CSS Security}
[email protected]; @abeshkov;
блог Бешкова
Скачать