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

Когда в Sun Microsystems разрабатывали технологию исполнения Java-апплетов, то были вынуждены — отчасти, конечно, — поступиться своим принципом: «Сеть — это компьютер». Фактически это лозунг означает, что сетевые приложения должны работать по тем же самым правилам, что и локальные приложения, которые не используют сетевые соединения. Именно на отрицании этого принципа и основана модель защиты Java, которая называется «песочницей». Она затрудняет использование Java-приложений для удаленного взлома настольных компьютеров, КПК и даже мобильных телефонов.

Валерий Коржов — обозреватель еженедельника Computerworld Россия в области информационной безопасности. С ним можно связаться по электронной почте по адресу oskar@osp.ru

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

Однако Сеть — действительно не компьютер; ее невозможно контролировать «от и до». В Сети встречаются злоумышленники, которые стараются воспользоваться чужими компьютерами для собственных нужд. Для достижения своих целей они используют проблемы безопасности, которые возникают, как правило, на стыке технологий. Для Java таким коварным соседом оказался JavaScript, который применяется в тех же браузерах для «оживления» Web-страниц, интеграции в них интерактивных элементов.

В частности, летом этого года исследователем Юко Пиннонином из компании iDEFENSE была обнаружена серьезная проблема в Java-машине, выпускаемой Sun Microsystems. Впрочем, двумя годами ранее Юко уже исследовал Java-машину от Microsoft и нашел в ней ряд дефектов. Сейчас Microsoft не поддерживает Java, переключившись на схожую технологию исполнения кода, реализованную в рамках платформы .Net. В 2004 году Юко передал в Sun сообщение о том, что нашел способ обойти ограничения Security Manager.

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

Кроме Пиннонина, проблемы безопасности Java заинтересовали и другого исследователя — Адама Гоудиака из Познаньского суперкомпьютерного центра (Польша). Он обнаружил аналогичную ошибку обхода защиты в платформе J2ME, которая предназначена для мобильных телефонов. Эти сведения он опубликовал в конце октября на конференции Hack in the Box, рассказав, что взломал с помощью найденной уязвимости собственный телефон Nokia и получил доступ к адресной книжке и механизму рассылки SMS-сообщений. Он же заявил о том, что схожие проблемы могут возникнуть у владельцев телефонов других производителей, в том числе Siemens, Panasonic, Samsung и Motorola. Так что Java, завоевав заслуженную популярность своей устойчивостью к атакам, рискует теперь повернуться к мобильным пользователям другой стороной.