□ Javaの脆弱性 CVE-2011-3544のメモ。 時間がないのでメモだけ。 Javaの脆弱性 CVE-2011-3544を狙った攻撃が増えているので注意。 Javaのバージョンを必ずJava 6 Update 29以上の最新版にアップデートすること。 Windowsなら自動的にアップデート通知が出ているはずだし、手動でアップデートする場合でも 「コントロールパネル」→「Java」→「アップデート」タブ→「今すぐアップデート」 ボタンでアップデートが可能。 JPCERT - Java SE を対象とした既知の脆弱性を狙う攻撃に関する注意喚起 http://www.jpcert.or.jp/at/2011/at110032.html NVD - Vulnerability Summary for CVE-2011-3544 http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-3544 @IT - Oracle Java SEの脆弱性に注意を、NTTデータ先端技術が検証 http://security.intellilink.co.jp/article/vulner/111202.html 実際の攻撃も増加傾向にあるようですよ。 IBM - Javaの既知の脆弱性(CVE-2011-3544)を悪用する攻撃を確認 https://www-304.ibm.com/connections/blogs/tokyo-soc/entry/java_exploit_20111205?lang=ja □ Exploitのデモ動画 下記の動画を見れば、脆弱性なにそれ美味しいの?という人でも なんとなくは理解できるはず。 sh4rk's BLOG - JRE(CVE-2011-3544) http://sh4rk.6.ql.bz/?p=1558 youtube - Metasploit cross-platform Java Exploit (CVE-2011-3544) Demonstration http://www.youtube.com/watch?v=cXctDpaNIjw
こちらも時間がないので概要だけ。Debian/UbuntuなどLinux中心の話。 間違っている点があれば指摘してください。 □ 結論 Debian/Ubuntu環境では、sun-javaのパッケージは利用せず openjdkのパッケージを利用しましょう。 (例えば、sun-java6-jdkではなくopenjdk-6-jdkとか) ※ 下記のコマンドで、古いsun-java6関連パッケージを削除できます。 $ sudo aptitude purge "~nsun-java6" □ 経緯と概要 * Javaには、Sun(Oracle) JavaやOpenJDKなどの複数の実装がある。 OpenJDKはSunのJavaオープンソース化から派生したものであり 一部のライブラリを除き互換性は高い。 OSS iPedia - アプリケーション実行基盤としてのOpenJDKの評価 http://ossipedia.ipa.go.jp/doc/208/ * 従来は、Sun JavaはDLJというライセンスの元でLinuxディストリビューター からの配布が認められていたが、OpenJDKが成熟してリリースベースとしても 活用されるようになってきたため、Oracleは2011/8にDLJライセンスでの Sun Javaの提供をやめる方針を打ち出した。 これにより、Linuxディストリビューターはそれ以降にリリースされるSun Javaのパッケージを 配布できなくなったため、主なリポジトリからSun Javaを削除した。 (Partnerリポジトリ等に残っているものは、セキュリティに問題のある古いバージョン 2.26) マイナビ - Oracle、Linux向けJavaの非OSSライセンスを廃止 http://journal.mycom.co.jp/news/2011/08/31/018/index.html burek for breakfast - Retiring the DLJ http://robilad.livejournal.com/90792.html A frog around the world - sun-java6 packages removed soon from Debian/Ubuntu http://sylvestre.ledru.info/blog/sylvestre/2011/08/26/sun_java6_packages_removed_from_debian_u Debian/Ubuntuでは、CVE-2011-3544などを含む脆弱性にOpenJDKでは対応したが、Sun Javaでは対応していない。 (追記: 被害が広がらないようSun JDKブラウザプラグインを無効にしたパッケージは出ましたが..) launchpad CVE Tracker - CVE 2011-3544 https://launchpad.net/bugs/cve/CVE-2011-3544 Debian Security - DSA-2358 http://www.debian.org/security/2011/dsa-2358 ということで、sun-java6パッケージを使って良いのは小学生までですw (小学生でも使ったらあかんけど...) * Oracle社サイトから最新版のJavaを入手する手もあります OpenJDKの互換性は高くなってますが、Androidのビルドや一部のアプリなど Sun(Oracle) Javaに依存するものを動かすのであれば、Oracle Javaを 導入する必要があるでしょう。 その場合は、Oracle社サイトから最新版のJavaをダウンロードした上で 手動でインストールする必要があります。 ダウンロードしたJavaのインストーラーは、Debianパッケージ形式でないので インストールや設定などで多少手間がかかります。 この場合、Oracle Binary Code Licenseに同意する必要があります。 また、Windows環境と違ってセキュリティ情報を自分で確認してアップデートする必要がある点にも注意が必要です。 java.com http://www.java.com/ja/download/index.jsp □ 参考 help.ubuntu.com - Java https://help.ubuntu.com/community/Java
追記: UbuntuのPartnerリポジトリから削除される日が2012/2/16に決定しました。
2011/12/15付で、ubuntu-security-announceメーリングリストにメールが流れています。 これによると、将来的にUbuntuのPartnerリポジトリからも実質的に削除されるようです。 https://lists.ubuntu.com/archives/ubuntu-security-announce/2011-December/001528.html 一部箇条書きにして訳すと * CanonicalのPartnerリポジトリにはUbuntu 10.04/11.10/11.04向けの Sun Java(sun-java6)パッケージが存在する。 * Canonicalは、ユーザーのリスクを和らげるために、Sun JDKブラウザプラグインを 無効にしたセキュリティアップデートを直ちにリリースしました。 *近い将来(実施日は未定)、Sun Javaパッケージは削除されます。 これは空のパッケージをアーカイブに置くことで行われ、アップデートの際に すべてのマシンからSun Javaパッケージが削除されることが目的です。Sun Javaパッケージの削除日が2012/2/16に決定しました。 予期せぬ失敗を防ぐため、アーカイブから削除する前に空パッケージを リリースすることは行わないことになりました。 https://lists.ubuntu.com/archives/ubuntu-security-announce/2012-January/001554.html ※ 気づかないまま古いSun Javaパッケージを使いつづけることがないよう注意してください。 * PartnerリポジトリからOracle Javaパッケージを使用している人は 以下のような選択肢があります。 1. OpenJDKパッケージをインストールする(mainリポジトリ) (ブラウザプラグインは、icedtea6-pluginパッケージ Java仮想マシンは、openjdk-6-jdkまたはopenjdk-6-jreパッケージ) 2. OracleのJavaソフトウェアをOracleサイトから取得してインストールする http://www.oracle.com/technetwork/java/javase/downloads/index.html * 詳細な情報は、UbuntuのWikiページへ。 https://wiki.ubuntu.com/LucidLynx/ReleaseNotes/Java6Transition ということで、Sun Javaパッケージを使っている人は、少なくとも リポジトリから削除されてから慌てることがないよう、さっさと乗り換えておきましょう。 あと、怪しげなPPAやウェブサイトからSun Javaパッケージを ダウンロードすることはやめましょう。ライセンス的に問題があったり どんなセキュリティホールやマルウェアが隠れているか分からないですから。