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

Мы надеемся, что канонизация уменьшит эти проблемы. Интуитивно понятно, что, чем проще форма имени, тем лучше. Если вы канонизируете до тех пор, пока выходные данные функции канонизации будут совпадать с входными данными, которые вы ей задали, у вас гораздо меньше шансов столкнуться с проблемами. Но, допустим, вы создаете каноническую форму для file://../../.././////etc/passwd, которая должна сократиться до file:/etc/passwd. Вы можете сделать это преобразование перед тем, как проверить, хотите ли вы разрешить доступ к этому файлу. Очень полезное действие. Но этого может быть недостаточно для безопасности. Допустим, вы упрощаете до file:///10.0.0.1:/etc/passwd. Это нормально для доступа? Твои канонические друзья не могут спасти тебя сейчас.

Атаки на механизмы аутентификации

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

Повторное воспроизведение

Существует множество атак, которые полагаются на то, что аутентификатор является статическим и, следовательно, многократно используемым. Если строка stink,TheSithDo аутентифицирует логин Йоды, то злоумышленник может воспроизвести эту строку, если система не продумана тщательно для предотвращения атак повторного воспроизведения. Так происходит в том случае, если Йода использует один и тот же пароль в нескольких системах. Это остается проблемой, даже если строка зашифрована. Удивительный факт: плохо, если все зашифровано с помощью хорошего криптографического алгоритма, но таким образом, что злоумышленник может воспроизвести зашифрованный пакет или сообщение. Например, если последовательность входа всегда одна и та же (логин, пароль), то, если у меня есть зашифрованный пароль для Йоды, я могу просто воспроизвести его. Защита здесь начинается с отправки случайных чисел (nonces), которые включаются в сообщения.

Отражение

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

Атаки, отражающие сообщения обратно к отправившей их стороне, раньше были удивительно эффективными, особенно если кодировки либо очень плотно упаковывались для работы через медленные соединения, когда протоколы сложны, либо когда декодеры были разработаны так, чтобы быть нетребовательными в том, что они принимают. Сегодняшние кодировки, как правило, используют метки данных. Например, плотно упакованная кодировка может быть 1,Leia,16,74, в то время как кодировка с метками будет {«id»:1, «name»: «Leia», «role»: «princess», «role»: «general»}.

Сбитые с толку люди

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

Один и тот же тип атаки работает против многих привычных форм расширенной аутентификации, таких как приложения для аутентификации или текстовые сообщения с кодом. Человек с радостью введет лишний код на фишинговом сайте. Злоумышленники также добиваются успеха, говоря: «Ой, я ввел неверный номер телефона; не могли бы вы прислать мне код, который только что получили от моего банка?» Для подобных подходов нужно, чтобы злоумышленник атаковал в реальном времени, а не сохранял учетные данные, чтобы использовать их позже.

Люди также радостно проинструктируют свои менеджеры паролей, что github.com и github.io эквивалентны. Но нет. Подумайте о том, почему нет и почему разница важна для безопасности. Большинство людей предполагает, что ими управляют разные организации, но это не так. Оба управляются GitHub. Домен io используется для пользовательского контента. Таким образом, ввод пароля сильно отличается [Burnett, 2017].

Атаки на сбитых с толку представителей

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

Угрозы типам аутентификации

Каждый тип фактора аутентификации («Что у вас есть», «Что вы знаете» и др.) может подвергаться угрозе способами, уникальными для данного фактора. Кроме того, многие системы аутентификации полагаются на датчики. Эти датчики могут быть атакованы отдельно от атак на различные факторы или механизмы. Датчики – это компьютеры или периферийные устройства, которые измеряют некоторые физические свойства, например сканер отпечатков пальцев или чип GPS. Датчики часто удалены от тех, кто им доверяет, и подвергаются таким атакам, как воздействие на реальный датчик или его подмена (утверждение, что датчиком является какой-то другой компьютер или устройство). Например, я могу подменить сканер отпечатков пальцев в своем ноутбуке или подключить собственное устройство через USB. То, как хранилище базы данных биометрической системы отображает фактор аутентификации в учетную запись, уязвимо для раскрытия информации, фальсификации и отказа в обслуживании. Эти атаки различаются в зависимости от типа датчика, и экономические аспекты развертывания датчиков часто означают, что устойчивые датчики или пакеты датчиков, которые труднее обмануть, заменяются более уязвимыми.

Атаки на фактор «Что вы знаете»

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

Фактор «Что вы знаете» атакуют двумя способами: угадыванием и воровством, но он может быть взломан и бóльшим количеством способов. Бывают невинные сбои таких систем, когда меняются предпочтения, подводит память, не совпадает написание и так далее. Также случаются сбои, когда нет паролей, паролей по умолчанию, хорошо известных паролей или предсказуемых паролей. Предсказуемые пароли включают в себя использование имени пользователя, даты рождения, адреса Ethernet, IMEI, номера паспорта или аналогичных элементов, которые являются «широко известными секретами».

Угадывание

Угадывание работает, потому что запоминать случайные сочетания сложно, поэтому людям нужны запоминающиеся пароли, и список подходов, которые они применяют, не такой длинный. В него включены: запоминающиеся слова или последовательности клавиш, а также приемы для удовлетворения требований к виду пароля – добавление 1 или! месяца, названия сайта и тому подобного.

Злоумышленники создают словари вероятных паролей: secret, letmein, qwertyui и password – все это вечно любимые пароли. Пароли также могут быть вероятными относительно конкретной жертвы. Эта вероятность будет, скорее всего, основана либо на утечке паролей, либо на основании личной информации о жертве. Личная информация, используемая в паролях, включает дни рождения, имена детей, спортивную команду, отсылки к «Звездным войнам» и многое другое.

Существуют основанные на знаниях системы аутентификации, которые ограничивают список возможных ответов очень небольшим набором, например «Какого цвета твои глаза?» или «Какая твоя любимая начинка для пиццы?». Хотя эти системы и могут замедлять злоумышленников (за счет того, что клиентам нужно звонить и, возможно, использовать еще одну плохую систему аутентификации), настойчивый атакующий, например сталкер, который ведет заметки, все равно может исчерпать пространство поиска. Если вы взламываете аккаунт Лэндо Калриссиана, то можете поспорить, что его любимая птица, скорее всего, сокол, а не орел или ястреб.

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

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

Воровство

Злоумышленники могут украсть ответы у любого, кто их знает. Для пароля это ваш собственный сайт или другие сайты, на которых пользователь использует тот же пароль. Для секретных вопросов это любой, у кого есть доступ к тем же данным. (В этом смысле использование SSN, номера социального страхования, в качестве аутентификатора – это гарантированная катастрофа.) В число людей, которые знают ответы, входит человек, данные которого нас интересуют и которого можно обмануть с помощью «игр» типа «Ваше имя в книжках о Гарри Поттере», спрашивающих об улице, на которой вы выросли. Злоумышленники также создают сайты, предлагающие что-то ценное с бесплатной регистрацией. Они зеркально отражают секретные вопросы более популярных сайтов и таким образом собирают ответы от тех, кто отвечает честно. Профессор Карлтонского университета Пол ван Орсхот (Paul van Oorschot) в своей замечательной книге Internet Security: Tools and Jewels («Безопасность в интернете: инструменты и cокровища») [Oorschot, 2019] называет этот вариант