Безопасность в Internet- Intranet

       

Как защищены Java-аплеты?


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

  • читать, изменять, уничтожать и переименовывать локальные файлы;
  • создавать локальные директории и читать их содержимое;
  • проверять существование и параметры определенного файла;
  • осуществлять доступ по сети к удаленному компьютеру;
  • получать список сетевых сеансов связи, которые устанавливает локальный компьютер с другими компьютерами;
  • открывать новые окна без уведомления пользователя (это необходимо для предотвращения "эмуляции" аплетом других программ);
  • получать сведения о пользователе или его домашней директории;
  • определять свои системные переменные;
  • запускать локальные программы;
  • выходить из интерпретатора Java;
  • загружать локальные библиотеки;
  • создавать потоки, которые не перечислены в ThreadGroup (класс, управляющий выполнением потоков - различных частей программы) этого аплета, и управлять ими;
  • получать доступ к ThreadGroup другого аплета;
  • определять свои объекты Class-Loader (Загрузчик Java-объектов) и SecurityManager (Диспетчер безопасности для аплетов);
  • переобозначать системные объекты ContentHandlerFactory, SocketImplFactory и URLStreamHandler-Factory (эти классы управляют сетевой работой Java);
  • получать доступ к любой упаковке, отличной от стандартных;
  • определять классы, которые входят в локальную упаковку.

Эти правила обеспечивают следующие компоненты Java-технологии.

  • Собственно виртуальный Java-процессор, который постоянно контролирует свое состояние.
  • Загрузчик аплетов и Java-программ, который контролирует загружаемые коды.
  • Диспетчер безопасности (Secu-rityManager), контролирующий и блокирующий опасные действия аплетов.


В классе SecurityManager перечислены методы, которые используются системой для контроля действий аплета в зависимости от характеристик окружающей среды. Программа, которая применяется для просмотра аплета, создает подкласс SecurityManager, который и реализует необходимую политику безопасности. Ссылка на этот SecurityManager записывается в объекте System.

Еще один механизм безопасности встроен в загрузчик аплетов и программ (ClassLoader). Браузер переопределяет этот класс и реализует свои собственные правила работы с сетевыми протоколами. Одна из основных функций загрузчика объектов - разделение пространства имен разных аплетов и операционной системы, что позволяет избежать их взаимного влияния.

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


  • соответствует ли версия полученного блока версиям остальных элементов системы;
  • сохранен ли формат исполняемого байт-кода;
  • соответствует ли программа спецификации конкретного виртуального Java-процессора;
  • может ли возникнуть переполнение или исчерпание стека;
  • все ли регистры Java-процессора используются правильно;
  • нет ли некорректных преобразований типов.


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

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


Содержание раздела