Безопасность Windows Vista x64
Недавно я поставил Windows Vista на домашний компьютер, с 64-битным процессором, и мне стала интересна разница в обеспечении безопасности между 64 и 32 битной версией, учитывая, что мой ноутбук, на котором хранится основная часть информации, оснащен 32 битным процессором...
После небольшого исследования я пришёл к выводу, что 64-битная версия имеет ряд серьёзных преимуществ:
1. Аппаратная поддержка NX по умолчанию.
2. Защита ядра от вредоносного кода (PatchGuard)
3. Обязательная подпись у драйверов и приложений, требующих доступ к ядру.
NX (No eXecute или Data Execution Protection – как называет данную технологию Microsoft) – технология аппаратной защиты от переполнения буфера - процессоры, поддерживающие данную технологию, не дают приложениям к доступ к памяти, выделенной под другие приложения. Множество эксплойтов для системы выглядят как данные, при этом позже исполняются как приложения, а NX это блокирует. Вообще – данная технология, увы, не панацея, но весьма неплохой способ защиты.
В Windows х86 в область защиты No eXecute входит лишь код отмеченных приложений, в то время как в x64 – весь код системы, что серьёзно подымает уровень безопасности системы. Я собираюсь провести несколько тестов, для проверки надёжности NX, по утечке памяти на своем ноутбуке, с x86-битным процессором, и дома с x64.
PatchGuard и обязательная подпись драйверов требуют отдельного рассмотрения, поэтому о них будет чуть позже.
Вместе с тем, детально изучивши 3 вышеупомянутые преимущества x64-битной Windows, я понял, что с ними я более спокоен о безопасности своей информации.
Да, и, кстати, новые билды гораздо лучше отлажены, по сравнению с той же Beta 2, поэтому на своём основном домашнем компьютере я использую в основном Windows Vista, загружая XP очень редко, в основном, для того чтобы поиграть.
Я знаю, что это длинный пост, и даже если вы не хотите читать все мои рассуждения, я всё равно вам советую прочитать «What were they thinking?» (цикл статей про Windows Vista и используемые в ней технологии, www.uninformed.org - прим. перев.). Cтатья Skywing (один из авторов Uninformed,
PatchGuard
Я долго исследовал и взвешивал информацию, и БАХ! – несколько дней назад Symantec выпустил заявления, совпадающее с моими предыдущими высказываниями! Вот тебе и на! И так, сначала я выскажусь о PatchGuard, а потом прокомментирую высказывания из главного офиса Symantec по раздуванию из мухи слона.
Кстати, команда безопасности Windows Vista в своём блоге разместили информацию о PatchGuard на тему «Что такое PatchGuard, и причины его появления».
Для начала, начнём с того, что PatchGuard впервые был представлен не в Windows Vista, а в Windows Server 2003 SP 1 x64 и Windows XP x64, то есть первые реализации появились около 18 месяцев назад. Мне интересно, почему Microsoft позиционирует данную технологию как эксклюзивную в Windows Vista? По-моему, статья «Обход PatchGuard» (см. далее) написана на основе анализа ранних версий x64-битных версий Windows, но никак не Vista.
Теоретически, если антивирусные компании адаптировали свои программы для Windows XP 64x, и свойственных ей интерфейсов, к выходу первой бета версии Vista, приблизительно год назад, у них уже был бы опыт работы с данной технологией. Я просто не могу представить, чтобы в Microsoft кто-то принял решение во время разработки Windows Vista x64 сделать шаг назад в плане обеспечения безопасности, и удалить технологию представленную в Windows XP x64. Ладно, идём дальше.
Какие проблемы решает PatchGuard?
В своей политике применения патчей для x64-битных систем, Microsoft объясняет причины появления новой технологии тем, что изменение или замена служб ядра недокументированными означает возможное уменьшение стабильности, что ясное дело, не очень хорошо, чему PatchGuard должен препятствовать. Внедрение данной технологи в 32-битных системах нарушило бы работу большинства существующих программ, поэтому данную технологию было решено представить только в относительно новых x64-битных системах, а нарушение работы ПО – еще одна не самая лучшая вещь.
FAQ по PatchGuard выявляет основные проблемы, на борьбу с которыми он направлен: надёжность, производительность, безопасность. Вот что написано, например, про безопасность: «Безопасность. Ядро Windows проходит серьёзное тестирование перед финальным выпуском, чтобы гарантировать качество выпускаемой ОС. После применения неофициальных патчей невозможно протестировать стабильность ядра. Кроме того, комплексность кода ядра Windows является основой стабильности системы, баги в коде неофициальны патчей могут серьёзно её нарушить. Анализ онлайновой базы по падению Windows показывает, что в основном ядро становится не стабильным как после внедрения в ядро вредоносного кода, так и неофициальных патчей».
Итак, цели предельно ясны, это- стабильность, производительность и безопасность, к тому же это основные факторы, интересующие пользователя. Скажите мне кто не замечал падение производительности после инсталляции большого количества ПО, или драйвера вызвавшего нестабильность системы – основной причины, чтобы совершить откат системы до более раннего состояния. И, наконец, безопасность. Авторы разнообразного malware начинают использовать всё более искусный код, и используют те же недокументированные интерфейсы что и обычное ПО, чтобы прописать себя в ядро, и мочь выполнить свои функции.
А как же насчёт гарантированного ПО – не понадобится ли ему своеобразный паспорт?
Должен сказать, что я точно не знаю что такое дополнение к ядру ОС от гарантированного ПО, и как оно выглядит в коде. Хорошие намерения? Но достаточно ли этого? Я мог бы создать список гарантировано хорошего ПО. Так же у меня есть несколько вопросов насчёт безопасности и надёжности:
1. Было ли дополнение ядра частью общего дизайна системы? Возможно это так, но в таком случае должен быть хорошо описанный интерфейс разработанный для интегрирования сторонних дополнений в ядро. А использование неописанных интерфейсов может привести, в лучшем случае, к непредсказуемому поведению.
2. Тестировалось ли данное дополнение, так как и остальная часть кода? Отвечает ли оно всем требованиям безопасности цикла разработки? Тестировался ли код после внедрения в ядро на совместимость с разнообразным ПО? Во всех языках? Я думаю, что обычно ответ будет «нет». Поэтому, я считаю, что лучший способ получать гарантировано стабильный и предсказуемый код - это чётко описанный интерфейс для взаимодействий с ядром ОС.
«Конечно, есть разница в разработке драйвера, и какого либо ПО», - говорит представитель Hewlett-Packard,- «Разработчик должен иметь доступ к расширению функций ядра, при чём чёткий и описанный (то есть как, например, для драйвера принтера), хотя возможно и не должен - для решения данного вопроса в Windows x64 и существует технология подписи кода, имеющего доступ к расширению ядра». Конечно, это всего лишь мои собственные мысли по поводу «гарантированного ПО», но недавно моё мнение очень сильно укрепилось – после того, из цикла статей «What were they thinking?» я прочитал «Antivirus gone wrong», в последнем номере e-zine Uninformed. Skywing был соавтором реверсного инженеринга PatchGuard`а, совершенного год газад, и автором статьи «Обход PatchGuard в Windows x64» также размещенной в Uninformed, и основаной в большей частью на документы касающиеся безопасности в Windows Vista. Выдержка из этой статьи, специально чтобы заинтересовать вас в её прочтении: «…В ПО по обеспечению безопасности, в почти всех проданных на сегодняшний день ПК, были внесены серьёзные изменения. Большинством ПК, на сегодняшний день, владеют люди, которые не имеют опыта и знаний по обеспечению безопасности своего компьютера, и по этому полагаются на защиту предоставляемую только антивирусом или брандмауэром.
Учитывая это, можно было бы ожидать от них идеальной работы в обеспечении безопасности ПК, ведь они являются первой, и, чаще всего единственной, линией обороны. К сожалению, большинство существующего ныне ПО, имеет кучу дефектов, усложняющих взаимодействие между собой (что для большинства разработчиков превращается в огромную проблему), и, что самое худшее – снижает уровень безопасности системы, которые призваны обезопасить.
Обычный сценарий безопасности – установка ПО.
Окей, для лучшего понимания необходимости PatchGuard, рассмотрим стандартный сценарий, и как он пройдёт на разных ПК. Представьте, что пользователь получил программу, которую ему нужно установить. Допустим, друг дал очень полезную утилиту, или это новый красивый screensaver, ну или, наконец, что-то скачанное из Internet, или тот же антивирус.
Инсталляция в Windows x86
Как добросовестный, обеспокоенный безопасностью ПК, пользователь входит под ограниченной учётной записью и пытается проинсталлировать программу, и у него ничего не выходит, так как тут же появляется сообщение, что для инсталляции требуются права администратора. После недолгих колебаний пользователь входит как администратор, и устанавливает программу, которая вносит изменения в таблицу сервисов, чтобы перехватывать определенные системные вызовы, перед тем как ядро ОС их начнёт обрабатывать.
Что теперь она сможет делать? Да, фактически, всё что угодно! И это, определённо, скажется на производительности ПК. Может ввести непредсказуемую нестабильность в код ядра, ну, а если код злонамеренный – безопасность ПК может оказаться под угрозой, при чём трудно обнаружимой.
Если этой программой был антивирус АБВ, будем надеяться что безопасность отныне в норме, но если это игра, мы можем задаться вопросом, зачем ей прописывать себя в ядро ОС? И, еще хуже то, что мы не знаем, прописывала ли она себя в ядро, или нет!
Инсталляция в Windows Vista x86
Как установка пройдёт в данном случае? Всё очень просто. Когда наш пользователь, вошедший под ограниченной учётной записью, попробует установить программу, он увидит окно User Account Control, уведомляющее, о том, что требуются права администратора. После короткого колебания, и введения пароля администратора (при условии, что он есть) установка продолжится, и ядро опять будет пропатчено.
Установка в 64-битных версиях Windows Vista, XP, Server 2003 SP 1
В данном случае установка пройдет чуть-чуть иначе. В том момент, когда по запросу UAC будет введён пароль, и инсталляция продолжится, PatchGuard предотвратит внесение изменений в код ядра. Более того, если установленный драйвер или ПО, не будут иметь подписи (как хотел Symantec) – оно не будет в последствии загружено.
Это большая победа по всем трём основным пунктам (безопасность, надёжность, производительность), что оградит от внедрения в ядро неизвестного, не протестированного надлежащим образом, или, наконец, вредоносного ПО.
Короткий дискусс об обходе PatchGuard
Как уже отмечалось, Skape и Skywing написали статью, по обходу PatchGuard, опубликованную в Uninformed. Мне было очень интересно читать данную статью, и я был поражен ясностью работы PatchGuard по результатам реверсного инжереринга. Я приведу маленькую цитату: «Цель данной статьи, показать невозможность защиты данных, в системе, использующей мониторинг определённой области кода, на привилегированном уровне, равном уровню, на котором находится стороннее ПО».
Основная мысль этой статьи – если у вас есть возможность загрузить какой-либо код в привилегированном режиме, то, как следствие, у вас есть возможность обойти PatchGuard. А ведь это очень серьёзно! Но всё равно, PatchGuard очень полезен при защите от прописывания в ядро не привилегированного кода (пример мы рассмотрели выше). А вот если бы мы могли действительно полностью запретить запуск какого либо кода в привилегированном режиме, полученного не от «Проверенного партнёра». Подождите, но ведь именно для этого и существует технология подписания кода, имеющего доступ к ядру!
Microsoft – вы тоже сторонний производитель!
Итак, если я главный архитектор ядра ОС (которым я, на самом деле, НЕ являюсь) – то мне не хочется, чтобы кто-то мусорил в моём ядре, по указанным уже причинам. И честно говоря, это относится к другим командам в Microsoft, в той же степени, что и к сторонним производителям (я сам в душе кодер, и знаю, что они не любят мой код так же, как и я их, и, что они никогда не будут уважать «красоту» написанного мной кода). Именно поэтому, как только я создам определённые интерфейс - я заставлю всех им пользоваться. И я думаю мой босс (опять же, если бы я был главным архитектором ядра, которым я таки НЕ являюсь) меня бы поддержал в этом начинании. Поэтому я решил кое-что проверить.
Я обратился в команду по разработке безопасности серверной версии ОС с вопросом, имеют ли они доступ к ядру – оказалось что нет. Мне ответили, что в 64-битной версии Vista они используют специальные интерфейсы, в точности как, и сторонние производители. Также мне сообщили о необходимости переиначивания работы некоторых функций в связи с данным нововведением.
После я обратился с тем же вопросом в команду разработчиков встроенного в Vista брандмауэра, и получил тот же ответ. Новая технология, получившая название «Windows Filtering Platform» (которая, по сути, тоже является набором интерфейсов) будет внедрена в Windows Vista, и они точно так должны ею пользоваться.
Осмысление всего вышесказанного.
После долгого исследования PatchGuard, я обнаружил, что по своей сути он похож на другие технологии, например, ASLR. Эта технология, опять же, несовершенна, но она повышает уровень безопасности, устраняя возможность развития стандартных сценариев, типа указанных выше, а остальные – более предсказуемыми. Вместе с другими технологиями по безопасности, представленными в Windows Vista, я чувствую себя намного уверенней и лучше в 64-битной версии, так как она, по сравнению с 32-битной, обеспечивает заметно более высокий уровень безопасности информации на ПК, что очень важный шаг вперёд в этом долгом пути!
Источник:
Перевод: prymara
Комментарии
Я бы не сказал. Человек сделал полный обзор вышеуказанной технологии, и вроде даже неплохой! Лично я даже не которые мелочи узнал, которых не знал раньше.
Качаю я 64х и думаю, зачем я ее качаю? Ведь 70% программ не заработают под ней.
Получили высокую безопасность (и это еще вопрос) + отсутствие программ для этой ОС. Удалю за ненадобностью..
По теме
- Windows Vista официально "мертва"
- Завтра прекращается поддержка Windows Vista
- Остался последний месяц поддержки Windows Vista
- 11 апреля Microsoft прекратит поддержку Windows Vista
- Через год прекращается поддержка Windows Vista
- Microsoft открыла исходный код Open XML SDK
- Баллмер: Longhorn/Vista - моя самая серьезная ошибка
- Сегодня заканчивается бесплатная фаза поддержки Windows Vista и Office 2007
- Microsoft продлила срок поддержки Windows Vista и Windows 7
- Практики обеспечения безопасности Microsoft - лучшие в мире