Следующим рубежом в области создания корпоративного ПО вполне могут оказаться насыщенные интернет-приложения (Rich Internet Applications, RIA), которые не обязательно должны исполняться в браузере и свободны от ограничений, накладываемых интерфейсом пользователя в этой вычислительной среде. Корпоративные программисты неосторожно занялись написанием обычных интернет-приложений, прежде чем стали очевидны весьма серьезные недостатки данной платформы с точки зрения безопасности. В результате многие организации поняли, что ступили на скользкий путь, поскольку браузеры, инструменты и серверы имеют бреши в системах защиты.

А что же RIA? Является ли эта платформа более безопасной, или насыщенные среды открывают более широкие возможности для создателей вредоносного кода? Разработка и развертывание защищенных RIA, как и локальных программ и интернет-приложений, в значительной мере зависит от грамотного менеджмента и политики устранения недостатков ПО, а также от тщательного учета встроенных в эти платформы функций обеспечения безопасности.

Имеется немало платформ RIA, но некоторой популярностью пользуются только три из них: Adobe AIR, Microsoft Silverlight и Oracle JavaFX. Может быть, вы полагаете, что Adobe Flash и Oracle Java также представляют собой платформы RIA? Но только три названных продукта специально предназначены для разработки RIA. Первый из них базируется на Flash и браузере с открытым исходным кодом Webkit, второй — на .NET framework, а третий — на Java.

Adobe AIR и JavaFX были созданы всего несколько лет назад. (Хотя вы будете правы, если скажете, что Java обеспечивает разработку RIA с 1994 г.) Главным нововведением в JavaFX является упрощенный язык сценариев, а в Silverlight 4 — приложения, запускаемые из браузера.

Вопрос безопасности

Три названных RIA сохраняют многие, если не все, недостатки защиты своих базовых платформ. Первое, что должно вас волновать, это состояние безопасности платформы.

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

Тем не менее на протяжении года или двух Adobe предприняла целый ряд мер для повышения защиты своих продуктов (из которых наиболее известен Reader), и это принесло плоды. Если вы подойдете к развертыванию AIR, Flash и соответствующих приложений с должным вниманием и добросовестностью, то можете чувствовать себя защищенным.

Достижения Flash за последние годы выглядят не слишком обнадеживающе с точки зрения безопасности. Было обнаружено и, как правило, устранено множество уязвимостей. Нетрудно найти программы-эксплойты для их использования. Их популярность легко объяснима: Flash очень часто можно найти на настольных ПК, может быть, даже чаще, чем Windows.

Браузер Webkit хотя и не привлекает такого же внимания, в последние годы тоже относится к числу рекордсменов по количеству уязвимостей платформы, причём некоторые из них могут быть использованы при посредстве вашего приложения.

Java тоже не блещет успехами в области безопасности. Поскольку данная технология используется большинством настольных ПК, она привлекает пристальное внимание создателей эксплойтов. Правда, в JavaFX была обнаружена лишь одна уязвимость. Но это не должно успокаивать, поскольку приложения JavaFX могут обращаться к Java и наследовать соответствующие проблемы.

Наиболее благополучной из трех рассматриваемых технологий выглядит Silverlight. Обнаружено лишь три слабых места, два из них совсем недавно. Трудно сказать, каково общее число выявленных в .NET framework уязвимостей, которые способны отразиться на Silverlight, но, вероятно, оно не превышает двенадцати, включая три бреши непосредственно в Silverlight.

Во всех трех случаях платформы RIA имеют мало уязвимостей, а JavaFX — вообще ни одной. Но при наличии слабых мест в защите ваших собственных приложений они могут открыть доступ к использованию уязвимостей базовых платформ — Flash, .NET и Java.

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

Распространение неисправленных версий — проблема общая

Все три платформы, о которых идёт здесь речь, имеют общий недостаток — распространение устаревших, неисправленных версий несмотря на то, что самый верный путь к прочной безопасности заключается в использовании клиентами новейших вариантов ПО. В этом отношении Microsoft и Adobe проявляют больше заботы о пользователях, чем Oracle.

Adobe снабжает их процедурами и инструментами, позволяющими автоматизировать процесс обновления и управления им с помощью стандартных механизмов групповой политики. Silverlight не только обладает собственным механизмом обновления, но и может обновляться при посредстве сервиса Windows Server Update Services (WSUS).

Java располагает механизмом автоматического обновления и может устанавливаться без участия пользователя. Однако Oracle не предоставляет версию MSI, что затрудняет управление. Если у вас имеется полноценная система управления “заплатками”, это упростит управление любыми продуктами.

Имеются и другие проблемы с управлением, не имеющие отношения к установке обновлений. В вашем распоряжении всего несколько вариантов их решения. При работе с Silverlight можно воспользоваться групповыми политиками для урегулирования следующих вопросов: разрешить ли клиентам просматривать контент, связанный с управлением цифровыми правами (digital rights management, DRM); устанавливать ли обновления автоматически, выдавать ли соответствующее приглашение или не обновлять ПО вовсе; предоставить ли Silverlight доступ к веб-камере и микрофону; задействовать ли групповую передачу по протоколу UDP (user datagram protocol) и, что самое важное, допускать ли инсталляцию надежных приложений. Такие приложения могут получать доступ к локальным системным ресурсам, например к файловой системе. Подробности можно узнать из руководства Silverlight Deployment Guide.

Документация Adobe Flash Player Administration Guide for Flash Player 10.1 представляет собой кладезь информации, касающейся управления инсталляцией (включая конфигурирование SMS), форматов файлов и сетевых протоколов, используемых в данном продукте. Установив на клиентских системах файл mms.cfg, вы можете централизованно управлять защитой и различными настройками, в том числе “белым списком” доменных имен и IP-адресов, с которыми (и ни с какими другими) Flash/AIR может обмениваться информацией.

Информации, касающейся специально безопасности AIR, тоже в избытке, начиная с таких руководств, как AIR Security Overview и AIR Administrator’s Guide. Несколько удивляет, что все приложения AIR должны иметь подписанный код, хотя можно использовать подписанный сертификат. Это дает администраторам возможность блокировать непроверенный код. Приложения AIR запускаются в “песочницах”, напоминающих “песочницы” Flash.

Для управления Java можно использовать продукты сторонних производителей, а собственные возможности в этой области весьма ограничены. Имеется насыщенный API-интерфейс JMX (Java Management eXtensions) на случай, если вы захотите создать свой собственный.

Все три платформы по умолчанию исполняют программы в “песочнице” с ограниченными функциями, но позволяют приложениям расширять полномочия для получения доступа к файловой системе и другим ресурсам. Приложения Flash можно настроить таким образом, чтобы они воспринимали определенный контент как заслуживающий доверия, начиная с выбранных файлов или директорий и далее до полного доверия к любому контенту. Это, конечно, рискованно, но приложениям иногда приходится доверять.

В Silverlight надежные приложения также могут получать доступ к локальной файловой системе и через COM взаимодействовать с библиотеками своего кода. Это позволяет вам использовать существующее ПО для выполнения основных операций, а Silverlight — для тех, которые требуют участия пользователя. Проверенные приложения JavaFX, как и все приложения Java, должны иметь цифровую подпись. Если вы не подпишете приложение, пользователь подвергнется граду вопросов относительно безопасности. А коль оно подписано, пользователю достаточно один раз сообщить, что он доверяет автору программы.

Понятно, что все три платформы имеют свои сильные стороны, но с точки зрения безопасности ситуация представляется довольно туманной. Основываясь на опыте использования в реальных условиях, можно со всей определенностью сказать, что позиции Silverlight выглядят наиболее сильными. Но это может быть связано с отсутствием у злоумышленников интереса к данному продукту в связи с тем, что ему принадлежит лишь малая доля рынка.

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