机器之心编译
编辑: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 。
![用哪种语言写的应用漏洞最严重?六大主流语言代码漏洞分析出炉](http://img.jiangsulong.com/220424/03050K210-0.jpg)
文章插图
![用哪种语言写的应用漏洞最严重?六大主流语言代码漏洞分析出炉](http://img.jiangsulong.com/220424/03050I963-1.jpg)
文章插图
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 版,这个过程会很痛苦」 。
推荐阅读
- 黑客必用神器“msf”的post模块实战讲解
- 网络工程师如何用思科路由器配置GRE Over IPsec
- 全球主流社交媒体算法解析:Facebook、YouTube、Twitter如何利用算法推荐内容?
- 百合花茶的搭配,百合花茶的功效作用与泡法
- 绿茶与白血病,黄芩绿茶的功效与作用
- 两种证件照更换背景色的方法 简单又实用
- 用 Python 开发一个 「聊天室」
- Shiro框架详解
- 六安瓜片的功效与作用,笑堂六安瓜片的功效作用
- 不拉肚子的减肥茶,没有副作用的减肥茶