【调查】编程语言安全漏洞一览

  • A+
所属分类:安全开发

C++和PHP的高危安全漏洞数量远比JavaScript和Python等编程语言更多。

用.NET、C++、Java、JavaScript、PHP或Python编写代码的开发人员注意了:新研究告诉你需要注意这些主要安全漏洞! 

静态代码分析安全公司Veracode日前发布报告,呈现13万应用所含不同类型常见漏洞的数量。 

该公司扫描了以.NET、C++、Java、JavaScript、PHP和Python语言编写的应用,在其《软件安全状态》(第11卷)报告中汇编了各类漏洞的数量,揭示应用漏洞变化趋势。 

Veracode发现,流行前端开发语言JavaScript编写的应用中,31.5%至少含有一个跨站脚本(XSS)漏洞,而PHP编写的应用中74.6%至少含有一个XSS漏洞。此外,71%的PHP应用存在密码问题。 

.NET编写的应用所存在的主要问题是信息泄露,62.8%的.NET应用存在此问题。至于C++语言编写的应用,错误处理问题最为普遍,66.5%的C++应用都存在错误处理问题。 

Java应用最大的问题是回车或换行或回车换行(CRLF)注入,64.4%的Java应用都存在此问题。最后,Python应用中35%的安全问题都与加密有关。  

除了数量不同,不同编程语言编写的应用中所含漏洞的严重程度也大不一样。Veracode发现,59%的C++应用和52%的PHP应用含有高危漏洞。但以JavaScript编写的应用中仅9.6%含有高危漏洞。用Java编写的应用,高危漏洞占比为24%。  

Veracode首席研究官Chris Eng向媒体解释了为什么不同语言编写的应用中会存在此类漏洞趋势,并阐述了该如何避免这些漏洞演变成修复代价高昂的安全事件。  

Eng称:“从总体数据看,过去10年来安全行业并没有根除任何一类漏洞。” 

“没有哪类漏洞完全消失。很多东西都在波动,但只要查看平均数,就更能看出编程语言选择与语言流行度的变化。

“我们看到,C++中常见的缓冲区溢出在持续下降,但这并不是因为我们开发人员越来越善于减少这些问题,而是因为C++没以前那么流行了。” 

另一方面,影响JavaScript和Python的漏洞爬升了一点,因为JavaScript现在太流行了。而企业环境中Java和.NET依然流行。

PHP仍是最流行的Web应用开发脚本语言,但PHP代码中漏洞较多是因为该编程语言提供了太多不安全原语和不安全编程方法。

Eng表示:“.NET是稍微能避免误伤自己的首选编程语言之一。” 

“.NET很多API的默认设置更加安全,而且,相比PHP,用.NET更不容易出现跨站脚本错误或SQL注入错误。PHP默认情况下太容易出现这些错误了,除非你恰好使用了更先进的框架实现更好的防护,否则你有太多机会搞砸。”

虽然Veracode分析的JavaScript应用中漏洞较少,但就算JavaScript默认设置更安全,广大JavaScript和node.js开源库npm生态系统依然是潜在脆弱点。 

Eng表示:“即使能修复自个儿代码里的所有漏洞,你用到的大堆第三方库怎么办?” 

“打补丁真的没有你希望的那么管用。开发人员常会在需要的时候下载最新版库,然后不到功能崩坏不再更新。”

工程和产品团队应该怎样减少修复关键应用的麻烦和开销呢?Eng的建议是保持更新,关注应用积累了多少技术或安全债。在某些时候,应用就该修复或打上补丁了,而这其中就包含语言更新和关键库补丁。 

Eng称:“如果我的版本是4.5而4.6版已推出,我就可以几乎无风险地应用这个补丁,大概率不会破坏原有功能。没有哪个开源库会在小版本更新中做出重大更改。而如果你当前版本是2.0,又不得不升级到4.6,那可能就麻烦多多了。”   

库更新问题对于JavaScript大型npm生态系统而言可能更为突出,但围绕Java Maven和Python PyPI的生态系统也不小。 

Eng表示,JavaScript应用通常含有大约400个依赖。如果是前90%的JavaScript应用,依赖数更是高达1000或2000个。 

此外,80%~90%的JavaScript应用都使用某些非常流行的JavaScript库。

“无论何时,只要这些包里出现漏洞,你都会继承风险,而且不仅仅是安全风险。”  

Eng举出了2016年一位开发人员因不满npm而撤回JavaScript left-pad库的例子。 

“这个库从GitHub上消失后,突然之间,三分之二的互联网都瘫痪了,因为这部分互联网全都依赖这个仅四行代码的库来确定数字是否左侧填零了。”

图:Veracode按编程语言分类的漏洞数量,揭示所测13万应用中最普遍的漏洞类型。

【调查】编程语言安全漏洞一览

Veracode《软件安全状态》(第11卷)报告:(戳阅读原文查看

https://www.veracode.com/sites/default/files/pdf/resources/ipapers/security-flaw-heatmap/index.html

关键词:编程语言安全;JavaScript;Java;.NET;C++;PHP;Python


本文始发于微信公众号(数世咨询):【调查】编程语言安全漏洞一览

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: