После установки майских обновлений безопасности (от 8 мая 2018 г. на платформы Windows 7/8/10 и серверные платформы на ОС Windows Server 2008 R2 / 2012 R2 / 2016) пользователи не получают доступ к удаленной машине посредством RDP и RemoteApp, и происходит следующая ошибка:
В начале весны 2018 года Microsoft выпустила обновление, предотвращающее удалённое выполнение кода с помощью уязвимости в протоколе CredSSP, и в мае было выложено обновление после установки которого по умолчанию клиентским машинам запрещено подключение к удаленным RDP-серверам с уязвимой версией протокола CredSSP. Соответственно если на клиентах весенние обновления установлены, а на серверах с ОС Windows Server — не установлены, то мы получим ошибку при подключении:
«Произошла ошибка при проверке подлинности. Указанная функция не поддерживается. Причиной ошибки может быть исправление CredSSP.»
Или английский вариант:
«This could be due to CredSSP encryption oracle remediation.»
Ошибка клиента RDP появляется после установки обновлений безопасности:
- Windows 7 / Windows Server 2008 R2 — обновление KB4103718
- Windows 8.1 / Windows Server 2012 R2 — обновление KB4103725
- Windows 10 1803 — обновление KB4103721
- Windows 10 1709 — обновление KB4103727
- Windows 10 1703 — обновление KB4103731
- Windows 10 1609 — обновление KB4103723
- Windows Server 2016 — обновление KB4103723
Для восстановления подключения можно просто удалить вышеуказанные обновления, но это действие откроет найденную уязвимость, поэтому план действий для решения проблемы будет такой:
- Мы временно, на компьютере с которого подключаемся по RDP, уберем уведомление безопасности, которое блокирует подключение;
- Подключимся к нему по уже восстановленному RDP-подключению, и установим необходимый патч безопасности;
- Включим обратно уведомление безопасности которое временно отключали в первом пункте плана действий.
Поехали!
- Открываем редактор локальных групповых политик: Пуск — Выполнить — gpedit.msc;
- Переходим в раздел Конфигурация компьютера — Административные шаблоны — Система — Передача учетных данных (Computer Configuration — Administrative Templates — System — Credentials Delegation — англ.);
- Находим политику с именем Исправление уязвимости шифрующего оракула (Encryption Oracle Remediation- англ.). Включите политику Включено (Enabled — англ.), в качестве параметра в выпадающем списке выберите Оставить уязвимость (Vulnerable — англ.);
- Осталось обновить политики на компьютере (для этого открываем Cmd и используем команду gpupdate/force) и попробовать подключится по RDP. При включенной политике клиентские приложения с поддержкой CredSSP смогут подключаться даже к непропатченным Remote Desktop серверам.
Если это домашний компьютер с урезанной версией Windows, и у вас нет доступа к консоли локальных групповых политик — не беда, воспользуемся редактором реестра (Regedit). Запускаем его, и проходим по пути:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters
и установить значение параметра AllowEncryptionOracle в значение 2 (0х00000002).
Затем, необходимо скачать и установить обновления безопасности, подходящие для вашей системы (публикую прямые ссылки на обновления для Windows Server для вашего удобства, которые очень рекомендую установить):
- Windows Server 2016 / Windows 10 1607 — KB4103723
- Windows Server 2012 R2 / Windows 8 — KB4103715
- Windows Server 2008 R2 / Windows 7 — KB4103712
После установки этих обновлений политику в GPO нужно вернуть на значение Force Updated Clients, так как только в этом случае ваша ОС будет защищена от уязвимости подключения к незащищенным хостам с CredSSP. Для ОС с ответствующей оснасткой локальной GPO — запускаем Regedit, и идем по пути:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters
и устанавливаем значение параметра AllowEncryptionOracle в значение 0.
На этом на сегодня всё. Проблема RDP-подключения решена, уязвимость закрыта.