在当下的市场环境中,除了掌握困扰软件的最常见安全问题外,开发人员还应该了解到底是什么问题在影响他们正在使用的编程语言。静态代码分析安全公司 Veracode 最近发布了一份年度软件安全状态(SOSS)报告,其中的第 11 卷则揭示了用 .NET、C++、Java、JavaScript、PHP 或 Python 编写的应用程序中所存在的主要安全漏洞类型(基于扫描的 13 万个应用程序)。
Veracode 的高级内容营销经理 Meghan McBee 称,“在你坐下来编写代码之前,了解这些应用程序的安全趋势意味着你准备好快速修复它们,或者甚至是完全阻止它们。如果你选择的是 C++、PHP、.Net 或 Java 语言,请注意,它们很容易出现一些风险最高的漏洞。实际上,高达 59% 的 C++ 应用具有严重程度非常高的缺陷,PHP 则紧随其后。”
Veracode 发现,用 JavaScript 编写的应用中,有 31.5% 的应用至少存在一个跨站脚本(XSS)缺陷;用 PHP 编写的应用中,有 74.6% 的应用至少存在一个 XSS 缺陷。此外,还有 71% 的 PHP 应用存在加密问题。
用 .NET 编写的应用程序中存在的主要问题是信息泄露,占比 62.8%;其他还包括有代码质量(53.6%)、输入验证不足(48.8%)等。C++ 的问题有:错误处理(66.5%)、缓冲区管理错误(46.8%)、数值错误(45.8%)、目录遍历等。
Java 的问题包括:CRLF 注入(64.4%)、代码质量(54.3%)以及信息泄露(51.9%)等。而对于 Python apps,其中发现的主要问题则与加密有关,占比 35%。
值得注意的是,在每种语言的应用程序中发现的缺陷的严重性也有很大的区别。Veracode 发现,有 59% 用 C++ 编写的应用程序和 52% 用 PHP 编写的应用程序存在高严重性缺陷。用 JavaScript 编写的应用程序中,只有 9.6% 存在高严重性缺陷。Java 的高严重性缺陷数据则为 24%。
针对这些数据,Veracode 首席研究官 Chris Eng 分别作出了解读。他指出,例如,C++ 中常见的缓冲区溢出问题出现了下降的趋势,这并不是因为开发者的进步,而是在于 C++ 的流行度的下降。另一方面,受语言流行度上升的影响,影响 JavaScript 和 Python 的问题则正在一点点爬升。
Java 和 .NET 在企业中仍然很受欢迎,PHP 也仍然是 Web 应用开发中最受欢迎的脚本语言之一。Eng 认为,PHP 代码中的漏洞较多的原因主要在于,该语言提供了很多不安全的 primitives 和错误地处理方法 。
而相较之下,尽管 JavaScript 应用中发现的缺陷较少,但 JavaScript 和 node.js 开源库的庞大 npm 生态系统仍是其一个潜在的弱点。Eng 建议工程和产品团队保持更新,以降低打补丁的麻烦程度和关键应用的成本。
此外,应用程序安全公司 Snyk 此前则发表观点称,影响 JavaScript、Ruby、Java、PHP 和 Python 的大多数安全漏洞是由于项目内部加载的主要组件之间的间接依赖性引起的。
报告详情可查看:https://www.veracode.com/sites/default/files/pdf/resources/ipapers/security-flaw-heatmap/index.html
本文地址:https://www.oschina.net/news/123675/programming-language-security