Защита систем. Чему «Звездные войны» учат инженера ПО — страница 8 из 68

Будем считать, что это только что загруженный ноутбук, подключенный к физической локальной сети Ethernet. Каждый уровень подвержен угрозам. Например, возможно, DHCP-сервер выдал нам плохой DNS-сервер, или, возможно, он был неправильно настроен вручную. Причины обозначаются заглавной буквой, их следствия – строчной. Таким образом, D означает угрозы, которые неправильно направляют IP-пакеты, а d – пакеты, отправляемые не туда. Смотрите таблицу 1.1.


Таблица 1.1. Действия и угрозы


Вы могли бы думать о TCP-кадре, содержащем строку GET http://dst.threatsbook.com/index.html HTTP/2.0. Но этот кадр не перемещается сам по себе. Он инкапсулирован в IP, который может проходить через Wi-Fi для первого перехода, кабельный модем для следующего и через что угодно в качестве магистрали. Обычно мы игнорируем инкапсуляцию и декапсуляцию, но это может иметь значение, потому что угрозы возможны на каждом уровне стека и в каждой системе, которая добавляет, удаляет или изменяет уровень. На рисунке 1.4 показано сообщение, идущее от SRC к DST, с маршрутизатором посередине, и это часто полезная модель. Но эта модель позволяет легко забыть, что при каждом переходе пакет транслируется. Возможно, первый переход – это Wi-Fi, и точка доступа принимает пакет и добавляет заголовок Ethernet для отправки его на кабельный модем. Кабельный модем отбрасывает кадр Ethernet и добавляет заголовок docsis, и так далее. Как показано на рисунке 1.5, дейтаграмма IP остается неизменной для каждого прыжка, но изменяется локальная инкапсуляция. Каждая из этих систем – это машина в роли обезьянки посередине, и мы либо надеемся, что она добросовестно выполняет свою работу, либо добавляем средства защиты, чтобы гарантировать, что так и будет.


Рис. 1.5. Инкапсуляция пакетов, переходы


Таким образом, для любой из угроз D из таблицы 1.1 маршрутизатор может посылать пакеты (IP, TCP, HTTP) на фактическую spoofed.example.com и изменять ответы, или он может отправлять пакеты на альтернативную машину, настроенную так, чтобы притворяться, что она и есть spoofed.example.com. Другая инфраструктура маршрута обладает такой же способностью, и некоторые из ее элементов, такие как балансировщики нагрузки, размещаются там именно для выполнения этой технической фальсификации, часто с благими намерениями.

Распространение этого набора атак на вариант HTTPS с использованием украденного или выданного не тому запрашивающему сертификата или самозаверенного сертификата, принятого проверяющим, оставим в качестве упражнения для читателя.

Спуфинг в конкретных сценариях

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

Интернет вещей

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

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

Мир часто бывает удивительно сложным. Например, мы разместили этот телевизор в отеле, где продается контент для взрослых, и ему внезапно понадобился способ контролировать доступ к этому контенту для одних пользователей, но не для других, а отелю нужен способ сбрасывать PIN-код при выезде гостя.

Точно так же на некоторых телефонах теперь есть рабочие учетные записи и детские учетные записи. Модные автомобили поставляются с ключами парковщика.

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

Безопасная аутентификация на новом устройстве может быть сложной задачей. Для многих устройств пароль был легко найден с помощью Google, потому что он является общим для всех устройств, сделанных производителем, или, что еще хуже, это что-то вроде admin и работает у разных производителей. Это электронный эквивалент двери без замка с табличкой «Только уполномоченный персонал». У злоумышленников в голове есть списки распространенных паролей и инструменты для подбора тысяч паролей по умолчанию, которые собираются и публикуются. Для других устройств паролем является что-то вроде Ethernet-адреса устройства, доступного любому пользователю локальной сети. Во многих юрисдикциях это уже недопустимо, и для каждого устройства требуется уникальный пароль. Вам нужно будет решить, будет ли он виден гостям, официантам и другим лицам, у которых может быть доступ к устройству.

Голосовой доступ означает, что физическое местоположение менее ограничено, чем вы думаете. Открытые окна похожи на открытые двери, или вы можете попросить Siri открыть их для вас. (Мы рассмотрим клонирование голоса в разделе «Атаки на фактор „Кто вы такой“» далее в этой главе.) Устройства могут быть размещены не в домах и частных офисах, а в магазинах, где персонал или клиенты могут быть мотивированы атаковать их, или в Airbnb, где у злоумышленника есть значительное время на атаку если он того пожелает.

Сегодня многие устройства с голосовым управлением не имеют учетных записей или аутентификации. Когда они их получат, вполне вероятно, что они будут настроены благодушно, чтобы уменьшить разочарование. Это не должно быть похоже на фильм «Тихушники» (Sneakers), где потребовалось много усилий, чтобы записать на пленку (!) голос Стивена Тоболовски, который говорит: «Мой голос – это мой паспорт. Подтвердите». Скорее всего, ваш голос будет представлять собой имя пользователя и пароль, объединенные в одно целое, и, скорее всего, его можно будет подделать.

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

Эти ограниченные пользовательские интерфейсы также затрудняют отображение индикаторов безопасности или данных, которые могут быть использованы при принятии решений о безопасности, включая URL-адреса. Существует веский аргумент в пользу того, что просить людей анализировать URL-адреса – это пустая трата времени и усилий [Herley, 2010], и этот аргумент подкрепляется ограничениями как IoT, так и мобильных телефонов.

Мобильные телефоны

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

Пара распространенных заблуждений заключается в том, что телефоны сопоставляются один к одному с людьми и что телефонные номера являются хорошими аутентификаторами. Многие люди верят в глубоко демократический принцип «один человек – один телефон», но это не так. Некоторые люди имеют более одного телефона или более одной SIM-карты, особенно за пределами США.

Некоторые телефоны используются более чем одним человеком: подумайте о родителях, одалживающих телефон ребенку, или о партнерах, которые отвечают на звонки друг друга. Пары (особенно пожилые) могут пользоваться общим телефоном, в то время как молодые могут иметь полный доступ к телефонам друг друга. Есть также люди, у которых нет телефонов из-за их жизненных обстоятельств. Бедные люди (особенно в менее развитых странах) могут быть не в состоянии позволить себе современный мобильный телефон с большой пропускной способностью. Пожилые люди могут отказаться от телефонов из-за проблем со слухом; у детей может еще не быть телефонов.

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

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