Основы безопасности приложений ДокладчикMicrosoft.

Презентация:



Advertisements
Похожие презентации
Создание безопасных Веб-приложений Алексей Кирсанов ведущий разработчик компании «Битрикс»
Advertisements

Основные понятия информационной безопасности Выполнила: студент ВМИ-256, Майя Кутырева Проверила: Анастасия Валерьевна Шамакина, программист отдела распределенных.
Основы безопасности информационных систем ДокладчикMicrosoft.
Безопасность в разработке ПО. Модель угроз Для построения модели нарушителя необходимо обратиться к существующим практикам.
Клиент банка под атакой © 2009, Digital Security.
Проблемы обеспечения безопасности приложений Тема 20.
Сетевые черви и защита от них. СЕТЕВЫЕ ЧЕРВИ Сетевые черви - это вредоносные программы, которые проникают на компьютер, используя сервисы компьютерных.
Администрирование информационных систем Механизмы обеспечения безопасности данных.
Получение контроля над объектом атаки Местонахождение атакующего В разных сегментах с объектом атаки Используемые уязвимости Цель Ошибки реализации Степень.
Проблемы обеспечения безопасности приложений Тема 20.
Организация компьютерной безопасности и защита информации автор: Чекашов а Ирин а 10А учитель: Антонова Е.П год.
Лекция 6 Безопасность сети. Средства обеспечения безопасности сети.
Проф. В.К.Толстых, Технологии разработки Internet- приложений Администрирование IIS 5, 6 сайт, виртуальный каталог, приложение, пул, рабочий.
Безопасность в Internet и intranet 1. Основы безопасности 2. Шифрование 3. Протоколы и продукты 4. Виртуальные частные сети.
Единая система аутентификации Обзор решения Москва, 2012г.
ЗАЩИТА ИНФОРМАЦИИ ПОДГОТОВИЛА
Хакерские утилиты и защита от них Работа выполнена Миненко Еленой ученицей 10 Б класса.
Хакерские утилиты и защита от них. СЕТЕВЫЕ АТАКИ Сетевые атаки - направленные действия на удаленные сервера для создания затруднений в работе или утери.
Система для поиска контактных данных физических и юридических лиц Вы приобретаете высокотехнологичный, конкурентный IT-продукт за меньшие деньги.
Получение контроля над объектом атаки Местонахождение атакующего В разных сегментах с объектом атаки Используемые уязвимости Цель Ошибки реализации Степень.
Транксрипт:

Основы безопасности приложений ДокладчикMicrosoft

О чем эта презентация Важность системы безопасности приложений Практика разработки систем безопасности приложений Технологии систем безопасности Рекомендации

Trustworthy Computing Trustworthy Computing has four pillars: Reliability means a computer system is dependable, is available when needed, and performs as expected and at appropriate levels. Security means a system is resilient to attack, and the confidentiality, integrity, and availability of both the system and its data are protected. Privacy means that people can control their personal information and organizations that use the information faithfully protect it. Business integrity is about companies in our industry being responsible to customers and helping them find appropriate solutions for their business issues, addressing problems with products or services, and being open in interactions with customers. - Bill Gates July 18, 2002

Сценарии сетевых подключений и вопросы безопасности Сценарии сетевых подключений: Традиционные кабельные сети Мобильные соединения Публичные беспроводные соединения (Wi-Fi) Вопросы безопасности: Надежность работы приложений в Internet Надежность работы бизнеса в Internet Внутренние атаки на преодоление системы защиты

Типичные атаки Организованные атаки Защищенные данные Непреднамеренная утечка информации Автоматизированные атаки Индив. нападающие Вирусы, Троянские кони, Размн. вирусы Отказ в обслуживании (DoS) DoS

Последствия слабой системы безопасности Украденная интеллектуальная собственность Простой всей системы Потерянная продуктивность Ущерб бизнес репутации Потерянное доверие потребителей Серьезные финансовые потери из-за потерянных доходов

Проблемы при реализации системы безопасности Нападающий использует только одну уязвимость Защищающийся должен обезопасить все точки входа Нападающие неограниченны во времени Защищающийся работает под давлением фактора времени и затрат Нападающие и защищающиеся Безопасность и удобство Системы с развитой системой безопасности более трудно использовать Сложные пароли трудно запомнить Пользователи предпочитают простые пароли Нужна ли мне все это … Безопасность и пропускная способность Разработчики и руководство думают, что безопасность не добавляет ценности для бизнеса Если задумываться о безопасности только в момент выхода продукта/ решения, то это значительно повышает стоимость

Роль разработчика в построении безопасных приложений Разработчики должны: Работать с архитекторами решений и системными администраторами над обеспечением безопасности Способствовать обеспечению безопасности приложений: Адоптируя положительный опыт построения безопасных приложений Определяя потенциальные уязвимости и пути по их устранению Используя безопасные техники программирования

Содержание Важность систем безопасности приложений Практика разработки систем безопасности приложений Технологии систем безопасности Рекомендации

Целостный подход к вопросам безопасности Вопросы безопасности должны рассматриваться: На всех стадиях проекта ПроектированиеРазработкаРазвертывание На всех уровнях информационной системы Сеть Сервер приложения Приложение Безопасность хороша настолько,Безопасность хороша настолько, на сколько хорошо слабейшее звено

SD 3 Безопасность при проектировании Безопасность по умолчанию при установке Безопасность при развертывании и эксплуатации Система безопасности в проектировании и кодировании Анализ угроз Снижение уязвимостей Уменьшение контура атаки Неиспользуемые возможности отключены по умолчанию Минимально необходимые привилегии Защита: обнаружение, противодействие, восстановление и управление Процесс: руководства Как …, детальное описание архитектуры Персонал: Обучение Подход к безопасности SD 3 Secure by Design, Default, Deployment

Вопросы безопасности на стадиях цикла разработки Подготовлен план тестов Проектированиезавершено концепция Кодготов выпускПостсопровождение Тестирование на уязвимости Оценить знания по безопасности членов команды Определить критерии выпуска по безопасности Получить заключение внеш. экспертов Анализ угроз Изучать и усовершенствовать проверка системы безопасности Обучение членов команды Тест на измененные данные и минимальные привилегии Решение проблем безопасности, Проверка кода на соответствие рекомендациям по безопасному кодированию =повторение

Моделирование угроз Моделирование угроз: Анализ системы безопасности приложения Ответственная часть процесса проектирования Моделирование угроз: Понижает стоимость построения системы безопасности Предоставляет эффективный процесс Помогает командам разработчиков: Идентифицировать наиболее уязвимые места Определить, какие угрозы необходимо уменьшить и как это достигнуть

Постоянное обучение Как работают возможности системы безопасности Как использовать эти возможности для построения безопасных приложений Как определить потенциальные уязвимости, идентифицируя некорректны код Как избегать известные уязвимости Как избегать повторяющиеся ошибки

Подходы для повышения безопасности подходпольза Анализ угроз Идентифицировать уязвимости в безопасности Улучшить осведомленность об архитектуре приложения Обучение команды разработчиков Избегать общих дефектов безопасности Правильное применение технологий безопасности Проверка кода Безопасный код для Доступа к сети Запуска по умолчанию Использования протоколов без аутентификации Запуска с повышенными привилегиями Использование инструментов более последовательное и тщательное тестирование на уязвимости Использование инфраструктуры Более безопасно с SSL/TLS и IPSec Использование готовых компонент Crypto API COM и.NET Cryptography простр. имен Переход на управляемый код Избегать общих уязвимостей

Процесс моделирования угроз Идентифицировать области защиты 1 Создать набросок архитектуры 2 Декомпозировать приложение 3 Идентифицировать угрозы 4 Документировать угрозы 5 Оценить угрозы 6 Процесс моделирования угроз

Идентификация угроз (STRIDE) Тип угрозыПримеры Имитация (Spoofing) Подделка электронных сообщений Подделка электронных сообщений Подделка ответных пакетов при аутентификации Подделка ответных пакетов при аутентификации Фальсификация (Tampering) Модификация данных, передаваемых по сети Модификация данных, передаваемых по сети Модификация файлов Модификация файлов Отречение (Repudiation) (Repudiation) Удаление критичного файла или совершение покупки с последующим отказом признавать свои действия Удаление критичного файла или совершение покупки с последующим отказом признавать свои действия Раскрытие информации (Information disclosure) Несанкционированный доступ или незаконная публикация конфиденциальной информации Несанкционированный доступ или незаконная публикация конфиденциальной информации Отказ в обслуживании (Denial of service) Заполнение сети пакетами «SYN» Заполнение сети пакетами «SYN» Загрузка сетевого ресурса большим количеством поддельных пакетов ICMP Загрузка сетевого ресурса большим количеством поддельных пакетов ICMP Повышение привилегий (Elevation of privilege) Получение системных привилегий через атаку с переполнением буфера Получение системных привилегий через атаку с переполнением буфера Незаконное получение административных прав Незаконное получение административных прав

Пути снижения рисков 1: ничего не делать 2: предупредить пользователя 3: устранить проблему 4: исправить причину Под надзором

Процесс снижения рисков Тип угрозы (STRIDE) Техника снижения технология имитацияаутентификация NTLM X.509 сертификаты PGP ключи Basic Digest Kerberos SSL/TLS 1.Идентифицируйте категорию например: имитация(Spoofing) 2.Выберите подход например: аутентификация или защита секретных данных 3.Выберите технологию например: Kerberos

Содержание Важность систем безопасности приложений Практика разработки систем безопасности приложений Технологии систем безопасности Рекомендации

Обзор технологий безопасности ШифрованиеХеширование Цифровые подписи Цифровые сертификаты Безопасные коммуникации АутентификациюАвторизацию Межсетевые экраны Аудит Обновления и исправления

Шифрование Шифрование – процесс кодирования данных Защитить от прочтения учетные данные пользователя или данные из системы Защитить данные от изменения Проверить что данные предоставлены определенным пользователем Шифрование бывает: АсимметричнымСимметричным

Асимметричные и симметричные алгоритмы шифрования Тип алгоритмаХарактеристика Симметричный Используется один ключ: Для шифрования данных Для дешифрования данных Быстрый и эффективный Асимметричный Используется пара математически связанных ключей: Публичный ключ для шифрования данных Частный ключ для дешифрования данных Более удобный чем симметричный алгоритм надежный чем Медленнее чем симметричный алгоритм

Проверка целостности данных с использованием хеша Пользователь A Пользователь B данные Хеш значение Хеш алгоритм данные Хеш значение Хеш алгоритм Если хеш совпадает, то данные верны A посылает данные и хеш значение для B

пользователь A пользователь B данные Значение хеша Хеш алгоритм Польз. A закрытый ключ данные Значение хеша Польз. A открытый ключ Хеш алгоритм Значение хеша Если значения совпадают, данные посланы владельцем закрытого ключа и не модифицированы Цифровые сертификаты

Закрытый ключ Пара ключей пользователь приложение компьютер служба Сертифицированный администратор Certification Authority Открытый ключ

Безопасные коммуникации Технологии Технологии на уровне транспортного протокола: IPSecSSLTLS Шифрование RPC SSL/TLS IPSec RPC шифрование

Безопасные коммуникации как работает IPSec Установление безопасного соединения TCP уровень IPSec драйвер шифр. IP пакеты IPSec политика IPSec драйвер TCP уровень

Безопасные коммуникации как работает SSL Пользователь просматривает Web server используя HTTPS Обозреватель создает уникальный сессионный ключ и шифрует его используя открытый ключ сервера, полученный из корневого сертификата Web server получает сессионный ключ и дешифрует его с использованием закрытого ключа сервера После установления соединения весь трафик между сервером и обозревателем шифруется на сессионном ключе Web Server корневой сертификат сообщение безопасный Web Server HTTPS Безопасный обозреватель

Аутентификация Цель аутентификации Проверить подлинность участвующей стороны путем: Приема мандата (credentials) Проверки мандата Обезопасить обмен убедившись, что приложение знает, кто к нему обращается Шифрование данных недостаточно!

Аутентификация Методы аутентификации BasicDigest Digital certificates Integrated Kerberos version 5 protocol NTLM Microsoft Passport Биометрика

Аутентификация Basic Просто но эффективно Поддержка всеми основными обозревателями и серверами Легко программировать и устанавливать Управление учетными записями Необходимо применять SSL/TLS

Аутентификация Digest клиент 1 запрос сервер вызов 2 3 Digest алгоритм пароль X$!87ghy5 4 Active Directory пароль 5 X$!87ghy5 6

Аутентификация клиентские сертфикаты Используются в Web приложениях Сервер защищает канал с SSL/TLS и X.509 сертификат на сервере Сервер аутентифицирует клиентов с использованием данных из клиентского X.509 сертификата Используется в распределенных приложениях Приложение использует SSL/TLS каналы Клиент и сервер аутентифицируют друг друга, используя сертификаты Сертификаты могут распространяться на смарт картах

Аутентификация Когда использовать интегрированную клиент Intranet? Нет возможности нет да Сетевой экран да нет NTLM Аутентификация на сервере нет да домен Active Directory ? Kerberos Аутентификация на сервере и на клиенте Windowsинтегрированная Windows 2000 или старше?

Аутентификация Kerberos Version 5 вход 1 Ticket-Granting Ticket KDC Глобальный кэш TGT 3 TGT Запрос сервиса Клиент KDC Целевой сервер Service Ticket ST Клиент 2 TGT 1 3 ST 2 Сессия установлена 4

Авторизация определение Осуществляется после аутентификации запроса от клиента Процесс подтверждения, что аутентифицированный клиент может осуществлять доступ к специфичным ресурсам Проверка прав, назначенных для файлов, папок, ключей реестра, приложений и т.п. Может определяться декларативно Может определяться в коде

Авторизация Общие механизмы авторизации IIS Web разрешения (и IP/DNS ограничения).NET ролевая безопасность.NET code access security NTFS списки управления доступа (ACL) Windows Server 2003 Authorization Manager SQL Server учетные записи SQL Server разрешения

Аутентификация и авторизация модель имперсонации/делегирования идентификатор клиента используется для доступа к ресурсам вниз по стеку уровней приложения Web сервер или сервер приложений Сервер БД или другой сервер ресурсов A B C A B C

Аутентификация и авторизация модель доверяемой подсистемы Клиенты отображаются на роли Выделенные учетные записи Windows используются для каждой роли при доступе к ресурсам вниз по стеку уровней приложения Web сервер или сервер приложений Сервер БД или другой сервер ресурсовA B C 1 2 роль 1 роль 2

Аудит Аудит включает отслеживание: Доступ к ресурсам и их использование Успешные и неуспешные попытки входа Сбои приложения Аудит помогает: Помогает администраторам обнаружить вторжения и подозрительные активности предоставлять обоснования для расследований Диагностировать дыры в безопасности

Содержание Важность систем безопасности приложений Практика разработки систем безопасности приложений Технологии систем безопасности Рекомендации

Проактивный подход к вопросам безопасности в процессе разработки Внедряйте улучшения в безопасности в течение всего процесса разработки Фокусируйтесь на системе безопасности и обеспечьте, что Ваш код сможет противостоять новым атакам Продвигайте ключевой фактор обучения Повышайте осведомленность в команде Учитесь на ошибка – своих и чужих

Запуск с наименьшими привилегиями Золотое правило безопасности: запускай приложение с достаточными привилегиями для выполнения операций и не привилегией больше!запускай приложение с достаточными привилегиями для выполнения операций и не привилегией больше! Повышенные привилегии могут привести к разрушительным последствиям Код злоумышленника, запущенный в привилегированном процессе тоже имеет эти привилегии Многие вирусы распространяются потому что получатели имеют административные прова

Уменьшите периметр атаки Выставляйте из своего приложения только ограниченное число хорошо документированных интерфейсов Используйте только сервисы, которые необходимы для Вашего приложения Slammer и CodeRed не смогли бы распространиться, если бы соответствующие сервисы не были включены по умолчанию ILoveYou (и другие) не работали бы, если бы поддержка скриптов была отключена Выключите все лишнее

Проверка ввода Переполнение буфера SQL подстановка Кросс-сайт скрипт Проверяйте, отвергайте и обезопасьте пользовательский ввод: Проверки типов Проверка длины Проверка диапазонов Проверка форматов Все что введено, может быть опасно, пока не доказано обратное!

Эшелонированная защита (1/3) используйте несколько рубежей SSL ISA Firewall IIS SQL Server ISA Firewall IPSec

Эшелонированная защита (2/3) Применяйте соответствующие критерии для каждого уровня Проверка безопасности Проверка безопасности Application.dll Application.exe Проверка безопасности Проверка безопасности Защитить ресурс с ACL Application.dll

Эшелонированная защита (3/3) строгие ACL на ресурсы проектируйте ACL для ресурсов приложения с самого начала применяйте ACLs к файлам, папкам, Web страницам, ключам реестра, базам данных, принтерам и объектам в Active Directory Создавайте свои ACL в процессе установки приложения Включайте запретительные(DENY) ACE Не используйте NULL DACL

Не полагайтесь на неясность в вопросах безопасности Не храните ключи/пароли в файлах Не полагайтесь на недокументированные ключи в реестре Всегда исходите из того что атакующий знает все, что знаете Вы сами о приложении

Используйте Data Protection API (DPAPI) для защиты данных две DPAPI функции: CryptProtectDataCryptUnprotectData Данные шифруются с DPAPI: Для Пользователя На уровне машины

Тестирование системы безопасности Вовлекайте в проект команды тестеров в самом начале Используйте подход моделирования угроз для разработки стратегии в тестировании безопасности Тестируйте все Автоматизируйте моделирование атак с использованием скриптов и языков программирования нижнего уровня Подавайте на вход разнообразные наборы неправильных данных Удалите или запретите доступ к файлам и записям registry Тестируйте не из под административной учетной записи Изучайте врага и используйте это знание Какие техники и технологии используют хакеры? Какие техники и технологии могут использовать тестеры?

Учитесь на ошибках Если Вы найдете проблему в системе безопасности – учитесь на ошибках Что привело к возникновению ошибки? Была ли такая же ошибка допущена еще где либо в коде? Как это можно предотвратить? Что можно изменить для повторения ошибок этого типа? Нужно ли сменить систему обучения или инструменты анализа?

Информация Информационные ресурсы Microsoft по безопасности Для разработчиков Для профессионалов IT: На русском языке: Руководства Microsoft по защите информационных систем Computer Security Institute

Ресурсы Для разработчиков и профессионалов в IT Семинары: Независимые пользовательские группы: Независимые оnline объединения:

вопросы?