Согласно академической работе, полученной недавно Тестовым центром PC Week Labs, модель безопасности Java может быть ненадежна в принципе. Результаты, изложенные в статье, были также представлены на конференции National Information Systems Security, прошедшей в Балтиморе в октябре.
Марк Ладью, имеющий степень доктора прикладной математики, делает вывод, что многие утверждения относительно безопасности Java неверны, если файлы Java-классов (например, Java-аплеты) генерируются чем-либо кроме Java-компилятора.
Если факты подтвердятся, то разрекламированная непревзойденность системы безопасности Java при использовании непроверенного кода (по сравнению с другими технологиями, использующими активные компоненты, например ActiveX) будет поставлена под вопрос.
Компании подвергаются гораздо большему риску изнутри, из области, находящейся за брандмауэром, чем снаружи. Приложения, расположенные на общедоступных страницах Web, как правило, не имеют необходимых привилегий для проведения успешной атаки.
Пока идет обсуждение вопросов, поднятых в статье, корпоративным разработчикам лучше защитить свои файловые системы, установив соответствующие права доступа к файлам с помощью шифрования и других средств, а не надеяться исключительно на защиту со стороны Java.
Статья Ладью была тщательно проверена группой рецензентов и только после этого принята для представления на конференции ее спонсорами - National Computer Security Center и National Institute of Standards and Technology.
Ли Гонг, разработчик архитектуры безопасности из JavaSoft, подразделения фирмы Sun Microsystems, утверждает, что заявления Ладью основаны на ошибках в ранних версиях Java. Ладью же считает, что его выводы применимы даже к абсолютно корректной реализации опубликованной в настоящее время спецификации Java.
Предполагается, что безопасность кода и структур данных Java может быть усилена за счет использования процедуры проверки виртуальной машиной Java файла класса во время его загрузки. Подобная система может, например, выявить ситуацию, когда один тип данных используется в качестве другого (операция, которая обычно приводит к неправильным результатам).
В технологии, получившей название “теорема”, проверяется, не использует ли программа незаконные операции. Например, “теорема” может отслеживать попытки получить значение пустой структуры данных.
В других языках программирования подобные попытки получить значение несуществующей переменной приводят к ошибке “выход за нижнюю границу стека” с абсолютно непредсказуемыми последствиями.
Чтобы убедиться в безопасности кода, система проверки не исследует сознание программиста. Используемая ею информация содержится в файле Java-класса, т. е. в полях данных, формат которых полностью открыт.
Ладью считает, что поля в файле класса можно изменить таким образом, что система проверки не сумеет обнаружить их некорректность, зато откроется дорога тому, о чем ярые поборники Java предпочитают не думать. По его мнению, “хакер, немного знакомый с программированием на Java”, может легко вставить новый код в файл класса, не вызвав подозрений у системы проверки.
“Когда дело доходит до исполнения двоичного кода Java, все ставки уже сделаны”, - заявляет Ладью. Ли Гонг из JavaSoft с этим категорически не согласен: “Мы не считаем, что байт-код не защищен”.
Даже с учетом этих сомнений модель безопасности Java предпочтительнее ничем не ограниченного доступа из компонентов ActiveX. “Ничто не является абсолютно безопасным. Ошибки и бреши в системе защиты Java еще раз показали это, - заявил менеджер по ИС крупной финансовой организации из Нью-Йорка. - Однако я не колеблясь выбрал бы Java, а не ActiveX”.
Ситуация прояснится вскоре после того, как сообщество разработчиков получит новые инструменты создания двоичного Java-кода. (Одна подобная система для работы с двоичным кодом, Jasmin, распространяется издательством “О’Рейли” вместе с книгой Джона Мейера и Троя Даунинга “Виртуальная машина Java”.) Скоро разработчики смогут самостоятельно выяснить, являются ли предостережения Ладью чем-то большим, чем просто академическая гипотеза, и обоснованы ли заявления JavaSoft о надежности системы безопасности Java.
Питер Коффи (PC Week Labs)
Маленький магазинчик ужасов Java
Галерея монстров
доктора Ладью
www.math.gatech.edu/~mladue/HostileApplets.html
www.math.gatech.edu/~mladue/
SourceCode.html