【Java 7 u51 関連情報(1)】Java 7 Update51におけるRIAの新しいセキュリティ要件について
By Otn-J Master-Oracle on 1 21, 2014
Java開発者およびデスクトップ管理者の皆様へ
繰り返しになりますが、1月14日付けのJavaのアップデートは、極めて重要なセキュリティ脆弱性が修正されているため、米国オラクルではすべてのJava SE 7ユーザに対して、すみやかにこのリリースの適用を強く推奨していますが、一方で、このセキュリティ強化に対応していない既存のRIAが動かなくなる可能性がありますので、RIAの提供者や管理者の方々はしかるべき措置をとることが必要になります。
当ブログでは、2回にわたって、このアップデートに関する追加情報をお届けします。
まず、この回では、開発者とデスクトップ管理者の方が行うべきことをお伝えします。
この次の回では、どうしても対応が難しく、やむをえずRIAを使い続けたい場合、エンドユーザの自己責任でセキュリティ要件に満たないRIAを起動できる方法を説明します。
Java 7 Update51におけるRIAの新しいセキュリティ要件について
Java 7 Update 51(2014年1月14日更新)には、リッチ・インターネット・アプリケーション(RIA)(アプレットおよびWeb Start)の認証および認可の強化を目的とした、2つのセキュリティ変更が含まれます。
デフォルトのセキュリティ・スライダは、これらの要件を満たさないRIAをブロックするように変更されています。
※注意: この変更はRIAに対してのみ適用され、ブラウザの外部で実行されるサーバー・アプリケーションやデスクトップ・アプリケーションには適用されません。
■ まとめ
- すべてのRIA(アプレットおよびWeb Startアプリケーション)に署名が必要です。
- マニフェスト内に"Permissions"属性を設定する必要があります。
- Webブラウザから起動されるJavaを使用しているアプリケーションは、これらの影響を受けますが、Webブラウザの外部で実行されるアプリケーションには影響はありません。
詳しくは、Java 7 Update 51のリリース・ノート(英語)を参照してください
■ 開発者の方へ
7u51(2014年1月14日)以降では、RIAを更新する必要があります。更新が必要なのは、パッケージ化とディストリビューションに関するものであり、APIコードの変更は必要ありません。これらの変更はサンドボックス・アプリケーションの目的が変更される可能性に関連して導入されたものであり、署名済みのJAR内に権限を設定することで、指定した権限レベルの変更を防止できます。
RIAには次の2つの要素が含まれる必要があります。
- 信頼できる認証局のコード署名:アプレットおよびWeb Startアプリケーションに対するすべてのコードには、その権限属性に関係なく、署名を行う必要があります。
- マニフェスト属性:
a. Permissions - 7u25で導入されましたが、7u51以降では必須になります。RIAをサンドボックス内で実行する必要があるか、または完全な権限が必要であるかを示します。
b. Codebase - 7u25で導入され、7u51以降ではオプションですが推奨されています。ホストされたコードの既知の場所を指します(例:intranet.example.com)。
META-INF/MANIFEST.MFファイルのサンプル:
Manifest-Version:1.0
Created-By:1.7.0_51
Permissions: sandbox
Codebase: www.java.com java.com
このマニフェスト・ファイルはJARをパッケージ化する際に、デフォルトのjarコマンド、任意の構築ツール、またはIDEを介して作成されています。
Web Startアプリケーションの起動用JNLPのサンプル:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp href="JavaDetection_applet.jnlp">
<information>
<title>Java Detection</title>
<vendor>Oracle Inc.</vendor>
</information>
<resources>
<jar href="JavaDetection.jar" />
</resources>
<applet-desc
name="Java Detection Applet"
main-class="JavaDetection"
width="1"
height="1">
</applet-desc>
<update check="background"/>
</jnlp>
上記のJNLPに<security />要素が含まれていないことにお気づきの方もいると思いますが、Java 7 Update 51以降では、この要素を暗号化して署名されたJARファイル内で指定した場合、JNLP内で指定する必要はありません。
JNLPとデプロイメント・ツールキットについての詳細はDevelopment and Deployment Of Rich Internet Applicationsを参照してください。コードへの署名の手順については、Lesson: Signing Code and Granting It Permissionsのチュートリアルを参照してください。
■デスクトップ管理者の方へ
さまざまなコンピュータに対し、Javaのインストールを管理するデスクトップ管理者の方は、内部アプリケーションをホワイトリスト化するためのデプロイメント・ルール・セットの使用をお勧めします。デプロイメント・ルール・セットを利用すると、上記の要件を満たすためにアプリケーションを更新できない場合も、既知の信頼できる安全なアプリケーションとして認定できます。
※本記事は、米国オラクルのJavaプラットフォームチームのブログの抄訳版(一部編集済み)です。原文はこちらです。


