Oracleは先週,Critical Patch Updateをリリースした。含まれている127個の新たなセキュリティフィックスが対象とするOracle製品のエコシステムには,Java SEも含まれている。Javaに関連する重要なセキュリティフィックスは51個。クライアントとサーバ,いずれのデプロイメントにも影響する内容だ。
Javaの51個のセキュリティフィックスに含まれているのは,認証なしでリモートから悪用可能な50の脆弱性に対するパッチである。その内の10個には,CVSS(Common Vulnerability Scoring System)に基づいたスコアで10.0が付けられている。これは同スコアシステムによる脆弱性リスク計測値としては最高のものだ。脆弱性の一部については,“ターゲットシステムを(オペレーティングシステムまで)完全に乗っ取られる” 可能性がある。攻撃者が占領したホスト上で,特権的なコンテキストでのコード実行が可能になるのだ。
脆弱性の多くは,ブラウザのプラグインなど,Javaのクライアント側ランタイム環境に直接的に影響する。プラグインの場合,アプリケーションの組み込まれたWebサイトを訪問することによって,クライアント上でのJavaコードの実行が可能になる。Updateに含まれる一連のセキュリティフィックス中,40個がアプレットないしWebStart経由でのクライアントプログラム実行に関連している。Oracleが作成したリリースノートによると,しかしながら,CVSSスコアで10.0が付けられた10個の脆弱性の8個までが,クライアントとサーバ両方を対象としたものだという。
Javaのコアアーキテクチャでは,4つの独立したレイヤによってコード実行が抽象化されている。この構造により,有名な "Write Once, Run Anyware" というプログラムパラダイムを実現しているのだ。最上位の "Java Application" レイヤにはアプリケーションが記述され,コアコードやアプリケーションセキュリティプロトコル,プログラム言語ライブラリなどを含む "Java Runtime" レイヤとインターフェースを持つ。そのRuntimeレイヤがインターフェースする “Nativeレイヤ” は,そのベースレイヤであるオペレーティングシステムの抽象化を責務としている。今回のアップデート対象となったスコアの高い脆弱性は,Runtimeレイヤの備えているセキュリティ処理をバイパスすることで, "Nativeレイヤ" をターゲットとするものだ。Nativeレイヤの脆弱性を突いたエクスプロイトは,Javaプロセスを実行しているユーザあるいはサービスの権限を詐称することにより,オペレーティングシステム上でのコード実行を可能にする。
今年始めにOracleは,今月以降のJava SEセキュリティフィックスとアップデートを,Oracleの製品エコシステム全体のCritical Patch Updateに展開すると発表した。この “CPU” は4半期ごとにリリースされるので,今後はJavaにも年4回のセキュリティリリースの機会が与えられることになる。Oracleによると,Security Alertプログラムを通じた緊急セキュリティフィックスの発行も継続していくということだ。今月のCritical Patch Updateは,Javaとしては2013年に入って8回目のアップデート になる。