Как сделать ваши приложения безопасными Бешков Андрей Менеджер программ информационной безопасности Центральная и Восточная Европа @abeshkov, abeshkov@microsoft.com 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} abeshkov@microsoft.com; @abeshkov; блог Бешкова