Исследовательская лаборатория Varonis обнаружила способ обхода многофакторной аутентификации в учетных записях Box, использующих SMS-коды для подтверждения входа.
Используя этот способ, хакер может применять украденные данные для взлома корпоративного аккаунта Box и эксфильтрации конфиденциальной информации без доступа к телефону жертвы атаки.
Мы сообщали об этой проблеме Box в ноябре 2021 г. через HackerOne; позже специалисты Box выпустили исправление. Это уже второй способ обхода MFA в Box, обнаруженный нами за последнее время. Ознакомьтесь с нашим способом обхода MFA с помощью аутентификатора.
С ростом потребности во внедрении и использовании многофакторной аутентификации многие SaaS-провайдеры начали предлагать несколько вариантов MFA, чтобы обеспечить пользователей дополнительной защитой от атак на учетные записи и пароли. Varonis Threat Labs анализирует разные виды MFA для оценки их безопасности.
По данным Box, 97 000 компаний, включая 68% предприятий из списка Fortune 500 используют решения Box для доступа к информации из любой точки мира и удобной совместной работы.
Подобно многим приложениям, Box дает возможность пользователям без системы единого входа (SSO) использовать приложение-аутентификатор, такое как Okta Verify или Google Authenticator, или SMS с одноразовым паролем для организации второго этапа аутентификации.
Как работает SMS-верификация в Box
После ввода имени пользователя и пароля в форме входа в Box устанавливается cookie-файл сеанса, и пользователю предлагается один из двух вариантов аутентификации:
Ввод временного одноразового пароля (TOTP), если пользователь подтвердил вход с помощью приложения-аутентификатора, или
Ввод SMS-кода, если пользователь выбрал получение пароля в SMS.
Если пользователь выбирает подтверждение входа через SMS, на его телефон отправляется код. Он должен ввести этот код для получения доступа к своей учетной записи Box.com.
В чём проблема?
Если пользователь не перейдет к странице подтверждения входа через SMS, он не получит сообщение с кодом, но cookie-файл сеанса всё равно будет создан. Злоумышленнику достаточно будет ввести адрес электронной почты и пароль пользователя (например, украденные в результате утечки паролей или фишинговой атаки), чтобы получить действительный файл cookie сеанса. Код из SMS не потребуется.
Объединение разных вариантов MFA
После создания cookie-файла хакер может отказаться от многофакторной аутентификации через SMS (которую выбрал пользователь) и вместо этого запустить MFA на основе TOTP, тем самым объединив два разных режима MFA.
Злоумышленник завершает процесс аутентификации, отправляя фактор аутентификации и код из своей учетной записи Box и приложения-аутентификатора в конечную точку верификации TOTP, используя cookie-файл сеанса, который он получил с помощью учетных данных жертвы.
Приложение Box не проверяло, выбирал ли пострадавший пользователь аутентификацию через TOTP и принадлежало ли используемое приложение-аутентификатор пользователю, который входил в систему. Из-за этого хакеру удалось войти в учетную запись Box жертвы без использования телефона или уведомления в SMS.
Посмотрите, как выглядит атака:
Этапы атаки
Злоумышленник выбирает вход с помощью многофакторной аутентификации через приложение-аутентификатор и сохраняет фактор аутентификации.
Злоумышленник вводит адрес электронной почты и пароль пользователя на странице account.box.com/login.
Если пароль правильный, браузер злоумышленника получает новый cookie-файл аутентификации и перенаправляет его на /2fa/verification.
Однако хакер не переходит по ссылке для входа с помощью SMS, а передает свой собственный фактор аутентификации и код из приложения-аутентификатора в конечную точку проверки TOTP: /mfa/verification.
-
Таким образом, злоумышленник входит в учетную запись жертвы, и пострадавший пользователь не получает SMS.
ВЫВОДЫ
Несмотря на всю шумиху вокруг обязательной многофакторной аутентификации в таких компаниях, как Salesforce и Microsoft, а также правительственного распоряжения Белого дома, мы хотим развеять слухи и заявить, что многофакторная аутентификация равнозначна разработчику, пишущему коды.
Многофакторная аутентификация создает ложное чувство безопасности. Включенная MFA не обязательно означает, что злоумышленник должен получить физический доступ к устройству жертвы для взлома ее учетной записи.
Наши специалисты выявили не одну, а две уязвимости в приложении, которые позволили нам войти в чужую учетную запись Box с MFA, используя только имя пользователя и пароль.
Это подчеркивает необходимость реализации подхода, ориентированного на данные. Директорам по информационной безопасности необходимо задать себе следующие вопросы:
Узнаю ли я, была ли многофакторная аутентификация отключена или ее обошли во всех моих приложениях SaaS?
К какому объему данных может получить доступ злоумышленник, если он взломает обычную пользовательскую учетную запись?
Не доступны ли какие-либо данные слишком широкому кругу пользователей (и не находятся ли они в общем доступе) без необходимости?
В случае необычной попытки доступа к данным получу ли я оповещение?
Мы рекомендуем начать с защиты данных в местах их хранения. Ограничивая доступ к информации и контролируя ее, вы значительно снижаете вероятность эксфильтрации данных путем обхода многофакторной аутентификации.
GAS_85
Я правильно понял, что можно ввести любые 6 цифр?
Или нужно иметь "свой" аккаунт с 2х факторной авторизацией? Как они тогда вообще сопастовляют что это валидный код, если не могут определить юзера?
fedorro
Да, нужен второй аккаунт. Видимо код сопоставляют с подставным аккаунтом, но после успешной проверки кода из куки достается ид сесссии, и уже из сессии Ид юзера угоняемого аккаунта.
GAS_85
Тогда я вообще запутался, user1 (злоумышленник) крадёт логин/почту user2.
user1 не вводит свои данные, а только данные user2.
Теперь, как user2 я обхожу авторизацию и ввожу "свой" код от user1... Как тут они вообще поняли что этот код от user1?
Или они принимали рандомные 6 цифр и вообще не проверяли никак, или (ещё лучше) у всех юзеров один хэш для генерации кодов и, соотвественно коды user1 и user2 просто совпадут...
fedorro
Хацкер логинится с под учеткой user2, получает куку с сессией, но получение СМС-кода не жмет.
Хацкер логинится под user1, заменяет куку сессии на куку user2 из шага 1, выбирает вторым фактором TOTP. TOTP работает нормально - проверяет что введенный код от аккаунта user1, но после успешной проверки вычитывается сессия из подмененнной куки, где написано что это user2 и логинит в соотв. учетку.