Приложения сторонней разработки, допускающие единый вход через Facebook и Google и поддерживающие открытый протокол авторизации OAuth 2.0, открыты для угона учетной записи.

На конференции Black Hat EU, прошедшей в начале ноября, три исследователя из Гонконгского университета представили доклад “Signing into One Billion Mobile App Accounts Effortlessly with OAuth 2.0” (“Вход в аккаунты 1 млрд мобильных приложений с помощью OAuth 2.0 не требует усилий”), в котором описана атака на слабые реализации этого протокола.

В ходе университетского исследования было изучено 600 топовых американских и китайских Android-приложений, использующих API OAuth 2.0 от Facebook, Google и Sina (оператора китайского сервиса микроблогов Weibo) и поддерживающих систему единого входа для сторонних программ. Как оказалось, 41,2% протестированных приложений уязвимы к новой атаке, в том числе популярные программы для знакомств, путешествий, шопинга, бронирования в отелях, осуществления финансовых транзакций, IM-связи,  скачивания музыки и просмотра новостей. Названий этих программ исследователи не приводят, однако не преминули отметить, что некоторые из приложений были загружены сотни миллионов раз, а эксплойт позволит злоумышленнику выполнять самые разные действия, от совершения телефонных звонков до мошеннических покупок.

Согласно отчету, проанализированные приложения совокупно были скачаны более 2,4 млрд раз, это означает, что более 1 млрд уязвимы. “После входа в аккаунт уязвимого мобильного приложения с помощью нашего эксплойта атакующий во многих случаях получает полный доступ к конфиденциальной и приватной информации жертвы (логам чатов, фотографиям, спискам контактов), которая размещена на бэкенд-сервере (серверах) уязвимого мобильного приложения, — пишут Жун Хай Ян (Ronghai Yang), Вин Чон Лау (Wing Cheong Lau) и Тянь Юй Лю (Tianyu Liu). — В случае с некоторыми мобильными приложениями атакующий сможет также распоряжаться кредитом в виртуальной валюте или на онлайн-сервисе, ассоциированном с аккаунтом жертвы”.

Как показало исследование, OAuth 2.0 не определяет ни требования по безопасности, ни защиту взаимодействия бэкенда и сторонних приложений. Это породило ряд кастомизированных расширений API для обеспечения единого входа. “К сожалению, безопасность таких самопальных адаптаций/API и рабочие требования обычно воспринимаются как нечто само собой разумеющееся; в документации они зачастую отражены неявным образом либо вовсе непонятны сторонним разработчикам мобильных приложений, — сетуют исследователи. — Более того, общие для сторонних разработчиков правила использования API системы единого входа до сих пор не сформулированы”.

Атака, разработанная в стенах университета Гонконга, не требует взаимодействия с пользователем или его устройством. Инициатору атаки нужно лишь создать для своего устройства прокси в использующем SSL домене, который он контролирует. Этот прокси, позволяющий мониторить и изменять входящий и исходящий трафик на устройстве атакующего, должен занимать промежуточное положение между сервером сторонней программы и сервером провайдера услуг аутентификации (IdP). Установив уязвимое приложение, атакующий осуществляет вход по OAuth 2.0 под своей учетной записью и в ходе OAuth-обмена заменяет свой ID идентификатором жертвы (раздобытым в открытых источниках).

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

Facebook несколько уменьшила вероятность таких атак благодаря поддержке закрепления сертификатов, введенной в мае 2014 года, и не принимает измененные сообщения. Однако эта мера защиты не всем доступна: нынешнее исследование показало, что для обеспечения обратной совместимости Facebook идентифицирует тех ранних пользователей мобильного приложения, которым был присвоен ID общего доступа. Таким образом, если пользователь Facebook зарегистрировался в приложении через OAuth до мая 2014 года, он открыт для MitM-атак с подменой ID.

Во избежание неприятностей исследователи рекомендуют провайдерам услуг аутентификации, таким как Facebook, Google и Sina, прояснить директивы по обеспечению безопасности для разработчиков, уточнив, что доверять следует лишь серверу ID-провайдера, а отнюдь не данным, подписанным клиентским приложением. Таким провайдерам следует также создавать личные идентификаторы и воздержаться от глобальных ID; тестирование приложений должно обязательно охватывать систему единого входа по принятым протоколам, таким как OAuth 2.0 и OpenID Connect.

Категории: Главное, Уязвимости