Устаревший API-интерфейс, который многие iOS-приложения до сих пор используют для авторизации через Twitter, содержит уязвимость, позволяющую из положения «человек посередине» получить токен доступа OAuth и выполнять различные действия в соцсети от имени жертвы.

По словам экспертов германской компании Fraunhofer SIT, уязвимость CVE-2019-16263 привязана к библиотеке Twitter Kit, от которой разработчики Twitter отказались около года назад. Тем не менее анализ 2000 популярных в Германии iOS-программ показал, что проблемный код все еще присутствует в 45 приложениях, установленных у миллионов жителей этой страны. Если рассматривать проблему в глобальном масштабе, то список программных продуктов, использующих устаревший фреймворк Twitter Kit, по оценкам исследователей, может расшириться до десятков тысяч наименований.

Согласно Twitter, продукт Twitter Kit представляет собой комплект разработчика (SDK) с открытым исходным кодом, который позволяет мобильным приложениям отображать твиты, осуществлять авторизацию пользователей социальной сети и работать с API Twitter. Устаревшая библиотека была снята с поддержки в октябре 2018 года; на тот момент разработчикам приложений посоветовали перейти на другие SDK. Однако проблемный код, по словам Йенса Хайдера (Jens Heider) из Fraunhofer SIT, остался в репозитории GitHub, притом безо всяких указаний на возможность его использования в кибератаках.

«Библиотека Twitter на GitHub все еще содержит опасный код, — заявил эксперт журналистам Threatpost. — Нас это тревожит, так как использующие его приложения работают исправно, и разработчики не стремятся их обновлять, переводя на более безопасную библиотеку Twitter».

В своем комментарии Хайдер не поименовал затронутые приложения, только отметил, что список включает программы для чтения новостей, а также многие другие приложения и сервисы, допускающие авторизацию через Twitter. «Если автору атаки удастся заполучить токен (Twitter) OAuth, он сможет использовать его для публикации твитов в ленте целевого аккаунта, просмотра переписки в личке, копирования записей других пользователей на страницу жертвы», — поясняет эксперт.

Согласно блог-записи Fraunhofer SIT, проблема в TwitterKit выпусков 3.4.2 и ниже для iOS вызвана неадекватностью проверки подлинности TLS-сертификата api.twitter.com. «Они [разработчики] хотели повысить безопасность путем реализации закрепления публичного ключа доверенных центров выдачи корневых сертификатов (удостоверяющих центров, УЦ) — таких как VeriSign, DigiCert и GeoTrust, — пишут авторы исследования. — С этой целью они создали массив данных, записав в него хеши 21 публичного ключа различных УЦ».

При каждом новом соединении TwitterKit проверяет получаемую цепочку сертификатов на наличие одного из публичных ключей своего списка. Однако в реализации такого подхода для iOS разработчики допустили ошибку: они не предусмотрели проверку имени домена, указанного в сертификате конечного объекта (end-entity certificate, также leaf certificate). Из-за этого уязвимое приложение примет любую цепочку действительных сертификатов, если один из открытых ключей совпал с заданным списком.

«Владелец домена, обладающий действующим сертификатом, выданным одним из этих УЦ, сможет его использовать для проведения MitM-атак против приложений, взаимодействующих с api.twitter.com через Twitter Kit для iOS», — поясняют исследователи.

Эксперты сообщили в Twitter о своей находке в мае этого года. Разработчики, по словам Хайдера, признали наличие проблемы, однако выпускать патч для снятой с поддержки библиотеки не стали. Вместо этого они заменили код Twitter API обновленной версией.

Категории: Уязвимости