Рис. . Архитектура ОС Windows CE.
Архитектура Windows
Вирусы, троянские кони и другие вредоносные программы поражают настольные компьютеры с Windows по целому ряду причин, свойственных Windows и чуждых Linux:
Windows только недавно эволюционировала от однопользовательской модели к многопользовательской.
Windows по своей архитектуре является монолитной, а не модульной системой.
В Windows слишком широко используется RPC-механизм.
Windows фокусируется на знакомом графическом интерфейсе для настольных компьютеров.
Windows только недавно эволюционировала от однопользовательской модели к многопользовательской
Критики Linux любят повторять, что Linux — это "устаревшая" технология. Ирония же заключается в следующем: одна из самых больших проблем Windows в том, что именно этой операционной системе никак не удается избавиться от своей "устаревшей" однопользовательской архитектуры.
В течение долгого времени происхождение от однопользовательской системы мешало Windows. Система Windows изначально была разработана так, чтобы обеспечить и пользователям, и приложениям свободный доступ ко всей системе, а это значит, что кто угодно мог скомпрометировать критичную системную программу или файл. Кроме того, это означает, что вирусы, троянские и другие вредоносные программы могли скомпрометировать любую системную программу или файл, потому что Windows не изолировала пользователей и приложения от критичных областей операционной системы.
Операционная система Windows XP стала первой версией Windows, в которой проявились существенные результаты усилий по изолированию пользователей от системы, так что в Windows XP каждый пользователь имеет свои собственные личные файлы и ограниченные системные полномочия. Но из-за этого многие Windows-приложения, разработанные для предыдущих версий, перестали функционировать, поскольку раньше они могли получать доступ и модифицировать программы и файлы, доступ к которым теперь разрешен только администратору. Именно поэтому в Windows XP предусмотрен режим совместимости, то есть режим, который позволяет программам функционировать так, будто они работают в прежней незащищенной однопользовательской среде. Кроме того, именно по этой причине каждая новая версия Windows несет в себе угрозу отказа приложений, работавших в предыдущих версиях. Поскольку Microsoft вынуждена модифицировать Windows, чтобы она "вела себя" как многопользовательская система, новые ограничения выводят из строя приложения, которые функционировали при отсутствии этих ограничений.
Windows XP — это прогресс, но и Windows XP нельзя назвать настоящей многопользовательской системой. Например, Windows XP поддерживает функцию, которую Microsoft называет "Fast User Switching" (быстрое переключение пользователей), она же позволяет двум и более пользователям входить в систему Windows XP на одном компьютере в одно и то же время. Однако есть загвоздка. Это возможно тогда и только тогда, когда данный компьютер не принадлежит какому-либо домену сети Windows. Причина в том, что сеть Microsoft разработана в предположении, что пользователи входят в сеть только со своего собственного компьютера. Microsoft либо не может, либо не желает внести необходимые изменения в операционную систему и "конструкцию" сети, чтобы адаптировать этот сценарий к возможностям Windows XP.
Windows Server 2003 — это следующее приближение к настоящей многопользовательской системе, но даже в Windows Server 2003 не удалось ликвидировать все бреши в системе защиты, унаследованные от однопользовательской системы. Именно поэтому в Windows Server 2003 пришлось отключить использование по умолчанию многих функций web-навигатора (например, ActiveX, написание сценариев и др.). Если бы Microsoft перестроила эти функции для работы в безопасном и изолированном режиме в настоящей многопользовательской среде, они не создавали бы серьезных угроз, перед которыми по-прежнему беззащитна Windows.
Windows по своей архитектуре является монолитной, а не модульной системой
Монолитная система — это система, в которой большинство функций интегрировано в единый модуль. Противоположностью такой системе является система, в которой функции распределены по нескольким уровням, причем каждый уровень имеет ограниченный доступ к другим уровням.
Хотя часть недостатков Windows — "наследство" ее исходной однопользовательской архитектуры, другие ее недостатки — прямое следствие обдуманных проектных решений, таких как монолитная архитектура (интегрирование большинства функций в ядро операционной системы). Компания Microsoft фактически вытеснила web-навигатор Netscape, интегрировав Internet Explorer в свою операционную систему так тесно, что не использовать IE стало практически невозможно. Нравится это пользователю или нет, но Internet Explorer вызывается при использовании справочной системы Windows, Outlook и многих других приложений как Microsoft, так и независимых производителей. Конечно, коммерческие интересы Microsoft требуют, чтобы использование каких-либо иных продуктов, кроме Internet Explorer, было крайне затруднительным. Microsoft успешно превращает конкурирующие продукты в ненужные, интегрируя в свою операционную систему все больше и больше сервисов, предоставляемых такими продуктами. Но в результате этого подхода получается монстр из сложным образом взаимодействующих сервисов (то есть, по определению, монолитная система).
Взаимозависимости такого рода имеют два неприятных каскадных побочных эффекта. Во-первых, в монолитной системе каждая брешь в какой-либо одной части системы проявляется во всех сервисах и приложениях, зависящих от этой части системы. Интегрировав Internet Explorer в операционную систему, Microsoft создала систему, в которой любая брешь в Internet Explorer подвергает настольный компьютер с Windows угрозам, реализация которых может нарушить не только работу web-навигатора, но и весьма далеких от него объектов. Следовательно, одна-единственная брешь в Internet Explorer проявляется в бесчисленном множестве других приложений, многие из которых используют Internet Explorer неявным для пользователя образом, что дает этому пользователю ложное ощущение безопасности.
Такая архитектурная модель оказывает намного более глубокое воздействие, чем обычно представляют. Так, в монолитной системе уязвимости в защите оказываются более критичными, чем следовало ожидать.
Проиллюстрировать это поможет простая аналогия. Представим себе идеально устроенную операционную систему, которая состоит из трех сфер: одна — в центре; вторая, большего размера, охватывает первую; а третья сфера охватывает две внутренние. Конечный пользователь "видит" только внешнюю сферу. Это уровень, где пользователь запускает приложения, например, текстовые процессоры. Текстовые процессоры используют необходимые функции, предоставляемые второй сферой, например, средства визуализации графических изображений или форматирования текста. Эта вторая сфера (ее специалисты обычно называют "пользовательскими процессами") не имеет прямого доступа к критичным частям системы. Чтобы выполнить свою работу, она должна запросить разрешение от самой внутренней сферы. Внутренняя сфера выполняет самые важные функции, поэтому имеет непосредственный доступ ко всем критичным частям системы. Она управляет дисками, памятью и всем остальным. Эта сфера называется "ядро" и является сердцем операционной системы.
В случае вышеописанной архитектуры брешь в программах графического отображения не может нанести глобального ущерба компьютеру, потому что функции визуализации не имеют прямого доступа к наиболее критичным частям системы. Даже если пользователь загрузит в текстовый процессор изображение с внедренным вирусом, этот вирус не сможет повредить ничего, кроме собственных файлов пользователя, поскольку функция графического отображения находится вне центральной сферы и не имеет доступа ни к одной из критичных частей системы.
Проблема Windows заключается в том, что в ней не соблюдаются разумные конструкторские принципы разделения функций по соответствующим уровням, описанным выше. Windows вкладывает слишком много функций в ядро, центральную сферу, то есть туда, где можно причинить самый большой ущерб. Например, если интегрировать функции графического отображения в центральную сферу (ядро), эти функции получат возможность повредить всю систему. Таким образом, как только обнаружится брешь в алгоритме графического отображения, чрезмерно интегрированная архитектура Windows облегчит использование этой бреши для получения полного контроля над системой или для разрушения всей системы.
Наконец, монолитная система нестабильна по своей природе. Когда в системе так много взаимосвязей, изменение одной из частей этой системы порождает множество угроз. Единственное изменение в системе может оказать (и обычно оказывает) каскадное воздействие на все сервисы и приложения, которые зависят от этой части системы. Именно поэтому пользователи Windows трепещут при мысли об установке программных коррекций и обновлений. Обновления, исправляющие одну часть Windows, часто нарушают работу других сервисов и приложений. В качестве иллюстрации можно привести следующий факт: для пакета обновлений Windows XP service pack 2 уже составлен постоянно растущий список случаев, когда его установка привела к выходу из строя сторонних приложений. Это естественное явление в монолитной системе — любое изменение в одной части механизма влияет на весь механизм и на все приложения, которые зависят от этого механизма.
В Windows слишком широко используется RPC-механизм
Аббревиатура RPC означает "удаленный вызов процедуры" (Remote Procedure Call). RPC — это то, что происходит, когда одна программа отправляет через сеть указание другой программе выполнить какое-либо действие. Например, одна программа может использовать RPC, чтобы дать другой программе указание рассчитать среднюю стоимость чая в Китае и вернуть результат. Удаленным вызовом процедуры этот механизм называется потому, что не имеет значения, функционирует ли "другая программа" на том же компьютере, на соседнем, или где-то в Интернете.
RPC-механизмы — это потенциальная угроза безопасности, поскольку их предназначение — позволить компьютерам, находящимся где-то в сети, давать данному компьютеру указания выполнить те или иные действия. Как только обнаруживается брешь в программе, разрешающей использование RPC-механизма, у любого, кто располагает подключенным к сети компьютером, появляется возможность использовать эту брешь, чтобы заставить уязвимый компьютер выполнить какие-либо действия. К сожалению, пользователи Windows не могут заблокировать RPC-механизм, так как Windows использует его, даже если компьютер не подключен к сети. Многие сервисы Windows устроены именно так. В некоторых случаях можно блокировать RPC-порт на межсетевом экране, но Windows так широко использует RPC-механизмы в основных функциях, что подобная блокировка не всегда возможна. Удивительно, но некоторые из наиболее серьезных уязвимостей в Windows Server 2003 (см. Таб. 1) — следствие брешей в самих RPC-функциях Windows, а не в приложениях, которые их используют. Самый распространенный способ использовать уязвимость, связанную с RPC-механизмом — атаковать сервис, использующий RPC, а не сам RPC-механизм.
Важно отметить, что RPC-механизмы не всегда необходимы, отчего становится еще непонятнее, почему Microsoft так широко их использует. Предположим, требуется создать web-сайт, используя два сервера. Один сервер будет работать в качестве сервера базы данных, второй — в качестве web-сервера. В этом случае серверу базы данных необходимо использовать RPC, потому что web-сервер находится на отдельном компьютере и должен иметь возможность доступа к серверу базы данных через сетевое подключение. (Даже в этом случае следует сконфигурировать сервер базы данных так, чтобы он "слушал" только данный web-сервер, но не другие компьютеры). Если же и сервер базы данных, и web-сервер функционируют на одном компьютере, использование RPC-механизмов на сервере базы данных не только не обязательно, но и нежелательно. Web-сервер должен иметь прямой доступ к серверу базы данных, потому что они оба функционируют на одном компьютере. Ни технических, ни логических причин подключать к сети сервер базы данных нет, поскольку такое подключение создает лишнюю угрозу безопасности.
Windows XP
Это новая OC от Microsoft, начиная с которой сделана попытка объединить две, ранее существовавшие независимо, линейки W9x и NT. Первоначально этот проект назывался Whisler, но сейчас он разделился на две линии, WindowsXP, позиционирующуюся на замену W9x и W2kPro, и WindowsNET, позиционирующуюся на замену NT Server всех сортов. Вне зависимости от названия, все они является прямыми наследниками Windows2000, и продолжателями линейки WindowsNT. Этот факт и определяет основные особенности WindowsXP. Это полностью 32-разрядная ОС с приоритетной многозадачностью. В её основе лежат те же принципы, на которых базировались все NT. Это 1. Совместимость (Compatibility). Система может иметь привычный интерфейс ОС семейства Windows, с некоторыми добавлениями и расширениями, поддержку файловых систем NTFS5, NTFS4, FAT16 и FAT32. Большинство приложений, написанных под MSDOS, W9x, NT4, а также некоторые программы под OS/2 и POSIX запускаются и функционируют без проблем. При проектировании NT учитывалась возможность работы системы в различных сетевых средах, поэтому в поставку входят средства для работы в Unix- и Novell-сетях. 2. Переносимость (Portability). Система работает на различных процессорах семейства x86 производства Intel и AMD. Уже существует 64-битная версия WindowsXP и WindowsNET, предназначенная для работы на Intel Itanium. Реализация поддержки процессоров других архитектур возможна, но потребует некоторых усилий. 3. Масштабируемость (Scalability). В WindowsXP реализована поддержка технологии SMP. В WindowsNET Advanced Server и Datacenter Server кроме этого есть поддержка COW (Cluster Of Workstations). 4. Система безопасности (Security). Реализована привычная для NT система безопасности на уровне пользователей. 5. Распределённая обработка (Distributed processing). WindowsXP имеет встроенные в систему сетевые возможности, что обеспечивает возможность связи с различными типами компьютеров-хостов благодаря наличию разнообразных транспортных протоколов и технологии "клиент-сервер". 6. Надёжность и отказоустойчивость (Reliability and robustness). Архитектура ОС защищает приложения от повреждения друг другом и самой операционной системой. При этом используется отказоустойчивая структурированная обработка особых ситуаций на всех архитектурных уровнях, которая включает восстанавливаемую файловую систему NTFS и обеспечивает защиту с помощью встроенной системы безопасности и усовершенствованных методов управления памятью. 7. Локализация (Localization). Система предоставляет возможности для работы во многих странах мира на национальных языках, что достигается применением стандарта ISO Unicode. 8. Расширяемость (Extensibility). Благодаря модульному построению системы становится возможно добавление новых модулей на различные архитектурные уровни ОС.