セキュリティ攻撃阻止のためにWebブラウザでJavaを無効化するTech TIPS

Javaランタイムには、しばしば重大な脆弱性が発覚することがある。脆弱性が解消されるまでは、Javaを無効化することで攻撃を防ぎたいところ。その方法は?

» 2013年01月20日 05時00分 公開
[島田広道デジタルアドバンテージ]
Tech TIPS
Windows Server Insider


「Tech TIPS」のインデックス

連載目次

対象ソフトウェア:Oracle Javaランタイム(JRE)



解説

 以前はSun Microsystems、現在はOracleが無償で配布しているJavaランタイム(JRE)は、Javaプログラムの実行環境としてさまざまな場面で利用されている。PCにプレインストールされていたり、Webアプリケーションを利用する際にインストールされたりするので、多くのWindows PCにJavaランタイムが存在しているはずだ。

 しかし、それゆえにJavaランタイムは悪意のある攻撃者に狙われやすく、しばしば重大な脆弱性が見つかることがある。執筆時点の2013年1月に見つかった脆弱性の場合は、それを解消するセキュリティ・パッチのリリース前に、悪用するためのプログラム・コードが流布していて危険な状態だった。

 数日後にセキュリティ・パッチ(更新版)はリリースされたが、今後もこうした事態が発生する可能性は否定できない。

 Javaをまったく利用しない環境であれば、Javaランタイムをアンインストールすればよい(一般的なアプリケーションと同様にコントロール・パネルから簡単に削除できる)。しかし、Javaを利用する機会があるなら、そのたびにインストールとアンインストールを繰り返すのは面倒だ。例えば、Javaランタイムをインストールしたまま、普段は呼び出せないように無効化しておき、必要になったら有効化する、あるいは攻撃の危険性が高まっている時期は無効化する、といった運用ができれば、少なくとも普段から有効にしたままよりはずっと安全だろう。

 Javaランタイムの脆弱性を突く攻撃は、そのためのプログラム・コードを仕込んだJavaアプレットをどこかのWebサイトに仕込んでおき、ユーザーにWebブラウザでアクセスさせることで実行する、というパターンが多い。そこで本稿では、WebブラウザでのJavaアプレット実行を禁止する(無効化する)方法を紹介する。

 ただし、攻撃を防ぐには脆弱性の解消、すなわち最新版のJavaランタイムに更新することが最も重要である(更新による互換性問題が生じる危険性があるとしても)。そのうえで、本稿のJava無効化設定を実施していただきたい。

 インストール済みのJavaランタイムが最新版かどうかは、以下のページで確認できる。

 最新版のJavaランタイムは次のWebサイトからダウンロード/インストールできる。

操作方法

 Javaを無効化するには、すべてのWebブラウザでJavaを無効にする方が簡単かつ確実だ。それができない場合は、WebブラウザごとにJavaを無効化する設定をする必要がある。本稿では次の3種類のWebブラウザについて、設定方法を説明する。

 なお、Internet Explorer(IE)については、個別かつ完全に無効化することはできない

●すべてのWebブラウザでJavaを無効化する

 すべてのWebブラウザでJavaを無効化するには、Javaランタイムと同時にインストールされる「Javaコントロール・パネル」を使って設定を変更する。ただし、この機能はJava 7 Update 10で搭載されたので、Javaランタイムをこれ以降のバージョンに更新しておく必要がある。これより前のバージョンでは、WebブラウザごとにJavaプラグインを無効化する必要がある(その手順はこの後に説明する)。

 Javaコントロール・パネルを起動するには、管理者権限を持つユーザー・アカウントでWindowsにログオンしてから、コントロール・パネルにある「Java」アイコンをクリックする(コントロール・パネル右上にある検索ボックスで「Java」を検索すれば見つかるはずだ)。Javaコントロール・パネルのダイアログが表示されたら[セキュリティ]タブを選び、[ブラウザで Java コンテンツを有効にする]チェックボックスをオフにして、[OK]ボタンをクリックする。ユーザー・アカウント制御のダイアログが表示されたら、指示に従って[はい]ボタンをクリックすること。

Javaコントロール・パネルからJavaを無効化する Javaコントロール・パネルからJavaを無効化する
管理者アカウントでWindowsにログオンしてから、コントロール・パネルの「Java」アイコンをクリックすると、このダイアログが表示される。ただしこのセキュリティ・レベルの設定機能は、Java 7 Update 10以降でのみ利用可能。
  (1)これを選ぶ。
  (2)チェックを外してオフにする(デフォルトではオン)。
  (3)これをクリックすると、無効化の設定が行われる。ユーザー・アカウント制御のダイアログが表示されたら、指示に従って[はい]ボタンをクリックすること。

 「Java Plug-in settings changed」というメッセージが表示されたら無効化は完了だ。ここで起動済みのWebブラウザがあれば、いったん終了すること。

無効化が完了すると表示されるダイアログ 無効化が完了すると表示されるダイアログ

 これでJavaが無効化されたはずなので、WebブラウザでOracle提供のJavaバージョン表示アプレットを開いて動作を確認しよう。このページでは、Javaアプレットによってインストール済みのJavaのバージョンが検出・表示される。正しく無効化できていれば、Javaのバージョン情報は表示されず、「システムから動作する Java は検出されませんでした」「プラグインをインストールする必要があります」「不明なプラグイン」といったメッセージが表示されるはずだ。

無効化後にJavaアプレットを実行しようとしたときの表示例 無効化後にJavaアプレットを実行しようとしたときの表示例
これはIE 8でOracle提供のJavaバージョン表示アプレットを開いたところ。もし「システムから旧バージョンの Java が検出されました。」というメッセージが表示されたら、その下方にある「インストールされている Java のバージョンをテストします。」というリンクをクリックする。
  (1)Javaが有効なら、ここにインストール済みのJavaランタイムのバージョンが表示される。ここでは無効化されているので何も表示されない。

 Java 7 Update 10以降をインストールしたにもかかわらず、Javaコントロール・パネルの[セキュリティ]タブに[ブラウザでJavaコンテンツを有効にする]チェックボックスが表示されないことがある。その場合は、エクスプローラでJava 7をインストールしたフォルダを開き、binフォルダにあるjavacpl.exeを起動してみよう(これがJavaコントロール・パネルのプログラムの実体)。デフォルトのパスは次の通りである。

C:\Program Files\Java\jre7\bin\javacpl.exe



 なお、上記の設定はすべてのユーザー・アカウントに反映されるため、ユーザー・アカウントごとに作業する必要はない。

●Internet Explorerで個別かつ完全にJavaを無効化する方法はない!?

 Oracleが提供している次のヘルプ・ページによれば、Internet Explorer(IE)でJavaを完全に無効化するには、前述のJavaコントロール・パネルでの設定変更しか方法がないとのことだ(つまりIE単独で完全無効化はできない)。

 一方、マイクロソフトは次のサポート技術情報で、IEでJavaプラグインを無効化する方法を紹介している。

 しかし、筆者が試した限りでは、(最新のJava 7ではなく)Java 6以前のランタイムがインストールされている環境では、たとえ上記ページに従って設定をしてもIEでJavaアプレットが起動されてしまうことがあった*1。そのため、IEの場合は、単体でJavaを無効化することはあきらめて、前述のJavaコントロール・パネルによる無効化を行う方がよいだろう。

*1 上記のサポート技術情報では、レジストリを書き換えてJavaプラグインのActiveXコントロール呼び出しを禁止する、という手法を採っている。しかし、それにはJavaの各バージョンが持っている固有のID(CLSID)をサブ・キー名にしたレジストリ・エントリを作成する必要がある。上記のサポート技術情報ではJava 7系のCLSIDしか指定していないため、Java 6での実行を明示的に指定したJavaアプレットは呼び出せてしまう。Java 6以前も含めて網羅的に禁止するには、過去の全バージョンのCLSIDを漏れなくレジストリに設定する必要があるため、手間もかかるし設定漏れが生じる恐れもある。あまりお勧めはできない。


 ところでIEでは、アドオン管理画面から各種アドオン(拡張機能)の無効化ができる。しかし、実際にJava関連のアドオン(拡張機能)をすべて無効化してみたところ、Javaアプレットによっては起動されてしまった。この方法では攻撃を防止できない危険性があるので注意しよう。

●Google ChromeでJavaを無効化する

 Google ChromeでJavaが実行されないようにするには、Javaプラグインを無効化する。それにはまずGoogle Chromeを起動し、アドレス・バーに「chrome://plugins」と入力して[Enter]キーを押す。するとプラグイン一覧が表示されるので、「Java」から始まる名称のプラグインの[無効にする]リンクをクリックする。[有効にする]リンクが表示されている場合は、すでに無効化されているのでそのままにしておく。

Google ChromeでJavaプラグインを無効化する Google ChromeでJavaプラグインを無効化する
これはGoogle Chromeのプラグイン設定画面。
  (1)アドレス・バーに「chrome://plugins」と入力して[Enter]キーを押すと、プラグイン設定画面が表示される。
  (2)Javaプラグイン。バージョンが確認できる。
  (3)これをクリックするとJavaプラグインが無効化される(即座に反映される)。ここに「有効にする」と表示されている場合はすでに無効化済みなので、そのままにしておく。

 これでJavaを無効化できたので、Oracle提供のJavaバージョン表示アプレットを開いてみよう。Javaのバージョン情報は表示されず、「Java(TM)は無効になりました。再度有効にするには、chrome://plugins にアクセスしてください。」といったメッセージが表示されるはずだ。

無効化後にGoogle ChromeでJavaアプレットを実行しようとしたときの表示例 無効化後にGoogle ChromeでJavaアプレットを実行しようとしたときの表示例
これはOracle提供のJavaバージョン表示アプレットを開いたところ。
  (1)Javaランタイムが無効化済みのため、バージョン情報は表示されない。

 なお、この設定はユーザーごとに行う必要がある(あるユーザー・アカウントでログオンして設定したとき、別のユーザー・アカウントには反映されない)。

●Mozilla FirefoxでJavaを無効化する

 Mozilla FirefoxでJavaが実行されないようにするには、Javaプラグインを無効化する。それにはまずMozilla Firefoxを起動し、左上の[Firefox]ボタンをクリックして[アドオン]を選ぶ(あるいはメニューバーの[ツール]−[アドオン]をクリックする)。アドオン・タブが表示されたら、左側メニューにある[プラグイン]をクリックし、右側に表示されたプラグイン一覧で「Java」から始まる名称のプラグインの[無効化]ボタンをクリックする。[有効化]ボタンが表示されている場合は、すでに無効化されているのでそのままにしておく。

Mozilla FirefoxでJavaプラグインを無効化する Mozilla FirefoxでJavaプラグインを無効化する
これはMozilla Firefoxのプラグイン設定画面。
  (1)左上の[Firefox]ボタンをクリックして[アドオン]を選ぶか、あるいはメニューバーの[ツール]−[アドオン]をクリックすると、このタブが表示される。
  (2)これを選ぶとプラグイン設定画面が表示される。
  (3)Java関連のプラグイン。バージョンが確認できる。
  (4)これらのボタンをクリックするとJava関連のプラグインが無効化される(即座に反映される)。ここに「有効化」ボタンが表示されている場合はすでに無効化済みなので、そのままにしておく。

 これでJavaを無効化できたので、Oracle提供のJavaバージョン表示アプレットを開いてみよう。Javaのバージョン情報は表示されず、「このプラグインは無効化されています」といったメッセージが表示されるはずだ。

無効化後にMozilla FirefoxでJavaアプレットを実行しようとしたときの表示例 無効化後にMozilla FirefoxでJavaアプレットを実行しようとしたときの表示例
これはOracle提供のJavaバージョン表示アプレットを開いたところ。
  (1)Javaランタイムが無効化済みのため、バージョン情報は表示されない。

 なお、この設定はユーザーごとに行う必要がある(あるユーザー・アカウントでログオンして設定したとき、別のユーザー・アカウントには反映されない)。

●OperaでJavaを無効化する

 OperaでJavaが実行されないようにするには、Javaプラグインを無効化する。それにはまずOperaを起動したら、アドレス・バーに「opera:plugins」と入力して[Enter]キーを押す。するとプラグイン一覧が表示されるので、「Java」から始まる名称のプラグインの[無効にする]リンクをクリックする。[有効にする]リンクが表示されている場合は、すでに無効化されているのでそのままにしておく。

OperaでJavaプラグインを無効化する OperaでJavaプラグインを無効化する
これはOperaのプラグイン設定画面。
  (1)アドレス・バーに「opera:plugins」と入力して[Enter]キーを押すと、プラグイン設定画面が表示される。
  (2)Java関連のプラグイン。バージョンが確認できる。
  (3)これらのリンクをクリックするとJavaプラグインが無効化される(即座に反映される)。ここに「有効にする」と表示されている場合はすでに無効化済みなので、そのままにしておく。

 これでJavaを無効化できたので、Oracle提供のJavaバージョン表示アプレットを利用して動作を確認しよう。Javaのバージョン情報は表示されず、「無効化されたプラグイン」といったメッセージが表示されるはずだ。

無効化後にOperaでJavaアプレットを実行しようとしたときの表示例 無効化後にOperaでJavaアプレットを実行しようとしたときの表示例
これはOracle提供のJavaバージョン表示アプレットを開いたところ。
  (1)Javaランタイムが無効化済みのため、バージョン情報は表示されない。

 なお、この設定はユーザーごとに行う必要がある(あるユーザー・アカウントでログオンして設定したとき、別のユーザー・アカウントには反映されない)。

■更新履歴

【2013/01/20】「Mozilla FirefoxでJavaを無効化する」において、アドオン・タブを開くための操作手順として、「メニューバーの[ツール]−[オプション]をクリックする」と記していましが、正しくは「メニューバーの[ツール]−[アドオン]をクリックする」でした。お詫びして訂正させていただきます。

【2013/01/18】初版公開。


「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。