Security for all - #15 - 12 июля 2018

Золотой ключик - FIDO U2F

Сегодня

Взломан Github аккаунт команды Gentoo Linux; Twitter внедряет двухфакторную аутентификацию по USB ключу; почту Gmail могут читать сторонние разработчики.

Основная тема - двухфакторная аутентификация с использованием физических устройств.

Вспомогательные темы

Gentoo - один из дистрибутивов семейства операционных систем с открытым исходным, объединенных под общим названием Linux.

FIDO - Fast Identity Online - консорциум компаний, в рамках которого разрабатываются различные механизмы аутентификации.

U2F - Universal 2nd Factor - дословно универсальная двухфакторная аутентификация. Открытый протокол двухфакторной аутентификации, позволяющий использовать U2F устройство как второй фактор.

Новости

Взломан Github аккаунт команды Gentoo Linux

Пару недель назад появилась информация о том, что github аккаунт команды linux дистрибутива Gentoo был взломан. Злоумышленники подменили контент и взяли контроль за аккаунтом.

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

Разработчикам Gentoo немного повезло в том, что после захвата аккаунта команды из него стали удалять индивидуальные аккаунты разработчиков. Каждое удаление инициировало уведомление по электронной почте, из-за чего разработчики оперативно связались с администрацией Github и вернули контроль над аккаунтом.

https://thehackernews.com/2018/07/github-hacking-gentoo-linux.html

Двухэтапная аутентификация в Twitter по USB ключу

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

Именно второй способ появился недавно в Twitter. Для этого предлагается использовать устройства поддерживающие стандарт U2F. Как это будет выглядеть для пользователя?

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

При настройке данной возможности Twitter требует подтверждения телефона и электронной почты. Это отчасти связано с борьбой со спамом.

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

https://threatpost.ru/twitter-starts-using-two-factor-authentication-through-usb-key/26892/

Вашу почту Gmail могут читать другие люди

Компания Google подтвердила, что электронную почту некоторых пользователей читали сотрудники сторонних компаний. И делали они это с “разрешения” пользователя. Дело в том, что некоторые приложения запрашивали разрешение на доступ к электронной почте. Если пользователь соглашался с этим и устанавливал приложение, то тем самым он давал зеленый свет на чтение своего ящика.

Содержимое писем использовалось компаниями для улучшения сервиса и предложений пользователям. Но это не делает ситуацию более приятной. Для того, чтобы проверить, какие приложения имеют доступ к вашему аккаунту и какие у них есть разрешения, переходите в “Аккаунт Google”, далее “Безопасность и вход” и уже там выбирайте пункт “Приложения, у которых есть доступ к аккаунту”. Удалите ненужные приложения, а при установке новых проверяйте запрашиваемые ими привилегии.

https://www.bbc.com/russian/news-44706792

FIDO U2F

Но вернемся к основной теме - аутентификации пользователей посредством специальных устройств, которые еще называют токенами.

Альянс FIDO разрабатывает стандарты аутентификации. Один из таких стандартов - Universal 2nd Factor или U2F. Главная задача - обеспечить приватность и безопасность пользователя, при этом сделать это максимально просто.

Основной сценарий

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

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

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

Фишинг

Одной из угроз для паролей является фишинг. Злоумышленники создают поддельный сайт, заманивают туда пользователя. Будучи уверенным, что находится на правильном сайте, пользователь вводит логин и пароль, которые и попадают к злоумышленнику. Если для оригинального сайта настроена двухфакторная аутентификация, то для захвата аккаунта логина и пароля злоумышленнику не хватит.

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

Тест присутствия

При разработке стандартов нужно учитывать много нюансов. Для того, чтобы защититься от сайтов, которые попытаются использовать токен незаметно для пользователя, когда тот, например, отошел от компьютера, все сертифицированные U2F токены должны проверять присутствие пользователя. Пользователь должен нажать на кнопку или какой-либо другой сенсор для “активации” устройства.

Клонирование

В спецификации также имеется механизм, который позволяет определить, был ли склонирован U2F токен. Для этого используется обычный счетчик. Каждое устройство хранит в себе количество произведенных операций аутентификации. Это число передается на сервер и тот его запоминает. Если в какой-то момент значение счетчика уменьшится, сервер будет знать, что устройство было склонировано. Естественно, если оригинальное устройство после клонирования не будет использоваться, то отличить клон от оригинала сервер не сможет.

MITM

В большинстве случаев U2F защищает и от атаки человек посередине. Man-In-The-Middle, если по-английски. Атакующий пытается на своей стороне обрабатывать соединение таким образом, чтобы он сам видел содержимое передаваемых данных, а клиент и с сервер при этом считали, что общаются друг с другом напрямую.

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

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

Подлинность устройств

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

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

Минусы

Но как обычно в бочке меда есть и ложка дегтя. А то и не одна… Если бы все было так просто и гладко, то мы все уже давно бы использовали такие токены.

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

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

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

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

Всем безопасности. До следующей недели.

Ссылки

https://fidoalliance.org/specs/fido-u2f-v1.1-id-20160915/fido-u2f-overview-v1.1-id-20160915.pdf

https://wiki.mozilla.org/Security/CryptoEngineering

https://webauthn.bin.coffee/

https://u2f.bin.coffee/

https://demo.yubico.com/u2f

https://github.com/github/SoftU2F/releases