Новые технологии, зарождающиеся в университетских лабораториях, помогут когда-нибудь найти лучшее решение, но это произойдет не ранее, чем через несколько лет. Тем временем модульная программа, вероятно, станет еще большей проблемой безопасности. Все больше и больше программных пакетов обладают способностью к самоусовершенствованию, то есть регулярно загружают новые модули. Например, Internet Explorer 4.0 и последующие версии дают возможность подписаться на обновление программного обеспечения. Если вы этим пользуетесь, то программа автоматически обновляется, загружая новые модули с веб-страницы корпорации Microsoft. Это очень полезное свойство, если не пускать дело на самотек. В противном случае вы можете обнаружить, что среди ночи ваш компьютер автоматически подсоединяется к Интернету. Как может на это отреагировать пользователь, видно по следующему отрывку из программы новостей:
«Ранним утром я полез в холодильник, и вдруг услышал, что компьютер сам подключился к Интернету, – рассказал один пользователь, занимающийся бета-тестированием
???
повредить его рабочим взаимоотношениям с Microsoft. – Я очень испугался и вытащил телефонную вилку из розетки».
Здесь нет ничего постыдного – пользователь просто не осознал, что происходит. Но большинство компьютерных пользователей не имеют ни малейшего представления, что происходит внутри их компьютеров. И если они привыкли, что их компьютер куда-то звонит среди ночи, они могут однажды с удивлением обнаружить, что какая-то гнусная программа резко увеличила сумму телефонного счета, позвонив по 900 номерам в Молдавии.
Переносимый код
Если задуматься, использование программ, написанных кем-то другим, – это всегда риск. Вы принимаете на веру, что программист не злоумышленник и что программы, которые вы запускаете, работают так, как надо. (Мы снова вернемся к проблемам человеческого фактора в главе 17.) На заре существования вычислительной техники пользователи просто не имели возможности пользоваться чужими программами. Программы нужно было писать или, по крайней мере, компилировать для каждого компьютера особо.
Появление персональных компьютеров и таких программ, как VisiCalc, вынуло компьютеры из рук инженеров и поместило их на столы пользователей. Пользователи стали доверять готовым прикладным программам, они, не задумываясь, запускали программу, не имея представления о ее содержимом, поскольку не обладали достаточной для этого квалификацией.
Я уже говорил о вирусах и троянских конях; они распространились потому, что люди обменивались копиями готовых программ (иногда нелегально), не беспокоясь о проблемах безопасности. Антивирусные средства помогли решить проблему, и на протяжении последних 20 лет пользователи безоговорочно доверяли программному обеспечению.
Однако с появлением Интернета эта прочно укоренившаяся вера стала создавать крупные проблемы.
В предыдущем разделе я объяснил, почему появление сетей сделало разрушительные программы более опасными. Там приведены и примеры переносимого кода и связанные с ними проблемы. К сожалению, существуют и более серьезные неприятности.
С появлением модульных программ все больше фрагментов программного обеспечения рассылается по Интернету. Сейчас любое ваше приобретение с большой вероятностью получено с веб-сайта: новый дополнительный модуль для браузера, драйвер для принтера, блестящая утилита или апплет на Java, который делает какие-то классные штучки. Поэтому вам следует задать себе следующие важные вопросы. Надежна ли эта программа? Надежен ли этот веб-сайт? Можно ли быть уверенным, что эта программа будет правильно взаимодействовать с остальным содержимым компьютера? И какая есть защита на случай, если эта программа окажется разрушительной? Редко встречаются пользователи, которые задаются подобными вопросами, но еще реже – те, которые могут на них ответить.
JavaScript, Java и ActiveX
JavaScript, Java, ActiveX и загружаемые дополнительные модули – все они имеют различные модели защиты. Я по очереди расскажу о каждом из них.
JavaScript – это язык сценариев Netscape, при помощи которого можно вставлять фрагменты кода на веб-страницу. Его поддерживают все основные браузеры. Его сходство с Java исчерпывается первыми четырьмя буквами. При помощи программы на JavaScript можно проделывать обычные простые действия: открывать и закрывать окна, изменять формы на веб-страницах, настраивать параметры браузера и т. п. Все, чем докучают некоторые веб-сайты при попытке закрыть их страницы, – это тоже JavaScript [32].
Читать дальше