Безопасность интернет-приложений #1 / Риски и угрозы [Технострим]
Введение
Обзор раздела: В этом разделе преподаватель объясняет, что будет рассматриваться в курсе и почему безопасность информационных систем является важной темой.
Что будет рассмотрено в курсе
- Курс будет о безопасности интернет-приложений, мобильных приложений и веб-приложений.
- Курс состоит из 7 или 8 занятий, которые будут проходить каждую неделю.
- Одно из занятий будет посвящено автоматизации тестирования.
Как получить зачет
- Для получения зачета нужно посещать все семинары и выполнять задания на них.
Почему безопасность информационных систем важна
- Безопасность информационных систем стала очень актуальной темой, так как все больше денег и активности переходят в цифровую область.
- Увеличение количества инцидентов связанных с компьютерной безопасностью приводит к ущербу для пользователей и компаний.
- Преподаватель показывает график хакерских атак последних двадцати лет и топ-5 инцидентов связанных с компьютерной безопасностью за последний год.
Безопасность информационных систем
Обзор раздела: В этом разделе преподаватель объясняет, что такое безопасность информационных систем и какие свойства должны быть у приложения, чтобы его можно было назвать безопасным.
Что такое безопасность информационных систем
- Система считается безопасной, если она обладает четырьмя свойствами: конфиденциальностью, целостностью, доступностью и аутентификацией.
- Актив или asset - это любой объект, который находится под защитой.
Четыре свойства безопасности информационных систем
- Конфиденциальность - это свойство, которое позволяет сохранять в тайне информацию, которая должна быть секретной.
- Целостность - это свойство, которое позволяет сохранять данные в неизменном виде.
- Доступность - это свойство, которое позволяет пользователям получать доступ к данным и ресурсам в нужное время.
- Аутентификация - это процесс проверки подлинности пользователя или системы.
Активы
- Актив или asset - это любой объект, который находится под защитой.
- Примеры активов: данные, программное обеспечение, аппаратное обеспечение и т.д.
Угрозы и оценка рисков
Обзор раздела: В этом разделе говорится об уязвимостях в системах безопасности, угрозах и оценке рисков.
Изучение системы
- Уязвимость - это ошибка в системе, которая может нарушить ее безопасность.
- Перед тем как начать мероприятия по обеспечению безопасности, нужно изучить систему и понять ее устройство.
- Для защиты или слома задачи необходимо изучить систему и найти уязвимые места.
Модель угроз
- Чтобы понять, как защитить систему, нужно построить модель угроз.
- Каждая угроза определяется компонентами до активов, ассетами и потоками данных между ними.
- Существует несколько типов угроз: spoofing (подмена данных), piling (перехват данных), replay attack (повторное использование запросов), отказ компонента или всей системы и повышение привилегий в системе.
Оценка рисков
- Каждая угроза выражается в некотором риске, их нужно уметь сравнивать и выстраивать по приоритету.
- Существуют разные системы оценки рисков, которые помогают повысить опасность системы.
Введение
Обзор раздела: В этом разделе говорится об основных понятиях информационной безопасности.
Основные понятия
- Информационная безопасность - это защита информации от несанкционированного доступа, использования, раскрытия, изменения или уничтожения.
- Аутентификация - это процесс проверки подлинности пользователя или системы.
- Шифрование - это процесс преобразования информации в непонятный для посторонних вид.
Управление доступом
Обзор раздела: В этом разделе говорится об управлении доступом к информации.
Управление доступом
- Управление доступом - это процесс контроля доступа к информации.
- Ролевая модель - это модель управления доступом, в которой права доступа определяются на основе роли пользователя.
- Мандатное управление доступом - это модель управления доступом, в которой права доступа определяются на основе полномочий.
Угрозы и оценка рисков
Обзор раздела: В этом разделе говорится об уязвимостях в системах безопасности, угрозах и оценке рисков.
Изучение системы
- Нужно изучить систему и найти уязвимые места.
Модель угроз
- [](
Оценка рисков и меры безопасности
Обзор раздела: В этом разделе говорится о том, как проводится оценка рисков в информационной системе и какие меры безопасности можно применять для повышения уровня безопасности.
Оценка рисков
- Риск оценивается по 5 параметрам: потенциальный урон, воспроизводимость, эксплуатируемость, количество пользователей, которые пострадают при реализации угрозы.
- Риск оценивается по 10 бальной шкале.
- Оценки складываются и получается число, которое можно использовать для сравнения и принятия решений.
Меры безопасности
Контроль доступа
- Различные механизмы контроля доступа помогают повысить уровень безопасности информационной системы.
- Аутентификация пользователя - первая функция контроля доступа. Пользователь должен быть идентифицирован, доказать свою личность и проверить наличие прав на выполнение конкретного действия.
Управление сессиями
- Сессия - это понятие, неотрывно связанное с контролем доступа. Мероприятия по управлению сессиями являются частью мер безопасности, которые должны быть реализованы в информационной системе.
Контроль над входными данными
- Входные данные могут быть подменены или изменены злоумышленниками. Поэтому все параметры, получаемые извне системы, должны быть проверены.
- Нельзя доверять одним данным никаким. Все параметры должны быть проверены перед использованием.
Обработка ошибок
- Контроль над входными данными и обработка возникающих ошибок - это еще одна мера безопасности, которую нужно реализовать в информационной системе.
Заключение
- Оценка рисков и применение мер безопасности помогают повысить уровень безопасности информационной системы.
Обработка ошибок и меры безопасности
Обзор раздела: В этом разделе рассматривается важность обработки ошибок и мер безопасности при построении систем.
Обработка ошибок
- Ошибки, которые происходят в системе, должны быть предусмотрены и обработаны.
- Необработанные ошибки могут привести к нарушению работы приложения и утечке информации о внутреннем устройстве системы.
- Пример: если мы не отловим ошибку при проверке пароля пользователя, то можем выдать сессию пользователю, который не прошел проверку.
Меры безопасности
- Данные должны быть классифицированы по степени секретности, важности и ценности.
- Каждый тип данных должен иметь свой набор мер безопасности.
- Принцип наименьшего привилегия: каждому компоненту должен быть назначен только тот набор прав, который нужен для его функционирования.
- Для обеспечения безопасности данных при хранении и передаче следует использовать адекватные криптографические методы.
Общие термины информационной безопасности
Обзор раздела: В этом разделе рассказывается о том, каким образом можно обеспечить безопасность приложения.
Кастомные и стандартные реализации
- Специалисты должны знать, что кастомные реализации могут содержать недочеты, которые сложно протестировать.
- Разработчики должны знать, какой алгоритм выбрать в зависимости от ситуации и где найти правильную реализацию.
Принципы безопасной разработки
- Разработчики должны знать два принципа безопасной разработки: "безопасность по дизайну" и "безопасность глубину".
- "Безопасность по дизайну" означает, что при проектировании системы нужно учитывать аспекты безопасности.
- "Безопасность глубину" означает, что для каждой потенциальной угрозы должна быть больше одной меры безопасности.
Инструменты безопасности браузера
Обзор раздела: В этом разделе рассказывается о том, какие инструменты предоставляет браузер для обеспечения безопасности приложения.
Origin policy
- Главный принцип безопасности браузера - это origin policy.
- Origin policy говорит о том, что доступ к данным загруженным с определенного origin могут иметь только те скрипты, которые загружены с такого же origin.
Приложение в браузере
Обзор раздела: В этом разделе рассказывается о том, как работает приложение в браузере и какие инструменты предоставляет Android для обеспечения безопасности приложений.
Работа приложения в браузере
- При работе с формой на сайте происходит post запрос.
- Для проверки пароля используются tashtego и система проверки паролей.
Инструменты Android для обеспечения безопасности приложений
- Нужно понимать, какие инструменты предоставляет Android для создания безопасных приложений.
Политика Same-Origin
Обзор раздела: В этом разделе рассказывается о политике Same-Origin и ее важности для безопасности пользователей.
Same-Origin Policy
- Same-Origin Policy - это правило, которое позволяет скрипту загруженному с определенного origin читать данные только с того же origin.
- Это правило обеспечивает безопасность данных пользователя при использовании приложений.
- Существует несколько типичных уязвимостей, которые могут нарушить политику Same-Origin и стать проблемой для безопасности пользователей.
- Для большинства типов запросов политика Same-Origin выполняется по умолчанию, но есть исключения.
- Некоторые ресурсы, такие как статические страницы, могут быть загружены из других источников. Однако JavaScript не может читать эти ресурсы.
- Существует технология Cross-Origin Resource Sharing (CORS), которая позволяет скрипту запрашивать данные с других origin.
Режим CORS
- Режим CORS используется для чтения данных с других origin.
- Для использования CORS необходимо разрешение от сервера, к которому обращается скрипт.
- Браузер делает preflight запрос на сервер для проверки разрешения на чтение данных с другого origin.
- Если сервер разрешает запрос, браузер делает настоящий запрос и получает данные.
- Если сервер не разрешает запрос, браузер не делает запрос и возвращает ошибку.
Заключение
- Разработчики могут использовать заголовок Access-Control-Allow-Origin для управления доступом к данным с других origin.
- Кастомные заголовки могут быть переданы через опциональный заголовок Access-Control-Allow-Headers.
- Использование звездочки в Access-Control-Allow-Origin позволяет любому пользователю получить доступ к данным с других origin без ограничений.
Безопасность куков и сессий
Обзор раздела: В этом разделе рассматривается безопасность куков и сессий, а также способы защиты данных пользователя.
Куки
- Куки - это кусочек данных, который сохраняется в браузере.
- Сессии - это длинная строка, которая используется для идентификации пользователя.
- Куки могут быть настроены по умолчанию для определенных доменов или путей.
- Флаг secure указывает, что куки должны передаваться только по защищенному соединению.
Защита данных
- Для защиты данных пользователей можно использовать несколько методов: добавление специальных атрибутов при сохранении кук, указание времени хранения кук и ограничение доступа к ним.
- Флаг SameSite позволяет контролировать отправку кук на другие сайты.
Механизмы безопасности браузера
Обзор различных механизмов безопасности, которые используются в браузерах.
Заголовки контента и безопасность
- Браузеры имеют набор фич, связанных с обеспечением безопасности.
- Заголовок к своему пшеницы говорит браузеру, можно ли отображать сайт во фрейме.
- Разные типы данных могут быть указаны для заголовков контента, чтобы предотвратить ошибки интерпретации данных браузером.
Конкурс Security Policy
- Самый навороченный механизм - конкурс Security Policy.
- Это позволяет перечислить ресурсы, которые можно загружать на странице.
Ограничение загрузки ресурсов
- Браузер может ограничивать загрузку ресурсов из других источников.
- Это может помочь предотвратить кражи кликов.
Указание типа данных
- Разработчик страницы может явно указать браузеру, какой тип данных возвращает запрос.
- Это важно для безопасности, так как разные типы данных могут быть интерпретированы по-разному.
Перерыв
Перерыв на 10 минут.
Автотест и обсуждение Android
Обсуждение механизмов безопасности Android.
Механизмы безопасности Android
- Android предоставляет приложения для обеспечения их безопасности.
- Из этого будут вытекать хорошие практики написания кода.
Android Security Module
В этом разделе рассматривается безопасность приложений на платформе Android. Обсуждаются угрозы, связанные с интентами и пермишенами.
Различия между явными и неявными интентами
- Каждое приложение выполняется в sandbox, что означает, что каждое приложение изолировано на уровне операционной системы.
- Операционная система определяет, давать ли доступ к ресурсам устройства (например, хранилищу или отправке SMS), основываясь на разных факторах.
- Интенты могут быть явными или неявными. Явные интенты указывают класс, который будет обрабатывать запрос. Неявные интенты могут вызывать проблемы безопасности.
- При передаче данных через интент возникает риск перехвата данных зловредным приложением.
Управление доступом к данным
- Для предотвращения угроз связанных с интентами используются permissons и intent filters.
- Android предоставляет способы управления доступом к данным, такие как permissons и signature-based permissions.
- Приложения могут запрашивать данные друг у друга, если они подписаны одним и тем же ключом.
Заключение
- В целом, на платформе Android существует два типа угроз: создание зловредных интентов и получение данных от зловредных приложений.
Механизмы обеспечения безопасности в Android
Обзор раздела: В этом разделе рассмотрены механизмы обеспечения безопасности в Android-приложениях.
Контроль доступа к данным
- Контент-провайдер должен соблюдать определенные меры безопасности при работе с данными, которые даются наружу.
- Для контроля изменений данных необходимо использовать механизм перми си.
Исполнение Java Script
- Включение исполнения Java Script может привнести уязвимости в приложение.
- В Android есть фича, которая позволяет отключить и включить Java Script - Mass of Chance.
Угрозы безопасности в Android приложении
- Необходимо учитывать возможность установки пользователем вредоносного приложения на телефон.
- Безопасность Android приложения делится на безопасность самого приложения и клиентского кода.
Нарушение безопасности
- Приложение может нарушать свою безопасность через излишний доступ к данным или запрос излишних разрешений.
Вредоносные приложения
- Эксплуатация уязвимостей в Android приложении более трудоемка, чем в случае с вредоносным приложением.
- Google выпиливает до 4000 вредоносных приложений ежемесячно.
Заключение
Обзор раздела: В этом разделе были рассмотрены возможности нарушения безопасности Android-приложений и механизмы защиты от них.
Безопасность приложений Android
Обзор раздела: В этом разделе рассматривается безопасность приложений на платформе Android. Разработчики должны учитывать требования безопасности, чтобы защитить данные пользователей и предотвратить возможные атаки.
Ограничения доступа к данным
- Приложения не могут отправлять смазки без разрешения пользователя.
- Данные, полученные из интентов, должны проходить предварительную валидацию перед использованием.
- Критичные действия, такие как списание денег со счета пользователя или отправка данных на сервер, не должны выполняться для интентов происхождения которых нам неизвестно.
Работа с файловой системой
- Секретные данные не должны храниться в хранилищах, которые допускают доступ третьих приложений.
- Нельзя записывать или читать файлы из файловой системы с контролируемой третьей стороной.
- Имена файлов должны быть контролированы входными параметрами.
Заключение
Разработчики приложений на платформе Android должны учитывать требования безопасности, чтобы защитить данные пользователей и предотвратить возможные атаки. Ограничения доступа к данным и работа с файловой системой являются важными аспектами безопасности, которые необходимо учитывать при разработке приложений.
Работа с файлами и механизмы безопасности
Обзор раздела: В этом разделе рассказывается о работе с файлами в Android, а также о механизмах безопасности, которые необходимо учитывать при разработке приложений.
Работа с файлами
- При работе с файлами важно указывать правильную директорию для записи или чтения.
- Необходимо проверять имя файла перед его чтением или записью, чтобы избежать возможных уязвимостей.
- Некоторые исполняемые файлы хранятся в приватной папке приложения, поэтому перезапись этих файлов может привести к выполнению произвольного кода на телефоне.
Механизмы безопасности
- Для обеспечения безопасности Android-приложений необходимо учитывать следующие механизмы: работу с интентами, контент-провайдеры и пермишены.
- При работе со своим браузером нужно минимизировать использование JavaScript.
- Все данные, передаваемые между приложением и сервером, должны передаваться по защищенному каналу.
- Для шифрования данных в Android используется протокол SSL.
Заключение
- Необходимо учитывать механизмы безопасности при разработке Android-приложений, чтобы избежать возможных уязвимостей.
Ошибки сертификата и безопасность приложений
Обзор раздела: В этом разделе рассказывается о том, как игнорирование ошибок сертификата может привести к уязвимостям в безопасности приложений. Также представлены источники информации для изучения вопросов безопасности.
Ошибки сертификата и уязвимости
- При игнорировании ошибок сертификата программисты могут создавать уязвимости в безопасности приложений.
- Игнорирование ошибок сертификата может привести к тому, что пользовательское соединение будет принимать любые сертификаты, что позволяет перехватывать трафик пользователя и получать доступ к его секретным данным.
Источники информации по безопасности
- Open-source проект OWASP (The Open Web Application Security Project) содержит много материалов по вопросам безопасности приложений.
- Mozilla Developer Network содержит секцию "Правильная защита", которая рассказывает о крутых фичах браузеров и других аспектах безопасности.
- Статья про Android Security Module содержит интересную информацию о безопасности в Android.
- Для автоматизации поиска уязвимостей можно использовать различные инструменты, такие как игры и программы.
Описание курса
Обзор раздела: В этом разделе представлено краткое описание того, что будет рассмотрено в оставшееся время курса.
Основные темы курса
- Курс будет затрагивать типичную архитектуру приложений и серверной части, а также некоторые аспекты криптографии.
- В конце курса будут рассмотрены меры, которые можно применять для обеспечения безопасности приложений на всех этапах жизненного цикла разработки.