torutkのブログ

ソフトウェア・エンジニアのブログ

Webブラウザ上で実行するJavaのセキュリティについてのメモ

Oracle Blogs 日本語のまとめ: [Java, Security] Updated Security Baseline (7u45) impacts Java 7u40 and before with High Security settingsより

念のため、Java 7u51(2014年1月)では、未署名および自己署名AppletとWeb Startアプリケーションがデフォルトでブロックされる予定です。

ということで、もう間もなくJavaアプレットJava Web Startアプリケーションは認証局から発行された証明書で署名してあげないと、ブラウザ上で動作させることができなくなります。

詳しい情報を求めて、JavaOne 2013 SFのセッションでセキュリティ関係を探してみると、

"Securing Java Track Opening Presentation (CON7921)"から抄訳して引用

来る1月の7u51にて、自己署名/署名なしアプレットはデフォルトで実行できなくする

  • セキュリティレベル「高」(Java Plug-inのデフォルト)では自己署名と署名のないものは実行できない
  • セキュリティレベル「高」(Java Plug-inのデフォルト)ではマニフェスト定義に"permissions"属性が必須となる
  • Java SE 7u25より古いバージョンで作成されたアプレットは実行できない

セキュリティレベルは、Java SE 7u10でJavaコントロールパネルにスライダーが追加され、7u21で「低」と「カスタム」がスライダーから削除され、7u45時点では「非常に高」、「高(最小限の推奨)」、「中」の3段階が設定可能となっています。

https://blogs.oracle.com/java-platform-group/entry/new_security_requirements_for_rias
に、マニフェスト記述例、JNLP記述例が掲載されています。

Manifest-Version: 1.0
Created-By: 1.7.0_51
Permissions: sandbox
Codebase: www.java.com java.com

と、Permission属性があります。Permission属性には、sandboxかall-permissionsを記述するようです。

"One Year of Security Enhancements in the JRE(CON7799)"から抄訳して引用

  • Appletは信頼できる認証局から発行された証明書で署名されなければならない(must)
  • 署名されたAppletのマニフェストにはpermisson属性がなければならない(must)
  • 企業内利用では、Deployment Rule Setを使用した場合に限り自己署名または署名なしアプリケーションを使用することが可能である
  • エンドユーザーはJavaコントロールパネルにて自己署名または署名なしの対処を「ブロック」から「プロンプト」に変更することができる

Deployment Rule Setについては、同JavaOne資料
"Deploying Java Application Security(CON6178)"に解説があります。
ルールセットを記述したruleset.xmlを含んだDeploymentRuleSet.jarを作成し、これには正当な署名をした上でクライアントPCの所定の場所にインストールしておくとあります。

上述のJavaOneセッション資料はそれぞれリンク先からダウンロードできます。