В винде (всех версий, начиная от XP) нашлась локально эксплуатируемая уязвимость, которая позволяет любому процессу повысить свои привилегии в системе до максимальных ("NT AUTHORITY\SYSTEM"):
https://googleprojectzero.blogspot.com/2019/08/down-rabbit-hole.html
https://bugs.chromium.org/p/project-zero/issues/detail?id=1859
https://news.ycombinator.com/item?id=20685951
https://github.com/taviso/ctftool
Уязвимость связана с IME/CTF (переключение раскладки клавиатуры) и её не так-то просто исправить, потому что это не ошибка кодирования, а ошибка проектирования протокола CTF (который связывает специальный серверный процесс ctfmon.exe с каждым GUI-приложением, куда можно что-нибудь ввести, и следовательно, где можно переключить раскладку клавиатуры). В протоколе CTF предусмотрена передача сообщений, которые содержат такие поля как ProcessId, ThreadId и Hwnd, однако какая-либо валидация этих полей в контексте серверного процесса не произодится (можно ссылаться на чужие процессы, потоки и окна). Также в контексте CTF-сервера есть уязвимости типа вызова функции из таблицы указателей по индексу (без проверки границ), множество удобных гаджетов, а протокол маршаллинга CTF-сообщений спроектирован насколько безнадёжно, что предоставляет способ узнать значение стекового указателя в контексте CTF-сервера (!), чем на корню подрывает виндово-десяточный ASLR.
Эксплуатация уязвимости выглядит довольно внушительно: сначала непривилегированный атакующий процесс своими действиями провоцирует поднятие окна подтверждения UAC; далее встроенный в винду системный процесс consent.exe, выполняющийся от имени встроенной учётной записи "NT AUTHORITY\SYSTEM", рисует то самое UAC-окно; а затем, в обход UIPI, consent.exe просто подвергается атаке через дырки в CTF-протоколе, и в контексте этого процесса происходит выполнение произвольного кода; песенка спета.
Это реально жесть. Microsoft'у теперь такое джва года чинить. Скорее всего, вся IME/CTF-подсистема в винде будет выброшена нахрен и переписана с нуля, с соответствующими последствиями для совместимости.
https://googleprojectzero.blogspot.com/2019/08/down-rabbit-hole.html
https://bugs.chromium.org/p/project-zero/issues/detail?id=1859
https://news.ycombinator.com/item?id=20685951
https://github.com/taviso/ctftool
Уязвимость связана с IME/CTF (переключение раскладки клавиатуры) и её не так-то просто исправить, потому что это не ошибка кодирования, а ошибка проектирования протокола CTF (который связывает специальный серверный процесс ctfmon.exe с каждым GUI-приложением, куда можно что-нибудь ввести, и следовательно, где можно переключить раскладку клавиатуры). В протоколе CTF предусмотрена передача сообщений, которые содержат такие поля как ProcessId, ThreadId и Hwnd, однако какая-либо валидация этих полей в контексте серверного процесса не произодится (можно ссылаться на чужие процессы, потоки и окна). Также в контексте CTF-сервера есть уязвимости типа вызова функции из таблицы указателей по индексу (без проверки границ), множество удобных гаджетов, а протокол маршаллинга CTF-сообщений спроектирован насколько безнадёжно, что предоставляет способ узнать значение стекового указателя в контексте CTF-сервера (!), чем на корню подрывает виндово-десяточный ASLR.
Эксплуатация уязвимости выглядит довольно внушительно: сначала непривилегированный атакующий процесс своими действиями провоцирует поднятие окна подтверждения UAC; далее встроенный в винду системный процесс consent.exe, выполняющийся от имени встроенной учётной записи "NT AUTHORITY\SYSTEM", рисует то самое UAC-окно; а затем, в обход UIPI, consent.exe просто подвергается атаке через дырки в CTF-протоколе, и в контексте этого процесса происходит выполнение произвольного кода; песенка спета.
Это реально жесть. Microsoft'у теперь такое джва года чинить. Скорее всего, вся IME/CTF-подсистема в винде будет выброшена нахрен и переписана с нуля, с соответствующими последствиями для совместимости.