В начале 2002 года корпорация Майкрософт объявила о своей инициативе по обеспечению защищенных вычислений Trustworthy Computing Initiative после того как несколько массово распространившихся вирусов и вирусов-червей разрушили системы Windows и парализовали работу ИТ-отделов, а устранение последствий стоило бизнесу и потребителям огромных денег. В рамках этой инициативы корпорация Майкрософт признала
свою ответственность за проблемы безопасности и провела незамедлительную коррекцию курса и смену парадигмы. При разработке программного обеспечения корпорация Майкрософт перенесла внимание с широты функциональных возможностей на безопасность и целостность программ. Дополнительный стимул инициативе безопасности придала атака вируса-червя Blaster, произошедшая в августе 2003 года. История вируса-червя Blaster приведена в статье под боковым заголовком «Атака клонов».
Основные принципы инициативы по обеспечению защищенных вычислений следующие. Принцип «безопасность при разработке» (Secure by Design) означает использование философии безопасного кодирования. Принцип «безопасность по умолчанию» (Secure by Default) означает, что принятые по умолчанию установки компонентов Windows® должны быть максимально безопасными. Принцип «безопасность при развертывании» (Secure in Deployment) определяет принципы создания инструментов и нормативных руководств, помогающих предприятиям и потребителям защитить инфраструктуру Windows.
В целом инициатива по обеспечению защищенных вычислений привела к значительным улучшениям в обеспечении безопасности. К сожалению, эти улучшения не были полностью использованы в системе Windows XP, поскольку она была выпущена за два года до появления этой инициативы. Хотя с помощью пакета обновления 2 (SP2) удалось в значительной мере внедрить эту философию в систему, все же Windows XP не может быть доработана таким образом, чтобы полностью соответствовать требованиям этой инициативы.
Таким образом, Windows Vista™ является первой операционной системой для настольных компьютеров, которая полностью соответствует задачам инициативы по обеспечению защищенных вычислений. Усиление защиты служб Windows Vista, которое является конкретной реализацией принципа «безопасность по умолчанию» (см. рис. 1), — это важная новая возможность, разработанная с целью препятствовать ошибочному поведению служб, которое на сегодняшний день может вызываться большим количеством вредоносных программ. С помощью усиления защиты служб корпорация Майкрософт значительно изменила принятое по умолчанию поведение и профиль безопасности служб Windows.
Рис. 1 «Безопасность по умолчанию»: службы Windows
Функция Описание Результат
Минимальные права | Службы Windows Vista сконфигурированы для использования минимальных прав, необходимых для своего выполнения. | Windows Vista понижает принятые по умолчанию привилегии безопасности, доступные службам Windows, уменьшая потенциальное воздействие вредоносных программ. |
Изоляция служб | Чтобы позволить службам выполняться под учетными записями с низкими привилегиями, используются идентификаторы SID. | Система Windows Vista может препятствовать работе вредоносных программ, ограничивая доступ к своим ресурсам на основе службы идентификаторов SID. |
Ограниченный доступ к сети | Для всех служб Windows Vista изначально действуют ограничения на работу в сети. | Windows Vista не позволяет вредоносным программам использовать службы для выполнения неправомерных сетевых операций. |
Изоляция сеанса 0 | Сеанс 0 зарезервирован для служб. | Windows Vista не позволяет вредоносным приложениям захватывать службы с высоким уровнем привилегий, используя атаки на основе сообщений, поскольку теперь они выполняются в разных сеансах. |
Службы повышенного риска
Службы Windows, ранее известные как службы NT, являются постоянно работающими исполняемыми приложениями, которые выполняются в собственных сеансах Windows. Службы могут запускаться автоматически при загрузке компьютера, их работа может быть приостановлена или возобновлена. Обычно у них нет пользовательского интерфейса, они могут выполняться в контексте безопасности учетной записи, которая отличается от учетной записи зарегистрированного в системе пользователя или принятой по умолчанию учетной записи компьютера. Таким образом, использование служб Windows очень удобно для разработки некоторых видов приложений и для конечных пользователей, использующих эти приложения. Однако из-за своей мощности и гибкости службы Windows традиционно были уязвимы, и на то есть несколько причин.
Во-первых, раньше службы Windows выполнялись в основном под учетными записями Windows с высокими привилегиями, такими как системная учетная запись. Если работа службы, выполняемой с системной учетной записью, нарушена вредоносной программой, эта программа может сделать с системой все, что угодно. Например, рассмотрим службу удаленного вызова процедур в Windows XP. До выпуска пакета обновлений SP2 для Windows XP эта служба выполнялась под системной учетной записью, что позволяло вирусам-червям Blaster, Welchia и другим выполнять административные задачи, используя уязвимость удаленного вызова процедур.
Во-вторых, многие службы ориентированы на работу в сети, что позволяет вредоносным программам использовать их, создавая входящие подключения к ним через сеть. Зараженным службам, в свою очередь, это позволяет создавать исходящие подключения чтобы заражать другие системы или выполнять иные незаконные действия, например пересылать перехваченные нажатия клавиш. Большинство случаев заражения вирусами-червями и вредоносными программами на сегодняшний день происходит через сетевые подключения.
Наконец, службы обычно являются постоянно работающими, то есть они запускаются в момент загрузки системы и выполняются до завершения ее работы. Это очень привлекает создателей вредоносных программ, так как означает, что они могут отыскивать бреши в службе в течение всего времени ее работы, что, в конечном счете, предоставляет программе достаточно времени для выполнения своих действий.
Атака клонов Это мог быть его самый большой триумф. Если бы все пошло по плану, вскоре он смог бы взять под контроль сотни тысяч систем Windows по всему миру, выдать им практически любую команду, а затем спокойно наблюдать, как все его команды послушно выполняются.
Действуя настойчиво, но неуловимо, он начал тайно проверять несколько компьютерных систем, отыскивая уязвимую точку входа. Потребовалось немного времени, чтобы найти то, что нужно — систему с неисправленной уязвимостью, которую он умел использовать.
Наиболее опасной эту уязвимость делало то, что при успешном ее использовании можно было получить полный административный доступ в систему. Ему не нужен был контроль просто над какой-нибудь учетной записью, он управлял самой мощной административной учетной записью Windows. В своих дальнейших поступках он был ограничен только собственным воображением.
После секундного размышления он опробовал свой преступный код на компьютере с неисправленной уязвимостью, и он сработал! Вот так просто он получил неограниченные привилегии на этом компьютере. Он использовал свой административный доступ, чтобы заставить компьютер загрузить и установить код вредоносной программы типа «троянский конь», внести изменения в реестр и затем перезагрузить зараженную систему, превратив ее в послушное орудие, готовое выполнять его команды. Внесенные в реестр изменения вызывали выполнение вредоносного программного обеспечения при каждом перезапуске компьютера.
Теперь его намерения стали ясны. После заражения каждый инфицированный компьютер будет проверять определенные сетевые порты всех других компьютеров сети. Если этот порт открыт и компьютер уязвим, на этот новый компьютер будет загружен и установлен код «троянского коня». Будут внесены те же изменения в реестр. Этот цикл будет постоянно воспроизводить себя. Таким образом была создана растущая армия клонов. К вечеру тысячи систем Windows по всей планете уже были частью зловещей армии клонов, не подчиняющейся командам ни единого человека в мире, кроме него.
А затем, словно этого было недостаточно, он обратился к веб-узлу обновления Microsoft Windows и отдал всем клонам команду выполнить 15 августа 2003 года атаку типа «отказ в обслуживании», чтобы не позволить ни одному компьютеру в мире загрузить исправление уязвимости, которое, что интересно, было доступно уже в течение нескольких месяцев.
Теперь вы, наверное, поняли, что речь идет о пандемии вируса-червя MS Blaster, которая в августе 2003 года поразила компьютеры с системой Windows во всех уголках земного шара. Атака Blaster была, вероятно, одной из самых серьезных атак на систему Windows за все время ее существования и причинила ущерб в миллиарды долларов. По злой иронии, хотя MS Blaster получает огромную власть над зараженными компьютерами, его реализация чрезвычайно проста.
Как работает Blaster
Blaster и его производные используют уязвимость службы удаленного вызова процедур Windows, вызывая переполнение буфера. Атакующий, успешно использовавший эту уязвимость, сможет выполнять код с привилегиями системной учетной записи в атакованной системе, что позволит ему предпринимать любые действия — устанавливать программы, просматривать, изменять или удалять данные и создавать новые учетные записи с полными привилегиями.
В случае с Blaster вирус-червь автоматически сканирует сети, отыскивая компьютеры с открытым TCP-портом 135. Найдя жертву, он пытается использовать уязвимость службы удаленного вызова процедур. В случае успеха он подключается к порту 4444 компьютера-жертвы и отдает ему команду запустить упрощенный протокол передачи файлов (протокол TFPT) и загрузить из зараженной системы копию вируса-червя, называющуюся MSBLAST.EXE. Протокол TFPT является частью операционных систем Windows 2000, Windows XP и Windows Server 2003. Затем атакующая система отдает вновь зараженному компьютеру команду запустить файл MSBLAST.EXE, и компьютер-жертва сам становится атакующим. Blaster также записывает код в раздел реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \Windows\CurrentVersion\Run, что позволяет ему выполняться каждый раз при запуске системы.
Усиление защиты служб
Защита служб в Windows Vista усилена четырьмя способами — выполнением служб с минимальными полномочиями, изоляцией служб, ограничением доступа в сеть и изоляцией сеанса 0. Обсудим подробно каждый из этих способов.
Выполнение с минимальными правами Многие службы Windows раньше выполнялись в контексте системной учетной записи — самой мощной учетной записи Windows. Системная учетная запись имеет такие пользовательские права и привилегии как возможность доступа практически к любому объекту системы или профилю другого пользователя, возможность олицетворять пользователя, открывать уязвимые кусты реестра, такие как HKLM\SECURITY, и предоставлять учетные данные компьютера удаленным серверам. Поскольку создатели вредоносных программ предпочитают этот уровень доступа и контроля над Windows, любая служба, выполняемая в системном контексте безопасности, несомненно, будет для них заманчивой целью.
Хотя для работы под системной учетной записью сконфигурировано немало служб Windows, многим из них необходимо лишь небольшое подмножество привилегий из числа тех, которые имеются только у системной учетной записи. К сожалению, Windows XP и предыдущие версии Windows работают по принципу «все или ничего», то есть они не предоставляют никакого механизма выбора необходимых привилегий. Таким образом, многие службы Windows неизбежно запускаются с избыточными привилегиями безопасности.
Усиление защиты служб Windows Vista решает эту проблему, вводя концепцию минимальных прав для конфигурации служб. Минимальные права позволяют службам выполняться с минимальными необходимыми для работы привилегиями, а не со всеми привилегиями, назначаемыми по умолчанию учетной записи, которую службы используют для регистрации в системе.
Например, может понадобиться, чтобы служба могла работать как часть операционной системы, и при этом нет необходимости в том, чтобы она могла создавать маркер безопасности. Концепция минимальных прав позволяет удалить привилегию создания маркера. В результате уменьшается вред, который может причинить злоумышленник в случае, если в будущем эта служба станет уязвимой для атаки. Разработчики могут использовать инструменты командной строки, такие как SC.exe (см. рис. 2), или использовать программные методы для определения и указания привилегий, необходимых конкретной службе. Корпорация Майкрософт применяет принцип минимальных прав к поставляемому продукту, чтобы уменьшить принятые по умолчанию привилегии всех предустановленных служб Windows Vista.
Рис. 2. Параметры команды SC определяют полномочия служб Windows Vista Изоляция служб В версиях Windows, предшествовавших Windows Vista, служба может при необходимости получить доступ к привилегированному объекту, такому как уязвимый куст реестра или файл, тремя способами —используя системную учетную запись для доступа к объекту; понижая уровень безопасности куста реестра или файла, чтобы позволить получить доступ учетной записи службы с более низкими привилегиями; или создавая учетную запись специально для этой службы и предоставляя доступ к объекту только этой учетной записи.
Хотя все эти способы работают, у каждого из них есть свои существенные недостатки. Два первых способа по своей сути рискованны, а при использовании третьего возникает неудобство, состоящее в необходимости вручную управлять паролями новых учетных записей.
Например, предположим, что антивирусная программа устанавливает службу, которой необходим доступ к нескольким уязвимым системным объектам, таким как файл описаний вирусов и параметры реестра, касающиеся антивирусного программного обеспечения. Если антивирусная служба сконфигурирована так, что для доступа к своим объектам она использует системную учетную запись или любую другую встроенную учетную запись безопасности, это означает, что вредоносная программа, заразившая любую другую службу Windows, использующую эту учетную запись, может в принципе получить доступ к файлу описаний вирусов, изменить этот файл и параметры реестра, влияющие на работу антивирусного программного обеспечения, или попросту завершить работу антивирусной службы. Фактически сегодняшние вредоносные программы используют некоторые из этих самых способов, чтобы обеспечить свою скрытость и работоспособность.
В Windows Vista эти проблемы безопасности и управляемости решаются с помощью изоляции служб, позволяющей службе зарегистрировать объект для собственного монопольного использования, обеспечив безопасность ресурса, такого как доступ к файлу или кусту реестра, с помощью записи управления доступом, содержащей идентификатор безопасности (SID) службы. Таким образом, описанная в примере антивирусная служба может выполняться под учетной записью с низкими привилегиями, но все же иметь доступ к уязвимым файлам описаний вирусов и кустам реестра. Чтобы получить такой доступ, антивирусная служба, выполняемая под учетной записью с низкими привилегиями, должна иметь идентификатор SID, назначенный ей системой Windows Vista. После того как идентификатор SID назначен, антивирусная программа может изменить списки контроля доступа своей файловой системы и объектов реестра, чтобы предоставить доступ исключительно для антивирусной службы.
Еще один пример. В 2003 году вирус-червь Welchia начал использовать уязвимость удаленного вызова процедур, чтобы записать себя в файл %System%\Wins\Dllhost.exe. Он также добавлял кусты в HKLM\SYSTEM\CurrentControlSet\Services, чтобы установить собственные службы в зараженную систему Windows. Однако сегодня Windows Vista может помешать вирусу-червю Welchia, ограничив доступ к каталогу и реестру конкретными необходимыми службами и используя для предоставления доступа этим службам учетные записи с низкими привилегиями.
Ограниченный доступ в сеть В состав Windows Vista входит новый брандмауэр, основанный на возможностях брандмауэра системы Windows XP с пакетом обновления 2 (SP2). Он включает важные новые возможности — фильтрацию исходящих пакетов (outbound filtering) и интеграцию с протоколом IPsec (IPsec integration). Новый брандмауэр также интегрируется с усилением защиты служб в Windows Vista, что затруднит осуществление некоторых неправомерных сетевых операций вредоносными программами, выполняющимися в атакованной службе Windows.
В брандмауэре Windows Vista службам Windows назначаются сетевые политики брандмауэра, накладывающие ограничения на поведение служб. Например, службе самонастраивающихся устройств (Plug and Play) или другой подобной, которой может не потребоваться связь через сетевые порты, может быть назначено ограничение «нет доступа к сети». Если установлено это ограничение, то атака, направленная на эту конкретную службу, не сможет получить к ней доступ никаким способом, основанным на использовании сети. Любая попытка установления входящего или исходящего соединения службой, которой назначено подобное ограничение, будет блокироваться брандмауэром. Другие службы, имеющие законную необходимость доступа к сети, могут быть сконфигурированы для использования конкретного порта. Разработчики могут использовать преимущества этих возможностей для ограничения доступа к сети своих служб.
Ограничение доступа к сети в сочетании с усилением защиты служб обеспечивает надежную защиту от потенциальных атак, основанных на использовании служб, что является значительным улучшением по сравнению с предыдущими версиями Windows. Раньше в системе Windows не существовало возможности принять решение, как, где и какая служба может устанавливать связь через сеть. Но с помощью сетевых ограничений брандмауэра Windows Vista на службу удаленного вызова процедур можно было бы не позволить таким вирусам как Blaster, Sasser или Welchia использовать зараженные службы для связи с другими компьютерами.
Изоляция сеанса 0 Функция быстрого переключения пользователей в Windows XP размещает одновременно зарегистрированных в системе пользователей в разные сеансы Windows. Сеанс 0 создается во время запуска, по мере необходимости к нему добавляются другие сеансы. Службы всегда выполнялись в сеансе 0, и до появления Windows Vista в этом же сеансе могли выполняться пользовательские приложения. Однако при выполнении пользовательских приложений и служб Windows в одном сеансе возникают проблемы с безопасностью, так как службы выполняются с повышенными привилегиями и поэтому являются мишенью для вредоносных программ, которым нужен способ повысить свой собственный уровень привилегий.
Система Windows Vista устраняет эту угрозу безопасности, резервируя сеанс 0 исключительно для служб, выполняя приложения в других сеансах и делая сеанс 0 неинтерактивным, что означает, что никакая служба не может создать пользовательский интерфейс, такой как диалоговое окно или приглашение, доступный конечному пользователю. Из-за этих изменений изоляция сеанса 0 влияет на совместимость приложений, что необходимо учитывать разработчикам служб и драйверов Windows.
Заключение
Windows Vista является первым полным выпуском операционной системы корпорации Майкрософт для настольных компьютеров, удовлетворяющей требованиям инициативы по обеспечению защищенных вычислений. Она содержит значительные улучшения, которые сыграют важную роль в защите пользователей Windows. Конечно, компьютерная безопасность является развивающейся дисциплиной. Нет сомнений в том, что создатели вредоносных программ постоянно ищут, проверяют и исследуют новые способы атак на Windows. Однако новые функции усиления безопасности служб в Windows Vista значительно поднимают планку, усиливая принятые по умолчанию установки безопасности и уменьшая потенциальные возможности для атаки. Дополнительную информацию об этих значительных улучшениях см. по адресу microsoft.com/whdc/system/vista/Vista_Services.mspx (на английском языке).