Марк Русинович, один из современных лидеров в сфере программирования и ИТ верит в то, что составление “белого списка” компьютерных ресурсов играет важную роль в безопасности. Мне бы хотелось разделить его энтузиазм в этом деле.

Сотрудники ИТ-департамента Microsoft повсюду выражают благодарность доктору Марку Русиновичу, почетному технологу этой корпорации, и его менее известному коллеге Брайсу Когсвеллу. Русинович известен как автор книг, сделавших технические детали Windows доступными всем, кто считает себя технократами. Будучи к тому же программистом, он написал приложения, которые расширяют наши возможности общения с Windows, а также обучил нас с ними работать.

Русинович и Когсвелл создали компанию Wintermals и разработали бесплатные инструменты Windows Sysinternals. Microsoft приобрела эту компанию два года назад. Некоторые из продуктов Winternals были перевыпущены как продукты Microsoft, а другие — нет. Но сайт Sysinternals остался почти таким, каким Русинович и Когсвелл в свое время запустили его и поддерживают сейчас (в свое свободное время — поверите вы или нет; сейчас он входит в состав сайта microsoft.com).

В недавнем видеоинтервью Русинович рассуждал о безопасности. Я соглашаюсь далеко не со всем, что он говорит, хотя всегда с большим уважением отношусь к его словам. Интервью длилось чуть дольше 40 мин, но я буду говорить только о той его части, что связана с безопасностью. Вместе с тем я настоятельно рекомендую вам просмотреть его самостоятельно (или хотя бы прослушать).

Русинович активно обсуждал возможности Vista UAC (User Access Control — контроль доступа пользователей), подчеркивая, что это отнюдь не “барьер безопасности”. Можно подумать, что это выражение критики, но тут нужно учесть следующее. Такие границы безопасности, как контроль доступа в файловой системе, предотвращают доступ неавторизованных пользователей, и UAC здесь просто информативнее своих аналогов. По мнению Русиновича, UAC предназначен для провайдеров Интернет-услуг, а не для конечных пользователей. Это способ заставить провайдеров корректно писать свое ПО, с тем чтобы оградить пользователей от общения с UAC.

Что же стоит за UAC? Пользователи порой делают то, что они не должны делать, и будет неправильно, если вы не сможете защитить систему от последствий этого. Русинович считает, что любое действие, усиливающее такую защиту, приводит к конфликту: пользователи не будут понимать такие изменения и поэтому не будут принимать их.

Вы не можете просто отделить стеной приложения от остальной системы, по крайне мере не в современной архитектуре Windows. Есть исследовательские проекты, которые двигаются в этом направлении, о чем также рассуждал Русинович. Мне нравится эта часть интервью, в которой идет речь об ограничениях в управлении состоянием в Windows и о том, что может быть сделано в этом направлении. Любая попытка изолировать приложения в современных Windows приведет к проблемам с совместимостью приложений и к снижению пользовательских оценок условий работы. Русинович не утверждал, что Microsoft неверно поступила, создав UAC, но указывает на то, что этот контроль приводит к определенным нестыковкам, порождающим реальные проблемы при работе приложений.

Говоря о долгосрочной перспективе, Русинович коснулся другого способа достижения прогресса в области безопасности. Он обратил внимание на известный уже несколько лет назад продукт компании Winternals под названием Protection Manager, один из тех, который Microsoft не стал делать своим. Protection Manager — это инструмент для поддержки "белых списков" ПО в корпоративной сети. В принципе я всегда был настоящим поклонником "белых списков", но я не могу судить, насколько продуктивным может быть их реальное использование.

Мы с Русиновичем считаем, что ИТ-специалисты должны иметь список того, что можно запускать на компьютерах и строго выполнять эти требования. Нет никаких разумных возражений против этого, но все мы знаем, что, когда появился новый iPhone, многие топ-менеджеры настаивали на запуске некоторых новых программ на своем ноутбуке, чтобы поддерживать новую версию iTunes. Упомянутый “белый список” приходится все время обновлять.

Ваши ожидания от “белых списков” должны быть разумными, вы должны знать, что есть ограничения для них: уязвимости ПО, например из-за типичного переполнения буфера, влекут за собой неправильное выполнения кода, несмотря на “белый список”. Система думает, что код выполняет именно уязвимая программа, а не какая-то внешняя программа, даже если код приходит по НТТР-запросу, или оказывается внутри текстового документа Word, или поступает в компьютер по другим неожиданным каналам.

Русинович подчеркивает, что, по его мнению, “белые списки” должны быть дополнены и другими технологиями, продвигаемыми Microsoft, такими как ASLR и DEP, ограничивающими повреждения, которые могут нанести уязвимости в ПО. В основном мы во всем согласны, но он более оптимистичен, чем я, в отношении “белых списков”.

Кроме того, Русинович сказал, что следующая версия Microsoft Forefront Client Security будет обладать возможностью поддержки “белых списков”. Корпоративная версия Forefront — уже очень впечатляющий продукт (естественно, в сравнении с вариантом для некорпоративного использования). Русинович также отметил, что многое будет сделано в направлении политик, ограничивающих ПО в операционной системе, подобно тому, как это делается в управляемых сетях.

А что же потребители? На мой взгляд, для них “белые списки” — это журавль в небе. Русинович рассуждает, что для потребителей они могут состоять только из таких приложений, которым они доверяют. Я думаю, гораздо более вероятно, что выступать в качестве менеджера репутаций для ПО одному надежному источнику (скорее всего — производителю ПО для защиты пользователей от злонамеренных вторжений) может дать возможность цифровая подпись. Но я даже представить себе не могу, как все это будет работать. Для пользователей очень легко попасть в такую ситуацию («установите этот плагин, чтобы увидеть содержание»), когда они потеряют бдительность. Я совсем не одобряю тех корпоративных клиентов, которые хотят установить неодобренное ПО, и проявляю лишь чуть большую терпимость к конечным пользователям, но факт состоит в том, что корпоративных пользователей можно предупредить о необходимости соблюдения жестких правил, но вы не можете сделать то же самое с конечными пользователями. Они быстро решат, что менеджер репутаций не прав или что их единственный поставщик ПО “подставил” их, предлагая им не то, что они хотели.

В этом мы с Русиновичем тоже согласны. Но еще одно его утверждение (связанное с продуктами интеллектуального анализа безопасности) продвигает аргументацию безопасности еще дальше в направлении “белых списков”. Суть в том, что единственный способ победить злонамеренное ПО — это помешать ему работать на компьютере. После того как оно заработало, вы должны признать, что проиграли, и больше ничему в этой системе доверять нельзя. Если это произошло и если даже UAC не смог ничего сделать, тогда “белый список” — единственный способ.

Я согласен с этим аргументом, но мне по-прежнему не хватает уверенности в этих методах. Я действительно хочу в будущем написать о том, как Русинович доказывал мне, что я неправ, и как “белые списки” в конечном счете могут взять под контроль проблему злонамеренного ПО. Возможно, в ожидании этого я начну писать очередную колонку.