セキュリティ研究者は、サイバー犯罪者がデジタル証明書で署名された Java の脆弱性を利用してユーザーを騙し、ブラウザ内で悪意のあるコードを実行させ始めていると警告している。
セキュリティ研究者のエリック・ロマン氏は火曜日のブログ投稿で、月曜日にドイツのケムニッツ工科大学のウェブサイトで署名済みのJavaエクスプロイトが発見され、同ウェブサイトは「g01pack」と呼ばれるWebエクスプロイトツールキットに感染していたと述べた。
「これは間違いなくgo01パックです」と、ウイルス対策ベンダーAvastの脅威情報担当ディレクター、ジンドリッチ・クベック氏はメールで述べた。この署名付きJavaエクスプロイトの最初のサンプルは2月28日に検出されたという。
この脆弱性が新たな脆弱性を狙ったものなのか、それとも既に修正済みのJavaの古い欠陥を狙ったものなのかは、現時点では明らかになっていません。オラクルは月曜日に、2つの重大な脆弱性に対処するための新たなJavaセキュリティアップデートをリリースしました。そのうち1つは、攻撃者によって積極的に悪用されていました。
Javaエクスプロイトは従来、署名のないアプレット(Java Webアプリケーション)として配布されてきました。以前のJavaバージョンでは、このようなアプレットの実行は自動化されており、ハッカーは被害者にとって完全に透過的なドライブバイダウンロード攻撃を実行することができました。

Java 7 Update 11 の 1 月のリリース以降、Web ベースの Java コンテンツのデフォルトのセキュリティ制御は高く設定されており、デジタル署名の有無に関係なく、アプレットがブラウザー内で実行される前にユーザーに確認を求めるプロンプトが表示されます。
とはいえ、署名付きのエクスプロイトを署名なしのエクスプロイトよりも使用すると、攻撃者にとって有利になります。なぜなら、署名なしのエクスプロイトと署名なしのエクスプロイトでは、Javaが表示する確認ダイアログが大きく異なるからです。署名なしのJavaアプレットのダイアログには、実際には「セキュリティ警告」というタイトルが付けられています。
デジタル署名は、ユーザーにコードの信頼性を保証する上で重要な要素だと、ウイルス対策ベンダーBitdefenderのシニア電子脅威アナリスト、ボグダン・ボテザトゥ氏はメールで述べた。署名されたコードに表示される確認ダイアログは、署名されていないコードの場合に表示されるものよりもはるかに目立たず、脅威を感じさせないものだと彼は述べた。
「さらに、Java自体も署名付きコードと署名なしコードを異なる方法で処理し、セキュリティ制限を適切に適用します」とボテザトゥ氏は述べた。例えば、Javaのセキュリティ設定が「非常に高い」に設定されている場合、署名なしのアプレットは全く実行されませんが、署名付きアプレットはユーザーが承認すれば実行されます。非常に高いJavaセキュリティ設定が強制されている企業環境では、コード署名が攻撃者が標的のシステム上で悪意のあるアプレットを実行する唯一の手段となる可能性があると、同氏は指摘する。

この新しい Java の脆弱性により、Java がデフォルトでデジタル証明書の失効をチェックしないという事実も明らかになりました。
月曜日に研究者らが発見したエクスプロイトは、おそらく盗まれたデジタル証明書で署名されていました。この証明書はGo Daddyからテキサス州オースティンに拠点を置くClearesult Consultingという会社に発行されたもので、その後2012年12月7日付で失効していました。
証明書の失効は遡及的に適用される可能性があり、Go Daddyがいつ証明書を失効対象としてフラグ付けしたかは不明です。しかし、Kubec氏によると、このエクスプロイトの最も古いサンプルが検出される3日前の2月25日には、この証明書は同社が公開した証明書失効リストに既に失効済みとして記載されていました。にもかかわらず、Javaはこの証明書を有効と認識しています。
Javaコントロールパネルの「詳細設定」タブの「セキュリティの詳細設定」カテゴリには、「証明書失効リスト(CRL)を使用して証明書の失効を確認する」と「オンライン証明書検証を有効にする」という2つのオプションがあります。後者のオプションはOCSP(オンライン証明書ステータスプロトコル)を使用します。これらのオプションはどちらもデフォルトで無効になっています。
オラクルは現時点でこの問題について何のコメントもしていない、とオラクルの英国PR代理店は火曜日に電子メールで述べた。
「利便性のためにセキュリティを犠牲にすることは、深刻なセキュリティ上の見落としです。特にJavaは2012年11月以降、サードパーティ製ソフトウェアの中で最も標的となっていることを考えるとなおさらです」とボテザトゥ氏は述べた。しかし、これはOracleだけの問題ではないと同氏は述べ、Adobe Reader 11では、ユーザビリティ上の理由から重要なサンドボックス機構がデフォルトで無効化されていることを指摘した。
Botezatu 氏と Kubec 氏はともに、攻撃者が Java の新しいセキュリティ制限をより簡単に回避するために、デジタル署名された Java の脆弱性を利用するケースが増えると確信しています。
セキュリティ企業Bit9は最近、ハッカーが同社のデジタル証明書の1つを侵害し、マルウェアの署名に利用したことを明らかにしました。昨年は、ハッカーがAdobeのデジタル証明書を侵害し、同様の行為に及んでいました。
ボテザトゥ氏は、これらのインシデントと今回の新たなJavaエクスプロイトは、有効なデジタル証明書が悪意のあるコードに署名する可能性があることを示していると述べ、証明書の失効を積極的に確認することが特に重要であると付け加えた。これは、証明書が侵害された場合に利用できる唯一の緩和策だからだ。
ポーランドの脆弱性調査会社Security Explorationsの創設者であるAdam Gowdiak氏は、電子メールで、ブラウザで日常的にJavaを使用するユーザーは、盗難された証明書を悪用した攻撃に対する防御を強化するために、証明書失効チェックを有効にすることを検討すべきだと述べた。Security Explorationsの研究者は、過去1年間で50件以上のJavaの脆弱性を発見し、報告している。
ユーザーはこれらの証明書失効オプションを手動で有効にすべきだが、セキュリティアップデートをインストールしていないユーザーも多いため、おそらくそうしないだろうとクベック氏は述べた。研究者は、Oracleが将来のアップデートでこの機能を自動的に有効にすることを期待している。