编者按:在《2010年10月编程语言排行榜》里我们详细向大家介绍了Java的混乱。尽管混乱的Java政治世界已经让我们厌烦,但是不可否认,Java依旧是最受关注的编程语言,Java的前景依旧被很多人看好,尤其是互联网巨头们:10月13日,Oracle和IBM这对老冤家宣布将在OpenJDK方面进行合作。这两家公司表示,它们要使OpenJDK社区成为开源软件“Java企业版”的主要开发阵地。
两家公司的合作将集中在Java语言、Java开发工具和Java运行时间环境等方面。但是Java已经万无一失了吗?Java在各版本的更新及时吗?一名外国的开发者Michael Horowitz在自己的博客中告诉你:“Java不用就卸载吧!”全部译文如下:
我前两天曾写过一篇文章探讨了在计算机上安装Java的好处和不利影响,我并没有任何偏见,只是为了分享我的一点经验而已,任何将Java视为一杯咖啡的人都不应该在他们的计算机上安装它。
最重要的一点是,那些不怀好意的人喜欢利用旧版本Java中的漏洞在你的计算机上安装恶意软件,微软的Holly Stewart在她们的恶意软件保护中心博客上发文表示,Java漏洞利用达到了前所未有的频繁程度,微软发现的Java漏洞经常被利用,即使很久以前就发布了修复补丁,但很多人却置之不理。
Secunia公司发布的2010年上半年安全报告写道:
“许多厂商提供的部署和更新机制非常有限,包括流行厂商在内,在很大程度上忽略了最终用户PC上的程序升级,粗暴地将问题甩给最终用户,大多数厂商没有采取切实有效的措施保护他们的用户,一般都会等到爆发大规模攻击时才会提供帮助,但殊不知这时行动会大大地影响到企业的声誉。”
“通常,用户要么不知道升级,要么被复杂的升级过程和频繁程度所吓倒。从攻击者角度看,针对第三方程序的攻击被证明是一种有效的途径,并且被发现的几率很小,给黑客活动留下了充足的时间,因此逐渐成为攻击者的最爱,那些原以为给系统打上所有补丁就安全的用户大错特错,第三方软件的漏洞还未引起人们的足够重视。”
糟糕的是Oracle和微软未联手在Windows Update中包含Java更新,在Linux世界中,软件更新机制非常简单,就是一条规则,但这在Windows中是不可想象的。
Google在它的Chrome浏览器中嵌入了Flash和PDF阅读器,据说将来还会将Java也添加进来,这无疑是开放了一个更大的安全缺口。
在这份报告中,Secunia发现他们分析的计算机中89%都安装了Java,难怪有人会攻击它,正所谓树大招风。
攻击者使用Java作为他们的攻击目标另一个原因是,Java小程序是在Web页面中运行的,这就意味着浏览一个网页就有可能被感染,攻击者并不需要诱骗受害者打开附件或安装伪装的解码器。
我看过Java利用的一手资料,在我写完前一篇博客时,有人给了我一台已感染的Windows XP计算机,让我帮助清除其中的病毒和木马,根据ESET的在线病毒扫描结果显示,其中一个恶意程序叫做“Java/TrojanDownloader.Agent.NBU trojan.”,如下图所示。
ESET扫描结果显示,恶意软件位于C:\Documents and Settings\userid\Application Data\Sun\Java\Deployment\cache\6.0\文件夹,这台计算机安装了两个旧版本Java,可见未打补丁的Java是很容易被瞄上的。
Java可以自助更新,但默认情况下,每个月才检查一次更新,你应该将其改为每天或每周检查。
在这台Windows XP电脑上,我将所有旧版本全部卸载,然后全新安装最新版本的Java(Java 6 update 22),但我发现其自动更新居然是每月的0号进行,如下图所示。
最重要的是,检查更新的程序(jusched.exe)已不再随系统启动而启动,因此谈自动更新是一件荒谬的事,如果连升级程序都不启动,谈何更新呢?
如果你安装了Java,请检查版本是否低于Java 6 update 22,不知道怎么检查,那直接访问JavaTester.org这个网站吧。
使用Java的Mac用户在这方面就处于不利地位了,因为Oracle通常只会发布Windows和Linux版本的Java更新,至于为什么我也不明白,只有苹果自己为Mac发布Java更新,但从历史上看,其更新速度远远落后于Oracle。
至此,如果你想保护好计算机,那最好卸载Java,如果你需要它,你可以随时重新安装它。
如果你的软件需要某个版本的Java支持,最好考虑仔细一点,因为你可能正在朝危险走去,特别是越旧的版本,危险越大。
英文原文:Java: use it or lose it