与其它众多编程语言相比,Java在安全方面表现如何?

本文探讨了Java在编程语言安全方面的表现,与其他语言对比,Java的漏洞较少,但其安全性的评估受到广泛使用和公开漏洞研究的影响。尽管Java的安全漏洞在上升,但Java开发者有更多机会发现并修复这些问题。文章建议开发者采用DevSecOps工作流程,评估工作流程安全性,以减少Java代码中的漏洞。
摘要由CSDN通过智能技术生成

导读

与网络安全的其他方面一样,编程语言的安全程度取决于我们所说的 “安全”。的确,与其他一些常用语言相比,Java的漏洞确实较少。同样的,一些较新的语言看起来比Java更安全,至少在第一眼看上去也是如此。

很多在Java中发现的安全漏洞都是由于Java的普及而导致的。广泛的使用意味着成千上万的bug猎手致力于寻找Java语言的漏洞,这让Java在这个领域有了不公平的 "优势"。同样的,一些较新的语言,如Ruby,其隐含的安全性可能更多地反映了它们的小众使用,而不是它们的完整性。

同样是在JavaWorld上,有一些迹象表明,Java开发者在安全方面正在变得更好。

在这篇文章中,我们将看看最常用的编程语言在安全性方面的排名。我将解释一些使一种语言不如另一种语言安全的因素,以及为什么在过去几年中,已识别的漏洞增加了这么多。最后,我将提出一些Java开发人员可以减少代码中的漏洞的方法。

Java到底有多安全?

最近对最常用的编程语言的漏洞研究来自于开源安全和许可合规平台WhiteSource,WhiteSource研究了7种最流行的开源编程语言:C、Java、JavaScript、Python、Ruby、PHP和C++。然后,分析人员使用了各种来源的语言,按照识别出的漏洞数量对这些语言进行了排名。

为什么选择开源语言?

决定对开源语言进行排名不是偶然的。许多专有语言——包括开源语言的专有实现——在漏洞方面的透明度要低得多。对于一家私营公司来说,公布产品中的安全漏洞是没有商业意义的,因此,我们对这些语言的漏洞等级基本上都不知道。我们知道的漏洞比我们不知道的漏洞要容易管理得多。

根据WhiteSource的研究,到目前为止,最易受攻击的编程语言是C语言,占所有报告漏洞的47%。这个排名不会让有经验的程序员感到惊讶,但其他结果可能会让人感到惊讶:PHP排在第二位,占17%,其次是Java,占12%,JavaScript以11%的比例排在前四位,紧随其后的是Python、C++和Ruby。

了解编程语言的安全性

接下来,我们应该问,为什么有些编程语言比其他语言更容易受到攻击。根据我所引用的研究,你可能会得出结论,C语言代表着巨大的安全威胁。但是,请考虑一下,C语言的使用时间比名单上的其他语言都要长得多。正如Stephen Turner在《技术研究杂志》上所写的那样,"编程语言就像遗传学一样,有一些具有共同特征的祖先,这些祖先已经繁衍开来。"

作为榜单上最古老的语言,C语言是在一个与Java和Ruby等相对较新的语言完全不同的威胁环境中发展起来的。正如WhiteSource指出的那样,C语言的相对年龄意味着它的代码编写量也相应的增加。C语言也是主要基础架构(如OpenSSL和Linux内核)所使用的语言之一,这种量和中心地位的结合可能导致了更多的已知开源漏洞。

虽然Java在这一分析中表现良好,但作者强调了两类特别影响Java的漏洞。首先,他们指出,US-CERT早就警告过我们,Java存在日志注入攻击的漏洞,主要是通过Web浏览器进行的。这类攻击可以通过对提交的输入进行验证或认证来避免,但开发人员往往不愿意对输入进行彻底的验证,因为他们担心这样做会使他们的应用程序不那么友好。

其次,Java特别容易受到访问控制漏洞之后的信任漏洞的攻击。虽然自2013年以来,认证流程已经有所改善,但许多开发者依赖的是权威机构的证书,而这些证书并不那么可靠,有可能获得的证书并不那么严格。《技术研究杂志》援引US-CERT的说法,警告说,这为远程攻击者执行任意代码打开了大门。

Java的相对较低的漏洞提供了一个有趣的对比,Java是在C语言之后很久才开发出来的,在当时的环境中,威胁意识要高得多,所以Java的安全性要高得多也就不足为奇了。同样,虽然Ruby似乎比Java更安全,但这可能是由于该语言相对年轻和它的小众应用造成的。

安全漏洞正在上升

WhiteSource报告称,"过去两年来,所有语言的已知开源安全漏洞数量大幅上升。" 虽然自2015年以来,Java中的漏洞总体数量稳步下降,但最近漏洞数量的激增需要一个解释,我们可以将这种增加归结为两个因素。

首先,有bug bounties,这是一个相对较新的趋势,成千上万的技术专家通过挑剔一种语言来寻找漏洞。这些至少占到了开源安全漏洞增加的部分原因。此外,人们普遍认为威胁猎手对所有语言的扫描都是“平等”的,但事实并非如此。作为Web开发中最常用的语言之一,Java是威胁猎手的重要目标。在这种情况下,Java的已知漏洞排名第三位开始看起来相当低。

软件系统也比10年前复杂了一个数量级,这也是Java和其他语言中发现的漏洞越来越多的另一个主要因素。在这个世界上,智能手机应用程序可以成为感染源,每个公司都必须有一个支持JavaScript的网站,因此网站漏洞的数量呈指数级增长也就不足为奇了。再加上网络安全专业人才的长期短缺,网络安全的未来前景开始变得严峻。

如何避免Java安全漏洞

读到关于安全漏洞的研究,可能会让你心跳加速,但不要害怕。当涉及到应用程序的安全问题时,Java开发人员处于强势地位。随着成千上万的专业人员对该语言的漏洞进行扫描,我们很有可能知道该语言中相当一部分的漏洞。这种知识就是力量。

最近JavaWorld的一篇文章提供了13条开发安全的Java应用程序的规则。你还可以找到很多关于在特定环境中安全实现Java的文章和白皮书,比如Java的云安全和Java的Web应用安全。让我们考虑一下你可能忽略了的几个减少漏洞的方法。

1.迁移到DevSecOps工作流程

减少Java代码中的漏洞的一种方法是转向DevSecOps工作流程。这种类型的工作流程使安全性成为开发过程中各个阶段的首要关注点。作为开发人员,我们经常会忘记,我们的软件是由我们工作的组织的所有部门使用(有时也会被改编)。如果你的营销团队决心要破坏你的努力,那么加固你的Web应用程序以防止入侵是没有用的。让你的所有团队都参与到开发过程中,并确保安全是项目的每一个方面都要考虑到的。

2.评估工作流程的安全性

你也应该好好看看你自己的工作流程的安全性。你的Web应用本身可能是安全的,但对于开发者来说,增长最快的漏洞来源之一就是开发系统本身。如果你的开发系统被黑客入侵,它就会成为向你的软件注入恶意代码的入口。为了避免这种情况,请确保你使用VPN来加密你的所有内部通信。另外,一定要确保实现加密数据存储。

结论

虽然研究发现,Java的安全性不如其他一些语言,但开发者应该对这一发现抱有怀疑的态度。较新的和不常用的语言可能看起来更安全,但这可能是因为它们的许多漏洞还没有被发现,或者更糟糕的是,它们的漏洞已经被发现但没有被报告。

虽然你应该知道其中的风险,并采取一切合理的预防措施来保护你的Java应用的安全,但不要太过担心排名。作为一个Java开发者,你至少知道你要面对的是什么,不是吗。

作者 | Samuel Bocetta
编辑 | Gavin
原文 | https://www.javaworld.com/article/3537561/how-secure-is-java-compared-to-other-languages.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值