Выбрать главу

Я уже говорил о вирусах и троянских конях; они распространились потому, что люди обменивались копиями готовых программ (иногда нелегально), не беспокоясь о проблемах безопасности. Антивирусные средства помогли решить проблему, и на протяжении последних 20 лет пользователи безоговорочно доверяли программному обеспечению.

Однако с появлением Интернета эта прочно укоренившаяся вера стала создавать крупные проблемы.

В предыдущем разделе я объяснил, почему появление сетей сделало разрушительные программы более опасными. Там приведены и примеры переносимого кода и связанные с ними проблемы. К сожалению, существуют и более серьезные неприятности.

С появлением модульных программ все больше фрагментов программного обеспечения рассылается по Интернету. Сейчас любое ваше приобретение с большой вероятностью получено с веб-сайта: новый дополнительный модуль для браузера, драйвер для принтера, блестящая утилита или апплет на Java, который делает какие-то классные штучки. Поэтому вам следует задать себе следующие важные вопросы. Надежна ли эта программа? Надежен ли этот веб-сайт? Можно ли быть уверенным, что эта программа будет правильно взаимодействовать с остальным содержимым компьютера? И какая есть защита на случай, если эта программа окажется разрушительной? Редко встречаются пользователи, которые задаются подобными вопросами, но еще реже – те, которые могут на них ответить.

JavaScript, Java и ActiveX

JavaScript, Java, ActiveX и загружаемые дополнительные модули – все они имеют различные модели защиты. Я по очереди расскажу о каждом из них.

JavaScript – это язык сценариев Netscape, при помощи которого можно вставлять фрагменты кода на веб-страницу. Его поддерживают все основные браузеры. Его сходство с Java исчерпывается первыми четырьмя буквами. При помощи программы на JavaScript можно проделывать обычные простые действия: открывать и закрывать окна, изменять формы на веб-страницах, настраивать параметры браузера и т. п. Все, чем докучают некоторые веб-сайты при попытке закрыть их страницы, – это тоже JavaScript[32].

Сам по себе JavaScript достаточно безвреден, но именно он лежит в основе множества атак всех видов, предпринятых за последние несколько лет. Приведу несколько примеров: 1997 год – контроль посещаемости сайтов пользователями; 1998 – чтение случайно выбранных файлов на машине пользователя; тот же 1998 – перехват адреса электронной почты пользователя. Для большинства этих атак требуется слегка обмануть пользователя, заставив его сделать незначительную глупость, но это и не сложно. Недостатки в обеспечении безопасности браузеров, допускавшие такие атаки, были выявлены довольно быстро и устранены. Но регулярно обнаруживаются новые «дыры».

В ActiveX применяется защита при помощи подписывания кода. По сути, у каждого фрагмента кода ActiveX, называемого «control», проверяется цифровая подпись. (Microsoft вводит для этого понятие кода аутентичности.) После этого браузер открывает диалоговое окно и показывает пользователю имя программиста или компании, которые подписали код. Если пользователь соглашается принять код, программа загружается в браузер.

Любой подросток, к которому на вечеринку заявлялись случайные гости не лучшего сорта, знаком с этой проблемой. Безопасность системы полностью находится в руках пользователя. Как только код ActiveX проникает на машину пользователя, он может сделать все что угодно: переформатировать жесткий диск, изменить ваши однодолларовые ставки в тотализаторе на стодолларовые, собрать все ваши полные чувств любовные письма и послать их кинопродюсеру в Лос-Анджелес и пр. и пр.

Microsoft возразила, что подписи, конечно, будут указывать на автора, но это знание будет небольшим утешением человеку, у которого только что «рухнул» компьютер. Это все равно, что обязать преступников носить визитные карточки и перестать запирать двери на замок. «Мы сожалеем, что они вошли в ваш дом, съели всю вашу еду, сломали всю вашу мебель и унесли все ваши ценности. Но, по крайней мере, мы знаем, кто они». Причем в случае Интернета может быть такое уточнение: «Это были два подростка из страны, с которой у США нет договора об экстрадиции. Вам стало легче?» Кроме того, предполагается, что вы сможете определить, какая именно программа из десятков имеющихся у вас на жестком диске вызвала проблемы. Один исследователь показал, что при соединении двух безвредных средств управления ActiveX они способны стать разрушительными; и кто будет виноват в этом случае?

вернуться

32

Как наследие эпохи войны браузеров, имеется две версии JavaScript. Исходная, созданная Netscape, и вариация Microsoft под названием JScript. Они практически идентичны, за исключением объектных моделей браузера (читай: веб-документа) и синтаксиса языка сценариев. Тем не менее далеко не все сайты умеют одинаково работать с обеими моделями. Формально для безопасности это угрозы не представляет, но кто знает… Чем сложнее система, тем она потенциально незащищеннее. – Примеч. ред.