Java, JavaScript и проблема безопасности

Java и JavaScript - это тот раздел безопасности Web, который касается не администраторов и создателей Web серверов, а пользователей и администраторов пользовательских сетей.

Несмотря на сходство в именах Java и JavaScript это два различных продукта. Java - это язык программирования разработанный SunSoft. Java программы прекомпилируются в компактную форму и хранятся на сервере. HTML документы могут ссылаться на миниприложения, называемые Java аплетами. WWW клиенты, которые поддерживают Java апплеты, загружают откомпилированные Java приложения и выполняют их на машине клиента. JavaScript это набор расширений к HTML, интерпретируемых WWW клиентом. В принципе, несмотря на то что JavaScript имеет более длинную историю проблем, связанных с безопасностью, хакерская программа на Java может активно и успешно вывести пользовательскую систему из строя, про JavaScript до сих пор известны только случаи передачи конфиденциальной информации клиента на Web сервер. Java апплеты выполняются на клиентской стороне, а не на серверной, и поэтому увеличивают риск атаки со стороны сервера. Нужно ли беспокоится об этом ?

В Java встроены средства для ограничения доступа к клиентской машине. Апплетам не разрешается выполнять системные команды, загружать системные библиотеки, или открывать системные устройства, такие как диски. Апплетам, в зависимости от WWW клиента или запрещены все дисковые операции ( Netscape ), или почти все ( HotJava ).Апплетам разрешается устанавливать соединение по сети только к серверу, откуда аплет был загружен. Но Drew Dean ( ddean@cs.princenton.edu ) обнаружил, что можно написать апплет, который будет устанавливать соединение к любому компьютеру в интернете, то есть аплет из Интернета, загруженный на вашу локальную машину WWW клиентом может подсоединиться по TCP/IP к любой машине на вашей локальной сети, даже если она защищена через firewall. Эта проблема связана с тем, что Java выполняет верификацию для соединения через Domain.

Name System (DNS). Взломщик, используя свой собственный DNS сервер, может создать некорректную ссылку в DNS, чтобы заставить Java систему считать, что апплету разрешено соединение с компьютером к которому у него нет права подсоединяться. Ошибка была исправлена в Netscape навигаторе 2.01 и JDK 1.0.1.

David Hopwood обнаружил, что загружая апплеты с 2 разных WWW серверов хэкер может нарушить пространство имен Java Virtual Machine. Это позволяет преобразовывать типы переменных друг в друга, преобразовывать целые в ссылки и т.д. В результате апплет может читать и писать локальные файлы, выполнять машинный код. Безо всяких проблем в UNIX может быть создан файл .rhosts. Эта ошибка проявляется, как минимум на HotJava, код может быть написан целиком на Java и быть платформонезависимым.

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

-super внутри try.

-super внутри if.

-cathcer/thrower.

JavaScript - это встроен в Netscape навигатор. Периодически в Netscape навигаторе обнаруживались проблемы с безопасностью в связи с JavaScript, которые Netscape периодически устраняет в новых версиях навигатора. Andy Augustine в своем JavaScript FAQ описывает следующие проблемы:

Ø Чтение пользовательской истории URL - исправлено в Netscape 2.0.

Ø Чтение пользовательского кэша URL - исправлено в Netscape 2.0.

Ø Чтение пользовательского e-mail адреса и передача его по Интернету исправлено в Netscape 2.01.

Ø Получение рекурсивного оглавления файловой системы - исправлено в Netscape 2.01.

Ø Открытие окна размером 1 пиксел, получение URL открытых документов и передача их удаленному серверу. Эта общая проблема сетевых графических систем, имеющая длинную историю. Пользователи x-windows, которые запускают команду `xhost +` без аргументов могут столкнуться с чужим невидимым окошком, которое передает ввод пользователя по Интернету хакеру.

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

· Не пользоваться старыми версиями WWW клиентов, которые поддерживают Java и JavaScript. Производители web клиентов исправляют свои программы, если обнаруживается новая ошибка в безопасности.

· Следить за текущим состоянием дел с безопасностью Java и Javascript. Javasoft имеет страницу, посвященную Java и безопасности. У netscape есть аналогичная страница про JavaScript. Каждый производитель web клиента имеет на своем сервере страницу посвященную безопасности.

Общие правила по защите информации в глобальной сети Internet:

1. При создании web сервера используйте надежный продукт. Используйте web сервер, который подходит под ваши нужды, не обязательно самый всеобъемлющий и модный.

2. Читайте документацию сервера. Недостатки в настройке чаще создают проблемы с безопасностью нежели ошибки в самом сервере.

3. Не забывайте про SSL протокол, если речь идет о коммерческой информации.

4. Заботьтесь о безопасности CGI приложений, так как это части самого сервера. Не забывайте проверять и чужие CGI приложения, если у Вас многопользовательский сервер.

5. Не пользуйтесь старыми версиями Web клиентов с поддержкой Java и JavaScript. Следите за обновлениями.

РАЗДЕЛ 6. ОРГАНИЗАЦИОННО- ПРАВОВОЕ ОБЕСПЕЧЕНИЕ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ