В ходе видеоконференцсвязи пользователи Zoom могут не только общаться голосом, но и обмениваться сообщениями, документами или ссылками в чате. При отправке сообщения любой содержащийся в нем URL автоматически конвертируется в гиперссылку. Однако исследователь в области ИБ @_g0dmode обнаружил, что в гиперссылку конвертируются и UNC-пути.
Казалось бы, и что тут ужасного?
На самом деле, если пользователь кликнет по такой ссылке, Windows попытается установить соединение, используя протокол SMB. При этом Windows отсылает логин пользователя и NTLM хэш пароля. Далее можно восстановить пароль по хэшу, используя специализированные бесплатные утилиты типа hashcat.
BleepingComputer протестировали уязвимость и подтвердили возможность кражи хэшей паролей с ее помощью.
Кроме того, переход по вредоносному UNC-пути может привести к запуску стороннего ПО на локальной машине пользователя. Например, при клике на UNC-путь \\127.0.0.1\C$\windows\system32\calc.exe хост попытается запустить калькулятор. К счастью, в этом случае Windows, по крайней мере, запросит у пользователя разрешение на запуск исполняемого файла.
Что делать
Существует групповая политика, которая не позволяет автоматически передавать учетные данные NTML на удаленный сервер при переходе по UNC-пути. Она называется Network security: Restrict NTLM: Outgoing NTLM traffic to remote servers, галочку можно поставить здесь:
Computer Configuration > Windows Settings > Security Settings > Local Policies > Security Options > Network security: Restrict NTLM: Outgoing NTLM traffic to remote servers
В dropdown-меню выбираем Deny All
Надо иметь в виду, что для машин в домене эта политика создаст сложности с доступом к общим ресурсам по протоколу SMB. Если это проблема, то здесь написано, как добавлять исключения (статья на английском).
Если вы домашний пользователь Windows 10 и хотите обезопасить, например, свой личный компьютер, вам надо будет настроить эту политику с помощью реестра. Для этого надо открыть Редактор реестра под админской учетной записью, создать запись RestrictSendingNTLMTraffic в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0 и установить ее значение на 2.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0]
«RestrictSendingNTLMTraffic»=dword:00000002
В итоге запись RestrictSendingNTLMTraffic будет выглядеть вот так:
Компьютер после этого перезагружать не обязательно.
Чтобы откатить все назад, достаточно просто удалить запись RestrictSendingNTLMTraffic.
amarao
А почему это уязвимость zoom'а? Чистой воды WTF у Винды — почему она отсылает хэш пароля, а не использует протокол с верификацией пароля без его disclose?
artemlight
Потому что зарестриктить NTLM не так уж и просто.
Рабочие группы начнут немного умирать, да и в домене нтлм часто используется для SSO и всяких принтеров там.
Предлагаемая политика, кстати, входит в best practices, и оно даже в евентлогах пишет, что так и так — у вас тут ходит дырявый протокол аутентификации. Но кто ж их читает-то.
DaemonGloom
Вообще, большая часть SSO и прочих аутентификаций прекрасно живёт по kerberos. NTLM остался только для древнего софта/железа, который уже не поддерживается.
artemlight
Тут далеко не все офисные железяки научились SMB2, а Вы про NTLM.