Oracleは本日,セキュリティ脆弱性 CVE-2013-0422 を修正した Java SE 7u11 をリリースした。ここ数日間,Javaが実行できるようにブラウザを設定したコンピュータに対して,コードの遠隔インストールと実行をするために多方面で利用された脆弱性をフィックスするものだ。これらの操作にはアプレットが利用されている。ブラウザは必要がなくてもJavaを実行可能に設定されていることが多いため,アプレットのサンドボックスを回避する Java 7のランタイムとリフレクション の機能を介すことで,セキュリティサンドボックスを逃れることが可能なのだ。
今年最初となるセキュリティ関連フィックスではあるが,Java 7のセキュリティ脆弱性に注目が集まったのは今回が初めてではない。過去にも 2012年10月 に,CVE-2012-5083 と CVE-2012-1531という2つの問題があった。いずれも2Dフレームワークのエスケープを介して信頼されていないコードの実行が可能になるというもので,この時に報告された問題点も,今回と同じリフレクションの利用に関するものだった。
ゼロデイ脆弱性の存在は,しかしながらMetasploitやBlackholeのような侵入テストツールによって,これまでも広く利用されてきた。今回の件に対して米国国土安全保障省は,Java7u11へのアップデートを行った場合でも,将来的なセキュリティ問題を回避するために ブラウザ内でのJava実行を無効にするよう,ユーザに警告を行った。その結果,これまでは セキュリティアップデートのリリースを四半期ごとに限定する としていたOracleも,行動を急ぐことになったのだ。
皮肉なことに,ブラウザ上のJavaをリモート操作で無効にした最初の1社は,OSXのアンチマルウェア記述ファイル /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/XProtect.meta.plist
のアップデートを行ったAppleだった。ブラウザ内でJavaアプレットを実行するのに最低限必要なJavaのバージョン定義を追加する,というものだ。
<dict> <key>LastModification</key> <string>Thu, 10 Jan 2013 22:48:02 GMT</string> <key>PlugInBlacklist</key> <dict><key>10</key><dict> <key>com.oracle.java.JavaAppletPlugin</key> <dict><key>MinimumPlugInBundleVersion</key> <string>1.7.10.19</string></dict> </dict> </dict> </dict>
将来的な脆弱性から保護するため,Javaのアップデート時には,未署名のJavaアプレット実行を'高'セキュリティコンテキストに限定する設定も行う必要がある。これによってJavaアプレットが有効な場合,未署名のアプレットが見つかると,警告ダイアログをポップアップ表示するようになる。
自分のブラウザがJavaを実行可能に設定されているかどうか確かめるには,JavaTest ウェブサイトを利用するとよい。ブラウザのJava実行を無効にする方法については,Oracleウェブサイトの資料 "How to disable Java in the browser" に説明がある。ブラウザ外で動作するJavaアプリケーションについては,最初からセキュリティマネージャなしで実行されるため,このセキュリティ設定には影響されない。