Уязвимость в технологии Java-расширений

23/11/2004 12:41

Jouko Pynnonen из iDEFENSE, Inc. обнаружил уязвимость в технологии обработки так называемых Java-расширений (они же - плагины - Java Plug-in). Эти расширения являются частью Java 2 Runtime Environment (JRE) и предназначены для обеспечения взаимодействия между браузером и платформой Java. Подобные соединения позволяют запустить апплеты, которые размещены на Вэб-сайте внутри браузера. Ошибка, которая обнаружена в механизме обработки подобных расширений (разработан и поддерживается Sun), позволяет удалённому атакующему обойти защиту "песочниц" Java (sandbox) и обойти ограничения безопасности внутри апплетов Java. Как пишет автор уязвимости, существует определённое количество частных Java-пакетов внутри виртуальной машины Java (JVM). В нормальных условиях ограничения в системе безопасности предотвращают доступ апплетов к подобным пакетам. При этом при попытке доступа к подобным пакетам формируется сообщение 'AccessControlException' (если сам пользователь не разрешит доступ этих апплетов). Проблема существует в механизме управления обменом данными между Java и Javascript при работе браузера с использованием технологии плагинов. В результате, используя код Javascript, возникает возможность загрузки небезопасного класса, который в обычной ситуации не может быть загружен Java-апплетом. Успешная эксплуатация уязвимости позволяет удалённому атакующему выполнить вредоносный апплет, который поолучает доступ к системным файлам и может загрузить и выполнить произвольный файл через сеть. Так как JRE применяется на многих платформах и браузерах, возникает возможность создания кросс-платформенного и браузеро-независимого кода эксплоита. Уязвимость проверена и подтверждена в J2SE версий 1.4.2_01, 1.4.2_04. Для временного устранения уязвимости рекомендуется отключить Java или JavaScript, так как уязвимость связана с взаимодействием этих двух компонентов. Также возможно использование виртуальных машин Java других разработчиков, в частности, Microsoft VM (как ни странно). Уязвимость устранена в выпущенной недавно J2SE 1.4.2_06.
Описание