Apple、Facebook、Twitter の従業員の Mac がハッキングされたというニュースと、その後の Apple と Oracle のソフトウェア パッチにより、Java が安全に使用できるかどうかという問題を再検討すべき時期が来ています。
2012年夏に発生したFlashbackマルウェア攻撃の後、私はそのリスクについて解説し、Javaを最も安全に使用する方法についてアドバイスを提供しました。しかし、MacにおけるJavaの動作方法の変化と、近年のJavaベースのセキュリティ脅威の増加を受けて、アドバイスを変更いたします。MacからJavaを削除するためにできる限りのことをしてください。それが不可能な場合は、可能な限りJavaを完全に隔離してください。
この推奨は軽々しく行っているわけではありません。Javaの削除は、特に職場でMacを使っている人にとっては問題となるでしょうし、Javaの隔離も容易ではありません。しかし、そのリスクは強調しすぎることはありません。最近のMacマルウェア攻撃のほぼすべてが、WebブラウザのJavaまたはFlashを悪用しています。(Flashの隔離に関するアドバイスも掲載しています。)Javaを使い続ける予定であれば、できるだけ早くアップデートしてください。
Javaの削除を推奨する理由
Javaは単なるブラウザプラグインではありません。完全なアプリケーション実行環境です。つまり、JavaアプリケーションはMacにインストールされたJava仮想マシン内で実行されるように設計されています。理論上、開発者は仮想マシン内で実行されるJavaプログラムを作成でき、Mac、Windows、Linuxなど、有効なJVMが動作するプラットフォームであれば、変更を加えることなくあらゆるプラットフォームで実行できます。(実際には、複数のプラットフォーム間で動作させることは容易ではありません。)JVMはメモリ管理など、アプリケーションに必要なあらゆる処理を行い、Javaアプリケーションをオペレーティングシステムから分離するサンドボックス内で実行します。
問題は、このサンドボックス(またはJVMの他の部分)に欠陥があり、誰かがその欠陥を悪用して悪意のあるコードを作成し、コンピュータへのさらなるアクセス権を取得した場合に発生します。JavaやFlashなどの環境が特に問題となるのは、ブラウザで有効にすると、ユーザーの許可を求めることなくこれらのプログラムが実行されてしまうことです。インターネット上でJavaプログラムを実行するランダムな攻撃者とユーザーの間には、サンドボックスだけが存在します。そして、サンドボックスが防御力を失うと、Webページを閲覧するだけで、攻撃者がコンピュータを完全に制御できるようになる可能性があります。
Appleの従業員に対する攻撃、そしておそらくTwitterやFacebookへの攻撃でも、まさにこれが起こったと言えるでしょう。攻撃者はモバイル開発者が利用していることが知られているサイトに侵入し、これまで知られていなかった(いわゆる「ゼロデイ」)Javaの脆弱性を悪用して、ブラウザを通じてコンピュータを攻撃しました。これは「ウォーターホール型」攻撃と呼ばれ、攻撃者は標的のユーザーが定期的に自発的に訪れるサイトを狙ったためです。この脆弱性は未知であったため、ウイルス対策ソフトウェアが必ずしもそれを検出して無効化できるとは限りません。
8 月末に Flashback 攻撃について書いたとき、私は「現在、ユーザーが危険にさらされている可能性は低いかもしれませんが、Java が依然として、あらゆるオペレーティング システムのユーザーが直面している最大かつ最も根深いセキュリティ問題の 1 つであることは明らかです」と述べました。
私の結論は変わりました。あなたは今、危険にさらされています。では、どうやって自分を守ればいいのでしょうか?
Javaを削除する方法
最善の選択肢は、MacからJavaを完全に削除することです。そうすれば、セキュリティ上の脆弱性を心配する必要がなくなります。システムにJavaがないと、一部のウェブサイトが動作しなくなる可能性がありますが、私はかなり前からブラウザでJavaの実行を許可していませんが、問題はほとんど発生していません。許可した場合、問題が発生する主な原因は、Webベースの会議ソフトウェアと一部のエンタープライズアプリケーションです。これは、Javaを無効にすると、人気のバックアップツールであるCrashPlanなど、他のソフトウェアプログラムも無効になるためです。このような状況に遭遇した場合は、以下に概説する手順を実行してJavaを隔離することを検討してください。ただし、他のユーザーにとっては、Javaなしで生活することが最も満足のいく方法かもしれません。そうすれば、将来Javaが再び有効になるリスクを回避できます。
Javaを削除する具体的な手順は、OS XのバージョンとJavaのバージョンによって異なります。いずれにしても、Javaの削除は非常に簡単です。

Java がインストールされているかどうかを確認するには、ターミナルを起動して次のコマンドを実行します。
java -version
1.6応答にまたは が表示された場合は1.7、/System/Library/Java/JavaVirtualMachines/ ディレクトリに移動して削除してください。または、コマンドラインを使用してください。
sudo rm -rf /System/Library/Java/JavaVirtualMachines/
(いつものように、コマンドを使用するときは十分にsudo rm注意して入力してください。)
Macで突然Javaのインストールを要求された場合は、Javaがシステムにインストールされていないか、Java 7の非開発者向けバージョンをインストールしたかのいずれかです(こちらの方がより一般的な状況です)。その場合は、以下のコマンドラインでJava 7を削除してください。
sudo rm -rf "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin"sudo rm -rf "/Library/PreferencePanes/JavaControlPanel.prefpane"
問題が発生した場合は、Finder で Mac のハードドライブを選択し、それらの 2 つのファイルを検索してゴミ箱に送信します。
Javaを分離する方法
Javaを分離するということは、MacにJavaを残しつつ、実行したい時以外はブラウザからJavaを削除することを意味します。Appleは現在、すべてのMac(10.6以降)でこれをデフォルトで実行しており、約1ヶ月後にJavaを再びオンにしても再び分離されます。AppleがLionとMountain LionからJava設定ユーティリティを削除したため、Javaの分離は少し複雑になっています。
Java 6(Apple提供バージョン)をご利用の場合は、各ブラウザでJavaの使用を制限する必要があります。Google Chromeの場合は、chrome://pluginsアドレスバーにJavaと入力し、リンクをクリックしてJavaを無効にしてください。Safariの場合は、「Safari」 > 「環境設定」に移動し、 「セキュリティ」パネルで「Javaを有効にする」のチェックを外してください。Firefoxの場合は、 「ツール」 > 「アドオン」 > 「プラグイン」に移動し、「Javaプラグイン」のチェックを外してください。

Java 7 を使用する場合は、システム全体で無効にすることができます。[設定] > [Java] > [セキュリティ]に移動し、[ブラウザで Java コンテンツを有効にする] のチェックを外します。
すべてのブラウザでJavaを分離し、メインブラウザとして使わないブラウザを1つ選び、必要に応じてそこで一時的にJavaを有効にすることをお勧めします。そうすることで、使用後にJavaをオフにし忘れ、日常のブラウジング中にセキュリティ上の脅威にさらされる可能性を減らすことができます。
このアドバイスは極端に思えるかもしれません。しかし、Appleの開発者がハッキングされた今こそ、自分自身を守る時です。
2013 年 2 月 21 日午前 11 時 5 分 (太平洋標準時) に更新され、コマンド ラインのフォーマットが修正されました。