Источник: http://www.istartedsomething.com
Эта статья посвящена всем "техническим журналистам", которые постоянно высказывали свое недовольство по поводу назойливости UAC в Windows Vista. Изменения в User Account Control (UAC) в Windows 7 Beta сделали его менее назойливым, зато открыли дорогу вредоносному ПО, которое с легкостью отключает UAC без вмешательства пользователя.
Для начала хотелось бы прояснить две вещи. Во-первых, я изначально собирался немного пошантажировать Microsoft информацией о данной уязвимости, но в условиях экономического кризиса Microsoft вряд ли бы смогла по достоинству оплатить столь ценную информацию. Поэтому я решил поделиться ей совершенно бесплатно. Во-вторых, я написал эту статью не столько из-за реальной угрозы безопасности - ее очень просто устранить, - сколько из-за реакции Microsoft на информацию об этом баге на сайте Microsoft Connect. Мой отзыв был закрыт со статусом "согласно дизайну", а это означает, что ошибка не будет устранена. Поэтому мне в голову пришла бредовая мысль опубликовать результаты моих изысканий в надежде на то, что Microsoft все же обратит внимание на уязвимость и устранит ее к финальной версии Windows 7.
Теперь поговорим об изменениях UAC в Windows 7. По умолчанию UAC в Windows 7 установлен на опцию "Уведомлять только в случае, когда приложения пытаются внести изменения в мой компьютер" и "Не уведомлять меня, когда я вношу изменения в настройки Windows". Разница между сторонним приложением и настройками Windows заключается в наличии сертификата безопасности. Приложения/апплеты, управляющие настройками Windows, подписаны специальным сертификатом Microsoft. Поскольку все элементы панели управления подписаны таким сертификатом, при внесении изменений в системные настройки диалога UAC не появляется.
Ахиллесовой пятой такого подхода является тот факт, что смена настроек UAC расценивается как "изменение настроек Windows". Поэтому при определенном стечении обстоятельств и вместе с новым уровнем безопасности UAC, при его отключении подтверждающего диалога не появится. Даже при полном отключении UAC.
Конечно, нельзя расценивать эту ошибку как программную уязвимость в коде (особенно в случае, если вы самостоятельно отключаете UAC), но, по сути, таким образом можно отключить UAC без участия пользователя и делать с компьютером, все, что вздумается. Решение здесь простое, ведь всю процедуру можно осуществить с помощью лишь горячих клавиш, так почему бы не написать приложение, эмулирующее последовательность нажатий клавиш клавиатуры?
С помощью моего хорошего товарища Рафаэля Ривьеры (Rafael Rivera) мне удалось создать на VBScript PoC-приложение (абб. от Proof-of-concept - доказательство концепции), которое эмулирует последовательность нажатия нескольких клавиш. Вы можете загрузить его и самостоятельно оценить, помня при этом о том, что приложение отключает UAC.
Позднее мы пришли к пониманию того, что последствия могут быть хуже, чем изначально предполагалось. Можно запланировать перезагрузку после смены настроек UAC, добавить в автозагрузку любое приложение и запустить его с полными привилегиями администратора.
Избавиться от этой проблемы довольно-таки просто: сделать обязательным использование режима Secure Desktop при любых настройках UAC, независимо от текущего режима. И хотя это никогда не защищало пользователей, щелкающих "Yes" без раздумий, такое решение является более безопасным. Зная о том, что Microsoft близка к завершению работы над Windows 7, я решил еще раз воззвать к ее разуму.
До того, как Microsoft решит исправить эту досадную уязвимость, если вообще решит, пользователям бета-версии рекомендуется установить уровень уведомлений UAC на "Always Notify", который уведомит вас в случае смены настроек. Раздражительно, зато безопасно.