25 уязвимостей затрагивают компонент Win32k и, по сути, представляют собой различные варианты одной и той же проблемы.
Компания Microsoft работает над исправлением целого класса уязвимостей, затрагивающих все версии Windows за последние два десятка лет. Уязвимости обнаружил израильский исследователь безопасности Гиль Дабах (Gil Dabah). В среду, 1 апреля, он сообщил о 25 багах, по сути, представляющих собой различные варианты одной и той же уязвимости, и опубликовал PoC-код.
Проблема затрагивает Win32k, компонент операционной системы для управления пользовательским интерфейсом в 32-разрядных Windows и взаимодействием между элементами пользовательского интерфейса, драйверами и ядром ОС. Win32k используется в Windows с середины 1990-х годов и до сих пор поставляется даже с 64-разрядными ОС, чтобы на них могли работать старые приложения.
По словам исследователя, проблема связана с эволюцией Win32k. В более ранних версиях Windows компонент работал в режиме пользователя. Когда Microsoft осознала всю важность компонента и необходимость его работы в более защищенном режиме ядра, было уже поздно. Win32k стал слишком объемным и сложным, и, если его полностью переписать, у тысяч 32-разрядных приложений могли возникнуть трудности с обратной совместимостью.
Сейчас с Win32k творится полный хаос – одни операции осуществляются в пространстве ядра, тогда как другие зависят от более старых компонентов кодовой базы. В более старых функциях Win32k используется префикс «xxx», и при вызове этих функций они отправляются из защищенного режима ядра в режим пользователя, а затем результат снова возвращается в режим ядра.
Злоумышленники могут внести изменения в код Win32k с префиксом «xxx», пока тот находится в режиме пользователя, а затем, когда результаты xxx-функции снова вернутся в режим ядра, заставить ядро выполнить нежелательные действия с повышенными привилегиями.
Год назад Гиль Дабах поставил перед собой задачу – найти 15 новых способов эксплуатации вышеописанной уязвимости. В итоге исследователь выявил 25 разных багов, и некоторые из них работают даже на Windows 10 (на момент проведения исследования это была инсайдерская превью-версия 1909). 11 багов позволяли повысить привилегии на системе, и Microsoft постепенно их исправила (первый патч вышел в ноябре 2019 года, а последний – в феврале 2020 года). По словам исследователя, сейчас Microsoft работает над решением, способным раз и навсегда полностью исправить вышеописанную проблему.
Спойлер: она начинается с подписки на наш канал