Forcepoint VPN исправляет уязвимость повышения привилегий

Исследователи из SafeBreach Labs недавно опубликовали сообщение, в котором подробно описывается уязвимость, затрагивающая VPN-клиент Forcepoint (а именно, все версии до 6.6.1) для Windows. Уязвимость, зарегистрированная как CVE-2019-6145, позволяет повысить привилегии, а также сохранять устойчивость и уклоняться от защиты. Уязвимость требует, чтобы злоумышленник обладал административным доступом к определенным аспектам, но это не так невозможно, как может показаться.
Механика эксплуатации уязвимости CVE-2019-6145 была раскрыта в ходе серии глубоких анализов работы Forcepoint. При поиске уязвимостей SafeBreach Labs создала эксплойт, взяв неподписанный исполняемый файл, который запускается подписанной службой, работающей как NT AUTHORITYSYSTEM. Исследователи заметили, что исходный исполняемый файл sgvpn.exe при запуске Forcepoint VPN не сразу обнаруживался службой. Вместо этого программа искала многочисленные отсутствующие EXE-файлы, прежде чем нашла sgvpn.exe и запустила его.
Сообщение от SafeBreach Labs подробно описывает причины этого:
Первый аргумент вызова функции CreateProcessW равен NULL.
Буфер командной строки не содержит строки в кавычках, которая отделяет путь к исполняемому файлу от аргумента.
(Быстрое напоминание: «%s%s %s»), что в нашем случае превращается в:
«C:Program Files (x86)ForcepointVPN Clientsgpm.exe -A»
Согласно документации функции CreateProcessW в MSDN мы увидим следующее:
Основная причина этой уязвимости пути поиска без кавычек связана с тем, что командная строка не содержит строки в кавычках между путем к исполняемому файлу и аргументом, поэтому функция CreateProcessW пытается разделить ее сама по себе каждый раз, когда анализирует символ пробела:
«C:Program.exe»
«C:Program Files (x86)ForcepointVPN.exe»
«C:Program Files (x86)ForcepointVPN Clientsgpm.exe -A»
Отчет об уязвимости CVE-2019-6145 был опубликован SafeBreach Labs 5 сентября, и в тот же день уязвимость была подтверждена разработчиками Forcepoint VPN. По прошествии некоторого времени официальный патч был выпущен для клиента 19 сентября как патч 6.6.1.