本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2013/01/java7-fixed
近日,Oracle发布了Java SE 7u11以修复安全漏洞CVE-2013-0422,该漏洞在过去几天内得到了广泛的使用,可以在允许运行Java的浏览器上远程安装与执行代码。这利用了applet(通常没必要配置就可以在浏览器中运行Java),并且可以通过Java 7运行时的特性与反射来跳出安全沙箱。
虽然这是今年遇到的第一个与安全相关的修复,但Java 7此前就曾因安全漏洞成为了人们瞩目的焦点。在去年10月,CVE-2012-5083与CVE-2012-1531都会导致不受信任的代码在2D框架中运行。反馈的结果同样是使用了反射API。
但0day漏洞在诸如Metasploit与Blackhole的渗透工具中得到了广泛的应用。这导致美国国土安全局向用户发出警告,要求禁用掉浏览器中的Java,即便你更新到了Java7u11也要这样,从而避免未来可能会出现的安全问题。因此,Oracle的反应速度很快,虽然他们此前曾表示只会按照季度来发布安全更新。
Apple是首批远程禁用掉浏览器中Java的公司之一,他向OSX反恶意软件描述文件中发布了一个更新,位于/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/XProtect.meta.plist。这增加了一个最小版本以允许Java applet能够运行在浏览器中:
<dict> <key>LastModification</key> <string>Thu, 10 Jan 2013 22:48:02 GMT</string> <key>PlugInBlacklist</key> <dict><key>10</key><dict> <key>com.oracle.java.JavaAppletPlugin</key> <dict><key>MinimumPlugInBundleVersion</key> <string>1.7.10.19</string></dict> </dict> </dict> </dict>
为了防止未来的漏洞,Java更新还将未签名的Java applet的运行仅限制在“高”安全上下文中。如果启用了Java applet插件,那么当发现了未签名的applet时就会弹出一个警告对话框。
要想知道浏览器是否可以运行Java,请进入到JavaTester网站。要想在浏览器中禁用Java applet,请按照Oracle的文档How to disable Java in the browser进行。运行在浏览器之外的Java应用并不受此次安全问题的影响,因为这种Java应用的运行无需安全管理器。