编辑:Panda
静态代码剖析安全公司 Veracode 近日发布了一份运用程序剖析报告,结果创造比起 JavaScript 和 Python 等措辞,C++ 和 PHP 的安全漏洞要严重得多。
如果你是一位靠 .NET、C++、Java、JavaScript、PHP 或 Python 用饭的开拓者,那要把稳了:一项新研究揭示了这些编程措辞的紧张安全漏洞。
(图片来自网络侵删)静态代码剖析安全公司 Veracode 近期发布了这些措辞的漏洞类型数据,这是该公司扫描了 13 万运用程序的安全问题后得到的报告。
该公司调查了用 .NET、C++、Java、JavaScript、PHP 或 Python 编写的运用程序的漏洞趋势。这些数据整合在 Veracode 的《软件安全状态第 11 卷(State of Software Security Volume 11)》报告中:
https://www.veracode.com/sites/default/files/pdf/resources/ipapers/security-flaw-heatmap/index.html。
Veracode 扫描 13 万个运用程序后得到的漏洞类型数据。
对付最常用的前端开拓措辞 JavaScript,Veracode 创造 31.5% 的运用至少有一个跨站脚本(XSS)漏洞,而用 PHP 写的运用中有 74.6% 至少有一个 XSS 漏洞。此外,71% 的 PHP 运用存在加密问题。
对付用 .NET 写的运用,最紧张的问题是信息透露——62.8% 的 .NET 运用存在该问题。C++ 运用最大的问题是缺点处理,占到了 66.5%。
至于 Java 运用,紧张问题是 CRLF 注入(回车或换行注入),占受调查运用的 64.4%。Python 运用中最严重的安全问题与加密干系,涌如今 35% 的受调查运用中。
每种措辞的漏洞严重性也存在很大差别。Veracode 创造用 C++ 写的运用中有 59% 存在非常严重的漏洞;而对付 PHP,这一数字为 52%。但是,用 JavaScript 写的运用仅有 9.6% 有非常严重的漏洞,Java 运用的数据为 24%。
Veracode 首席研究官 Chris Eng 阐明了不同措辞漏洞趋势不同的缘故原由,以及如何修复它们以避免严重丢失。
「从整体数据上看,我们这个行业过去十年来没能肃清任何一种漏洞种别。」Eng 说,「没有任何问题完备消逝。很多事情都在颠簸,但看看均匀情形,你会创造比较于其它指标,这些数据更能反响措辞选择和措辞盛行程度的变革。我们看到 C++ 常见的缓存溢出问题有低落的趋势,但这并不是由于开拓者处理这些问题的能力更强了,而是由于利用 C++ 进行开拓的人变少了。」
另一方面,影响 JavaScript 和 Python 的问题则有所增长,缘故原由是这两种措辞现在非常盛行。在企业层面上,Java 和 .NET 依然备受欢迎。
PHP 依然是网页运用开拓最常用的脚本措辞之一,但 Eng 指出 PHP 漏洞数量更高的缘故原由是该措辞供应了大量不屈安的原语以及大量缺点开拓的办法。
「有些措辞会尽力避免开拓者考虑不周而把事情搞砸,.NET 便是个中最早的措辞之一。」Eng 阐明说,「比较于利用 PHP,利用 .NET 时,你会创造大量 API 都有更安全的默认设置,使得涌现跨站脚本缺点或 SQL 注入缺点会困难得多。在 PHP 中,这些缺点险些是默认的——除非你刚好在利用一种能为你供应更多保护的更当代框架。利用 PHP 出错的情形实在太多了。」
Veracode 在其剖析的 JavaScript 运用中创造的漏洞远远更少,但纵然 JavaScript 有更安全的默认设置,弘大的 npm 生态系统中的 JavaScript 和 node.js 开源软件库是潜在的薄弱环节。
「纵然你能修复自己写的代码中的所有漏洞,你利用的第三方软件库仍会带来诸多变数。」Eng 说,「打补丁实际上并不如你期望的那么好。现在的趋势是开拓者在须要时才会去下载这些软件库的最新版本,然后他们就再也不更新了,除非这个软件库又增加了什么新功能。」
工程开拓和产品团队该当如何降落为关键运用程序打补丁的麻烦和本钱?Eng 的建议是保持更新并且清晰地跟踪构建运用的技能和安全本钱随韶光的变革情形。在某个韶光,该运用将须要得到修复或打补丁,个中包括措辞更新和关键软件库的补丁。
Eng 说:「如果我现在在利用 4.5 版,而 4.6 版已经出来了,我可以利用该补丁,同时险些不会产生功能方面的影响。开源软件库不会在小版本更新中对软件库进行重大修正。但如果你现在利用的是 2.0 版,那么你就必须得更新到 4.6 版,这个过程会很痛楚」。
对付利用弘大 npm 生态系统的 JavaScript 来说,更新软件库这个问题可能会更严重一点,但 Java 和 Python 都有各自的大型生态系统:Maven 和 PyPI。
Eng 表示 JavaScript 运用均匀有大约 400 个依赖关系。如果来看第 90 百分位数的 JavaScript 运用程序,它们的依赖关系数量可达 1000 或 2000 个。
运用安全公司 Snyk 曾阐明说影响 JavaScript、Ruby、Java、PHP 和 Python 的大多数安全漏洞都源自项目中加载的紧张组件之间的间接依赖关系。
还有一点,某些 JavaScript 软件库非常受欢迎,多达 80%-90% 的 JavaScript 运用在利用它们。
Eng 说:「只要这些软件包中某一个包里有一个漏洞,你就继续了该风险。而且这不但是安全风险。」
他指的是 JavaScript 软件库 left-pad 曾涌现过的情形:2016 年的一场争吵之后,一个开拓者将该软件库移出了 npm。
「它从 GitHub 上消逝了,然后溘然之间,三分之二的互联网崩溃了,由于它们全都依赖这个几行代码的软件库来确定一个数是否在左侧添补了零。」
原文链接:https://www.zdnet.com/article/programming-language-security-these-are-the-worst-bugs-for-each-top-language/