百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

用哪种语言写的应用漏洞最严重?六大主流语言代码漏洞分析出炉

cac55 2024-10-11 11:02 14 浏览 0 评论

机器之心编译

编辑: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/

相关推荐

三星电视通过VGA端口接连笔记本教程

科技的发达不仅仅表现于智能电视的功能有多全面,手机、笔记本、电视盒子有多智能,而是这些电子产品是否能够相互连接、多屏互动进而进行多媒体播放与数据传输等。目前,三星电视早已可以实现多项设备间的连接与使用...

KVM210UA 2口USB电脑切换器VGA KVM切换器 键鼠控制2台电脑 免电源

登昌恒KVM210UA2口USB电脑切换器VGAKVM切换器键鼠控制2台电脑免外接电源即时切换显示画面不延迟热插拔免驱动适合MAC苹果电脑笔记本和台式电脑...

大神自己将老旧笔记本改装成多方面强悍的“超极本”

文/自己建房子亲戚有个03年的清华紫光笔记本,配置是奔腾1.8G,XP勉强运行,亲戚今年帮了非常大的忙,无以回报,把他这个垃圾本改一下略为回报新配置:CPU是i53470t的,内存是4G两条组成双...

正点原子开拓者FPGA开发板资料连载第二十二章RGBTFT-LCD彩条显示

1)实验平台:正点原子开拓者FPGA开发板2)摘自《开拓者FPGA开发指南》关注官方微信号公众号,获取更多资料:正点原子3)全套实验源码+手册+视频下载地址:http://www.openedv.c...

显卡引出故障现象及排除(造成显卡故障的原因有哪些)

故障现象一:显示器黑屏故障排除:1、先确定是否是显卡有问题。判断的方法是听PC喇叭的叫声,一长两短声肯定是显卡发生了致命错误,只能更换。2、如果无法断定显卡的好坏,可以换一块试试,还不行的话则有几种情...

用FPGA/树莓派RP2040驱动HDMI的资源

如果能够用FPGA能够驱动显示器,就可以做不少与视频相关的实验,很多FPGA开发板使用了比较简单的VGA接口,连接非常简单,如下图:然后我们就可以用FPGA的逻辑来做各种游戏了:然而,现在的显示器基本...

STM32+A3P125 图形控制器方案,多参数监护仪数据采集模块深度解析

一、生理信号采集与转换架构多参数监护仪数据采集模块是将人体生理信号转化为数字信号的核心单元,其架构遵循“传感器感知→信号调理→模数转换→数字处理”的标准化流程:1.传感器类型与生理信号转换传感器...

电脑重启都提示AMD显卡错误“No AMD graphics driver is..”解决方法

电脑重装完系统后,每次重启都提示AMD显卡错误“NoAMDgraphicsdriveris......”怎么办?网上相关问题解决很多人方法是打驱动,可是有些是驱动打好了还是反复出现NoAM...

ipad1改造显示器之拆解篇(ipadair改显示器)

闲来无事,翻出来家里12年前的初代ipad,除了能正常充电开机盖泡面之外,好像啥也干不了……上网一搜有许多改成显示器的案例,按耐不住的激动的小手也想跃跃欲试一番,说干就干,先从拆解开始。注意,以hom...

老电脑显卡驱动装不上?降级旧版驱动一招解决!

老电脑显卡驱动装不上?降级旧版驱动一招解决!今天给家里的老台式机重装系统遇到了麻烦:i34130处理器配上HD7770显卡,装完Win7后,显卡驱动死活装不对!问题表现:最初状态:设备管理器“显...

想淘汰VGA 先得知道这些门道(vga是不是淘汰了)

不要说新显卡,就是在主板上,VGA接口也越来越少,眼看就被彻底淘汰了。当然小伙伴们的显示器应该早就不是只有VGA接口的旧型号了,彻底淘汰VGA就换个接口或者弄个转接呗,可是……真的这么简单吗?小编今天...

IMX258摄像头驱动(摄像头最新驱动)

IMX25813MPOISUSBCamera(A)说明IMX25813MPOISUSBCamera(A)功能简介特性USB通用摄像头1300万像素接口USB...

朗强科技:VGA视频信号分配原理分析

VGA分配器的主要功能是把一个视频信号重新分配成多个信号。高分辨率的视频分配放大器的作用是在接收一个来自计算机视频端口的信号后将其进行放大处理,并且在保持原有信号质量的情况下,将其信号分配到多个高分辨...

视频矩阵的应用及分类(视频矩阵的应用及分类)

视频矩阵-基本功能和要求视频矩阵-基本功能和要求  一个矩阵系统通常还应该包括以下基本功能:字符信号叠加;解码器接口以控制云台和摄像机;报警器接口;控制主机,以及音频控制箱、报警接口箱、控制键盘等附件...

告别蓝屏烦恼,Windows系统崩溃急救指南!

Windows系统蓝屏(BlueScreenofDeath,简称BSoD)是Windows操作系统在无法从系统错误中恢复时显示的屏幕图像,通常会伴随一个或多个错误代码,这些代码是诊断问题的关键线...

取消回复欢迎 发表评论: