『黑帽子技术』Java有多安全?,与其他语言相比


『黑帽子技术』Java有多安全?,与其他语言相比
文章图片
与网络安全的其他方面一样 , 编程语言的安全级别取决于我们所说的“安全” 。 的确 , Java比其他一些常用语言具有更少的已识别漏洞 。 确实 , 至少在乍看之下 , 某些较新的语言似乎比Java更安全 。
Java中发现的许多安全漏洞是其流行的结果 。 广泛的使用意味着成千上万的Bug猎手致力于查找Java语言漏洞 , 这在该领域为Java提供了不公平的“优势” 。 同样 , 某些较新语言(例如Ruby)的隐含安全性可能更能反映其特定用途 , 而不是完整性 。
在本文中 , 我们将研究最常用的编程语言在安全性方面的排名 。 我将解释一些因素 , 这些因素会使一种语言的安全性比另一种语言低 , 以及为什么已识别的漏洞在过去几年中增加了这么多 。 最后 , 我将建议Java开发人员减少代码漏洞的几种方法 。
【『黑帽子技术』Java有多安全?,与其他语言相比】底线:从安全角度来看 , 我们所知道的漏洞要比我们所不知道的漏洞好 。 Java有多安全?
最近对最常用编程语言漏洞的研究来自开放源代码安全和许可证合规性平台WhiteSource 。 WhiteSource研究了七种最受欢迎的开源编程语言:C , Java , JavaScript , Python , Ruby , PHP和C++ 。 然后 , 分析人员使用了多种来源 , 根据发现的漏洞数量对语言进行排名 。 为什么要开源?
对开源语言进行排名的决定并非偶然 。 当涉及到漏洞时 , 许多专有语言(包括开源语言的专有实现)的透明性要差得多 。 对于私营公司而言 , 在其产品中发布安全漏洞没有商业意义 , 因此对于这些语言的漏洞级别 , 我们基本上还是一无所知 。 我们所知道的缺陷比我们所不知道的要容易得多 。
根据WhiteSource的研究 , 到目前为止 , 最易受攻击的编程语言是C , 占报告的所有漏洞的47% 。 该排名不会令有经验的程序员感到惊讶 , 但其他结果可能会令人惊讶 。 PHP排在第二位 , 占17% , 其次是Java , 占12% , JavaScript排在前四位 , 占11% 。 在这些“领导者”之后的是Python , C++和Ruby 。
[在这个由12部分组成的综合课程中 , 从入门概念到高级设计模式学习Java!]了解编程语言的安全性
接下来 , 我们应该问为什么某些编程语言比其他编程语言更容易受到攻击 。 根据我引用的研究 , 您可能会得出结论 , C代表了巨大的安全威胁 。 但是请考虑使用C比列表中的其他任何语言都使用了更长的时间 。 正如斯蒂芬·特纳(StephenTurner)在《技术研究杂志》上写道的那样 , “编程语言就像遗传学一样 , 因为有一些具有共同特征的祖先已经泛滥成灾 。 ”
作为列表中最古老的语言 , C是在与相对较新的语言(如Java和Ruby)完全不同的威胁环境中开发的 。 正如WhiteSource指出的那样 , C的相对年龄意味着它拥有相应数量的书面代码 。 C还是用于主要基础设施(如OpenSSL和Linux内核)的语言之一 。 数量和集中性的结合会导致更多已知的开源漏洞 。
尽管Java在此分析中表现良好 , 但作者强调了两种类型的漏洞 , 这些漏洞尤其会影响Java 。 首先 , 他们指出 , US-CERT长期以来一直警告我们有关Java的漏洞 , 主要是通过Web浏览器进行的日志注入攻击 。 可以通过对提交的输入进行验证或身份验证来避免此类攻击 , 但是开发人员通常不愿彻底验证输入 , 因为担心这会使他们的应用程序对用户的友好程度降低 。
其次 , Java特别容易受到访问控制漏洞之后的信任利用的影响 。 尽管自2013年以来认证流程有所改进 , 但许多开发人员仍依赖不可靠的权威机构颁发的证书 。 可能会获得不如应有的严格的证书 。 在《技术研究杂志》上引用的US-CERT警告说 , 这为远程攻击者执行任意代码提供了方便 。
Java相对较低的漏洞与C形成了有趣的对比 。 Java在C诞生之后很久就已经在威胁意识更高的环境中开发 , 因此Java的安全性要高得多也就不足为奇了 。 同样 , 尽管Ruby看起来比Java更安全 , 但这可以由该语言的相对年轻及其小众应用程序来解释 。 安全漏洞呈上升趋势 , 其中包括