Module 1

Выявление угроз

При начале разработки нового приложения нужно сразу учитывать несколько факторов. С точки зрения этой серии курсов мы, естественно, считаем безопасность самым важным из них. На этапе проектирования необходимо применять какую-либо форму моделирования угроз. Иначе в приложении могут появиться серьезные недостатки, либо усилия по поддержанию безопасности будут потрачены не на ту часть приложения. В процессе моделирования угроз приложение изучают и разбирают на более мелкие части — функции и модули, выполняющие определенные задачи. Из этих частей выявляют угрозы, а из угроз — уязвимости. Этот процесс может продолжаться, и каждая часть будет далее разбиваться на еще более мелкие части.

Угрозы могут обнаруживаться разными субъектами. Например, обычный пользователь может случайно наткнуться на дефект в приложении; скрипт-кидди, запускающий автоматизированные инструменты, может обнаружить слабое место; или действительно мотивированный атакующий может найти дефект в приложении путем ручного анализа. Влияние угрозы на приложение может включать предоставление несанкционированного доступа из-за сбоя авторизации, отравление кэша браузера вредоносными данными или раскрытие приватных данных через перехват.

Для упрощения моделирования существует несколько способов классификации угроз. Два примера — контрольные списки STRIDE и DREAD. Ни один из них не является исчерпывающим, но оба дают хорошую структуру для определения типа конкретной угрозы.

Модель угроз STRIDE

Модель угроз STRIDE — полезный контрольный список вопросов, который помогает при моделировании угроз приложения. 'STRIDE' — это акроним для следующих категорий угроз: Spoofing (подмена), Tampering (модификация), Repudiation (отказ от совершенного действия), Information Disclosure (раскрытие информации), Denial of Service (отказ в обслуживании) и Elevation of Privilege (повышение привилегий). Spoofing охватывает случаи, когда кто-то незаконно получает доступ к системе, используя аутентификационные данные другого пользователя. Tampering охватывает такие случаи, как несанкционированные изменения постоянных данных, находящихся внутри машины или передаваемых по сети. Repudiation указывает, что система должна уметь отслеживать операции пользователя, чтобы предоставить доказательства произошедшего в случае нарушения безопасности. Information Disclosure охватывает раскрытие информации неавторизованным лицам. Эта категория угроз также может возникать внутри машины или во время передачи. Denial of Service относится к случаям, когда сервер или сервис временно становится недоступным. Наконец, Elevation of Privilege — это тип угрозы, при котором пользователь без привилегий находит способ получить достаточные привилегии для компрометации системы.

Модель оценки рисков DREAD

DREAD — это мнемонический контрольный список для приоритизации угроз по их серьезности. Он расшифровывается как Damage (ущерб), Reproducibility (воспроизводимость), Exploitability (эксплуатируемость), Affected Users (затронутые пользователи) и Discoverability (обнаруживаемость), что в целом достаточно понятно. Вокруг Discoverability велось немало обсуждений: например, не будет ли поощрение специалистов по безопасности к снижению обнаруживаемости, в свою очередь, поддерживать устаревший подход безопасности через сокрытие. Обычно во всех категориях используется шкала от 0 до 10, кроме обнаруживаемости, которую часто устанавливают равной 10 на том основании, что любая угроза в конечном итоге будет обнаружена.

Кибербезопасность — не только техническая проблема

Новости о нарушениях безопасности полны сообщений о том, как атакующие используют собственное радиооборудование для создания хаоса, например для сбивания яхт с курса или перепрограммирования прошивки USB-устройства с целью скрыть вредоносный код. Новостные сообщения часто звучат технически, когда пытаются объяснить первопричину использованной уязвимости. Однако безопасность многодисциплинарна: эффективная безопасность возникает из понимания уязвимостей, которые могут исходить из физической среды, технологий или человеческого фактора. Угрозы из физической среды могут включать пожары, стихийные бедствия, кражу вычислительных ресурсов или открытые кабели. Технические угрозы этот курс рассматривает подробнее, но важно помнить, что в кибербезопасности есть сильный человеческий компонент. Лучшие защитные меры в мире дают очень мало в следующих ситуациях:

  • Сотрудник банка случайно отправляет файл с банковскими данными не на тот адрес.
  • Сотрудник компании копирует набор конфиденциальных документов на флеш-накопитель, который затем крадут.
  • На выданном компанией переносном устройстве, например телефоне, ноутбуке или планшете, есть конфиденциальные данные, и устройство крадут или сотрудник, которому оно выдано, случайно оставляет его в общественном месте. Люди удивительно часто забывают ноутбуки в самолетах, кафе и других местах. Шифрование устройств и применение политики стойких к подбору паролей значительно помогают защититься от кражи данных в таких обстоятельствах, но людям сложно запоминать надежные пароли.
  • Сотрудники используют личные адреса электронной почты, которые могут быть защищены или не защищены, для корпоративной коммуникации.
  • Сотрудники получают сомнительные вложения и открывают их либо посещают опасный сайт и становятся целью скрытой загрузки вредоносного кода.
  • Сотрудники обсуждают рабочие вопросы в социальных сетях или публикуют фотографию рабочего места, которая затем попадает не к тем людям из-за неправильных настроек приватности.
  • ...все перечисленное выше делает намеренно сильно недовольный сотрудник.

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

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

Вы дошли до конца этого раздела! Перейти к следующему разделу:

Не забудьте проверить свои баллы в индикаторе в правом нижнем углу материала!