Для защиты пользователей Facebook пришлось принудительно сделать сброс авторизации для 50 миллионов взломанных аккаунтов и дополнительно для 40 миллионов потенциально затронутых атакой учетных записей. Данная мера была необходима, потому что хакеры смогли перехватить так называемые маркеры доступа (Access tokens). Маркер доступа представляет собой цифровой ключ, который создается при входе пользователя в учетную запись и позволяет сохранять состояние успешной авторизации, когда мобильное приложение Facebook пытается открыть другой раздел социальной сети в браузере (например, при нажатии на ссылку).
Масштабная атака на Facebook: 50 миллионов взломанных аккаунтов. Как защитить свою учетную запись
Идентификационный токен не содержит пароль пользователя, но так как он сохраняет состояние авторизации, то получив токен, вы можете полностью контролировать аккаунт.
Вице-президент продуктового направления Facebook, Гай Розен (Guy Rosen) сообщил технические подробности:
Отдельные разделы сайта используют технологию единого входа (single sign-on), которая позволяет создавать новые токены доступа. Работает это следующим образом. Например, вы выполнили вход в мобильном приложении Facebook и решили открыть другой раздел Facebook в браузере. В этом случае вам не придется снова вводить учетные данные, потому что механизм единого входа позволит создать токен доступа для передачи состояния аутентификации браузеру.
Хакеры смогли воспользоваться преимуществами трех различных уязвимостей, которые использовались совместно для перехвата токенов.
Известно, что целевые уязвимости существовали в Facebook как минимум с июля 2017 года и были связаны с функцией “Посмотреть как...”, которая дает представление о том, как выглядит ваш профиль для других пользователей. Эта функция предназначена для улучшения конфиденциальности и позволяет убедиться, что определенный контент или данные вашего профиля скрыты от нежелательных контактов.
Например, вы хотите скрыть некоторые публикации на стене от вашего заклятого врага Евгения. Вы можете изменить ваши настройки приватности, чтобы Евгений мог видеть только определенные посты на странице. Чтобы проверить, что настройки сработали должным образом, вы можете запустить функцию “Посмотреть как...”, чтобы посмотреть ваш профиль от имени Евгения. Конечно, вы не получите доступ к аккаунту Евгения — это просто симуляция. Однако, успешная эксплуатации уязвимостей данной функции могла привести к ситуации, когда хакеры заполучили маркер доступа Евгения, успешно вошли в него и получили полный контроль над учетной запись Евгения.
Розен подчеркивает, что атакующие не могли использовать аккаунт как реальный владелец.
Первая ошибка в коде приводила к ситуации, когда на определенных типах постов, предлагающих поздравить пользователей с днем рождения, показывался загрузчик видео. Вторая ошибка приводила к тому, что загрузчик видео создавал токен доступа с разрешением на вход в мобильное приложение Facebook, хотя это не является нормальным его поведением.
Наконец, третья ошибка проявлялась, когда загрузчик видео показывался при использовании функции “Посмотреть как...”. Он снова генерировал токен доступа, но не для текущего пользователя, а для эмулируемой персоны. Если вернуться к примеру выше, то функция позволяла не только посмотреть ваш профиль “глазами” Евгения, но и сгененировать токен доступа для полного контроля над его аккаунтом.
Розен отметил:
Именно комбинация данных трех ошибок стала конечной уязвимостью, которая была обнаружена злоумышленниками. Чтобы запустить атаку, хакерам нужно было не только найти уязвимость, но также получить токен доступа, а затем переключаться на другие аккаунты для получения токенов.
Розен убежден, что данная атака является технически сложной, особенно учитывая ее масштабы - 50 миллионов взломанных аккаунтов. Именно совокупность нескольких ошибок привела к столь катастрофическим последствиям.
Розе добавил:
Данная атака использовалась в очень больших масштабах. Именно это ее свойство позволило быстро обнаружить факт атаки. Нам пока неизвестны случаи неправомерного использования взломанных аккаунтов.
Райан Шторз (Ryan Stortz), исследователь безопасности из Trail of Bits, считает, что у Facebook были все ресурсы опередить хакеров и своевременно обнаружить ошибки:
Facebook имеет целый API-фильтр, который фиксирует и передает все изменения учетной записи, поэтому компания должна была обнаружить уязвимость.
Однако, бывший инженер безопасности Facebook, Зак Моррис (Zac Morris) считает, что подобные ошибки не так просто найти:
Функция “Посмотреть как...” существует довольно давно, и неудивительно, что она содержит некоторые ошибки. Однако, волнообразный перехват токенов доступа действительно впечатляет.
В Facebook действует программа поощрения поиска уязвимостей («Программа Баунти»), и у злоумышленников был верный способ получить 30 тысяч долларов, но они пошли по другому пути — это немного пугает.
Розен заверил, что хакерам не удалось украсть пароли. Если при повторном входе на Facebook состояние авторизации сохранилось, значит ваш аккаунт не был взломан и вам не нужно менять пароли. Компания Facebook временно отключила функцию “Посмотреть как” на время расследования инцидента.
По материалам Motherboard. Иллюстрация James Bareham / The Verge
Угрозы безопасности
• Антивирусы становятся бесполезными? ИИ может генерировать 10 000 вариантов вредоносного ПО, избегая обнаружения в 88% случаев
• Apache устраняет обход уязвимости удаленного выполнения кода в веб-сервере Tomcat
• Основные киберугрозы 2024 года в России: утечки данных, вымогатели и фишинг
• Обнаружен скрытый руткит Pumakit для Linux. Он может использоваться в таргетированных атаках
• Уязвимость OpenWrt Sysupgrade позволяет распространять вредоносные образы прошивки. Обновите свои устройства
• Хакеры используют драйвер Avast Anti-Rootkit для отключения антивирусов