Существует неплохое решение для организации двухфакторной аутентификации в корпоративной среде под названием MULTIFACTOR.
MULTIFACTOR — система многофакторной аутентификации для сайтов, Linux серверов, Windows серверов, систем виртуализации и облаков, Exchange, VPN, VDI и множества корпоративных приложений. Легко встраивается в любой процесс и проверяет подлинность ваших пользователей, используя наиболее современные и безопасные способы аутентификации.
MULTIFACTOR входит в реестр российского ПО за номером 7046.
Это не реклама, поскольку сегодня буквально в двух словах мы расскажем про то как этот второй фактор можно обойти в некоторых очень частных случаях. Бу-га-га.
— Это не баг, а фича!
Примерно так нам ответили представители MULTIFACTOR, когда мы им сообщили об этой проблеме. С тех пор прошло больше двух месяцев, так что уже можно поделиться, тем более что непосредственной опасности раскрытие информации не несёт, более того, позволяет системным администраторам немного облегчить свой труд без потери уровня безопасности своей инфраструктуры.
Если у вас есть домен, то поставив RADIUS сервер, работающий с MULTIFACTOR, вы можете прикрутить второй фактор к любому сервису, поддерживающему LDAP-аутентификацию. Это позволяет прикрутить 2FA даже для тех сервисов, которые изначально двухфакторную аутентификацию не поддерживают. С одной стороны это очень удобно, с другой — до RADIUS сервера со стороны локальной сети в некоторых случаях 2FA можно обойти.
Простая демонстрация обхода 2FA:
- Логинимся на первый сервер, второй фактор не подтверждаем.
- Логинимся на второй сервер, подтверждаем второй фактор.
- После подтверждения второго фактора нас чудесным образом пускает на оба сервера.
- Второй запрос 2FA нам не приходит.
- Задумчиво чешем в затылке.
В будущих версиях MULTIFACTOR обещали добавить настройку, которая будет отключать такое поведение.
Для эксплуатации фичи нужно соблюдение некоторых условий:
- Диапазон времени ограничен, 30 секунд примерно.
- Локальный IP адрес, откуда происходит коннект к серверам, должен совпадать.
- Требуется знание логина пароля.
Если обобщить, то получается, что эксплуатация данной уязвимости возможна на терминальном сервере, или на одном и том же компе, к примеру, если появится троян, который будет отслеживать логины сисадмина и использовать этот баг в момент аутентификации. Админ подтверждает свой вход, параллельно кто-то входит ещё, причём на другой сервер.
Ну, а пока можно написать скрипт, который позволит логиниться админу сразу на 100500 серверов, подтверждая второй фактор один раз одновременно на всё.
Update
Ребята из MULTIFACTOR оперативно среагировали на пост! Нас читают, респект.
Выпустили релиз, в котором доработали возможность задать интервал в 0 секунд.
Для Linux
https://github.com/MultifactorLab/multifactor-radius-adapter/releases/tag/1.0.105Для Windows
https://github.com/MultifactorLab/MultiFactor.Radius.Adapter/releases/tag/1.0.164