精华内容
下载资源
问答
  • ”事实上,由于各种编程语言的特性、应用场景不同,它们是各有长处的,但是 Whitesource 另辟蹊径,从安全性方面来衡量一下谁才是最好的编程语言?更多干货内容请关注微信公众号“AI 前线”(ID:ai-front) ...

    16d99f5943ec5d904d6beb257727f69e.png

    来源|WhiteSource 译者|田晓旭 编辑|Debra AI 前线导读:IT 技术圈有一个永远无解且有争议性的问题,那就是“谁是最好的编程语言?”事实上,由于各种编程语言的特性、应用场景不同,它们是各有长处的,但是 Whitesource 另辟蹊径,从安全性方面来衡量一下谁才是最好的编程语言? 更多干货内容请关注微信公众号“AI 前线”(ID:ai-front) 评判方法:

    我们经常会听到这样的声音:“XX 语言比 XX 语言更安全。”其实,编程语言的安全性也取决于多种因素,为了避免引起歧义,我们先来阐述一下评判方法。

    本文中关于安全性的评判标准是基于 Whitesource 的综合数据库,该数据库汇集了来自多个来源的开源漏洞信息,如国家漏洞数据库(NVD)、安全咨询、Github 问题跟踪程序和流行的开源项目问题跟踪程序。

    Whitesource 综合数据库涵盖了 200 多种编程语言,在此次研究中,我们挑选了过去几年在开源项目中最流行的其中编程语言,C、Java、JavaScript、Python、Ruby、PHP 和 C++。

    在评判时,我们将参考这些编程语言的已知的开源安全漏洞的数量、这些漏洞随时间的严重程度以及常见的 CWE。

    谁是最安全的编程语言?

    b33f3cdd6c771b50933cda1d5194088c.png

    从上图中,我们可以看到在这些编程语言中,C 语言的漏洞数量是最多的,占到了过去 10 年报告中的所有漏洞的 47%。

    这也使得很多人容易根据这个结果认为 C 语言最不安全,但其实事实并非如此。首先,C 语言是初学者最常使用的编程语言,产生漏洞的几率无疑就增加了。其次,C 语言的使用时间比大多数语言都长,理所应当的会更容易受到攻击。第三,C 语言还是 Open SSL 和 Linux 内核等主要基础架构背后的语言之一。

    如果单从安全漏洞数量的维度来看,Ruby 是最安全的编程语言,而 C 语言是最不安全的编程语言。

    各编程语言安全漏洞的变化趋势

    bb8c35cc8395dc4f0a2882bd434949d3.png

    从图中我们可以看到,每个编程语言都有自己的安全高点和低点,但是在过去的两年中,所有编程语言的安全漏洞都出现了大幅的增加,其背后的原因主要是开源的普及和大众对于开源组件安全漏洞的认知提高。另外,自动化工具和对 bug 奖励计划的大量投资也促进了安全漏洞数量的大幅增加。

    高严重性漏洞的变化情况

    f46ef273a07f28eec299380fef059416.png接下来,我们来重点关注一下高严重性的漏洞(在通用安全漏洞评估系统 CVSS v2 中高于 7 的漏洞)。

    从上图中我们可以看到,虽然 2017 年安全漏洞的数量激增,但是除了 JavaScript 和 PHP 之外,报告中涵盖的大多数语言中高严重性漏洞的百分比都在下降。

    而这得益于发现安全漏洞的自动化工具。这些工具能够很好的发现漏洞,但是漏洞的严重程度并不高,这也是我们看到中等严重的漏洞数量增加的原因。

    不同语言的不同安全漏洞(CWE)

    63982acfd0415d673503b0f1bb94abf5.png

    为了更加严谨的研究各种编程语言的安全性,接下来我们要检查每种语言中出现的漏洞类型,同时为了方便理解它们的弱点和长处,我们分析了随着时间的推移在每种语言中发现的 CWE 类型。

    从图中我们可以看到站点脚本(XSS)(也称为 CWE-79)和输入验证(也称为 CWE-20)是出现频率最高的 CWE。除此之外,其它出现频率较高的 CWE 包括 信息泄漏 / 泄露(CWE-200)、路径遍历(CWE-22)、权限和访问控制(CWE-264)。

    当漏洞变得越来越流行时,会有解决这个问题的框架出现,同时开发人员也会对该漏洞越来越熟悉了解,所以,可能在可预见的未来这个漏洞就会消失。

    各编程语言的安全漏洞情况 C 语言

    C 语言是目前为止漏洞最多的语言,虽然在这十年中漏洞数量会出现上升和下降的情况,但是 C 语言的漏洞数量一直是远超其它编程语言的。

    C 语言安全漏洞:按严重程度

    29b5b802e86c3725ad6d4925e14c9137.png

    C 语言的漏洞数量实在逐年增加。2018 年,C 语言的低严重性漏洞发生率相对较低,只有 7%。另外,C 语言是唯一存在大量内存损坏问题的语言,而这些问题被认为是一种关键的脆弱性类型。

    C 语言安全漏洞:CWE

    9c65394d7ad4a3ec3c4bda9fd3f44005.png

    缓冲区错误(CWE-119)是 C 语言中最常见的安全漏洞,类似于 C++ 的漏洞配置文件。大多数的编程语言的 CWE 都与 Web、Web 服务相关,缓冲区错误和其他相关的 CWE 是不可能在管理语言中出现的。

    需要注意的是,这组漏洞(有时称为内存损坏)通常会产生严重后果。

    C 语言中的每个项目的安全漏洞

    aaf5539398521cb1014385acb9228129.png构建在 C 语言之上的开源项目很容易被跟踪。从上图中,我们可以看到,Linux 漏洞几乎总是在 C 语言中占很大比例的漏洞。2016 年年中,我们发现了一个臭名昭著的名为 ImageCritical 的漏洞,为了确保安全,安全研究人员对其进行了大量的研究,因此我们可以看到 ImageCritical 在 2017 年呈现出了异常的增长。

    Java

    Java 安全漏洞:按严重程度190e362745c01481f220a1ea71240413.png自 2016 年起,Java 的安全漏洞就一直在不断上升。2018 年,其它编程语言的安全漏洞数量都在下降,Java 是唯一一个安全漏洞在这一年增加了的编程语言,更夸张的是,2018 年的 Java 安全漏洞相比 2017 年翻了一番。

    从上图中,我们可以看到 Java 的严重性安全漏洞一直维持在 75%z 左右,而高严重性安全漏洞在最近两年增加到了 20%。

    Java 安全漏洞:CWE

    bdb61a98db3c2d95276103d0d3e10978.png从上图中我们可以看到在 Java 的 CWE 中有一个很特别的漏洞类型——反序列化问题(CWE-502),这是在所有调查的编程语言中 Java 所独有的一个漏洞类型,PHP、Ruby 和 Python 中没有出现反序列化的问题,这到底是研究人员还没注意到这些编程语言的反序列化问题还是序列化在其它语言中更安全呢?

    JavaScript

    JavaScript 安全漏洞:按严重程度

    cd2308bccf0c2fb686cc8d36cd83373f.pngJavaScript 是唯一一个在过去 10 年中安全漏洞不断增加的编程语言,其 2017 年的安全漏洞数量是 2016 年的 16 倍,而 2018 年安全漏洞数量又增加了 50% 以上。

    为何 JavaScript 的安全漏洞会一直增长呢?研究人员表示:“主要原因可能是 JavaScript 作为后端语言变得越来越流行了。”

    JavaScript 安全漏洞:CWE

    f14ee2b9cd45cee00fe1bfe38b7d36f1.png

    JavaScript 有两种常见的 CWE——密码问题(CWE-310)和路径遍历(CWE-22)。研究人员表示,“我们在调查 NPM 包时发现,61% 的 JavaScript 安全漏洞都存在路径遍历和加密的问题,但是这其中 70% 的包都已经不再使用维护了,且 2018 年的下载量少于 2000 次。”

    为什么这两种类型的 CWE 数量会这么多呢?研究人员表示,“原因之一可能是新的自动化工具在这些几乎没有维护下载的包中发现了这些 CWE。”

    从调查结果来看,2016 年发现的 JavaScript 安全漏洞几乎都是密码问题(CWE-310),而 2017 年发现了绝大多数的安全漏洞都是路径遍历问题(WEE-22)。同时,这两种类型的安全漏洞也导致了 JavaScript 安全漏洞的整体上升。

    JavaScript 社区58e1c6faa0e076c7bbdf63261f37ff8d.png在研究 JavaScript 的安全漏洞时,研究人员还发现了一个有趣的现象:超过 30% 的 JavaScript 漏洞是在社区平台上公开的。

    由于开源社区的分散性,有关安全漏洞的信息被分散在数百个安全顾问、开源项目的问题跟踪者和论坛中。虽然关于这些安全漏洞的信息也可以通过各种渠道被开发者知晓,但是可信度却无法进行衡量。

    PHP

    PHP 安全漏洞:按严重程度

    42bac76b79e5a40f13ee9c340f8334dc.png“PHP 是最好的编程语言”,这是一个在技术圈广为流传的段子,甚至非技术人也听过这个段子。但是最近几年来,PHP 的普及率一直在下降。2017 年,PHP 的安全漏洞打破了之前一直起起伏伏的趋势,数量急剧上升。

    在此次调查中,PHP 的安全漏洞数量在所有被调查的编程语言中排第二。

    PHP 安全漏洞:CWE

    b3237a82b37e2b9b98cc2fd8d800731e.png

    PHP 是唯一一种具有 SQL 注入(CWE-89)漏洞的语言。

    很多安全专家认为 SQL 注入漏洞应该是很久远的事情了,但是在 PHP 中 SQL 注入漏洞仍是很常见的安全漏洞,尤其是在 2017 年和 2018 年,SQL 注入漏洞的数量特别高。

    针对 PHP 安全漏洞,有人表示:“PHP 语言中内置的一些设计流程和糟糕的实践,使得开发者很难编写安全代码和维护高级别的安全编码。”

    Python

    Python 安全漏洞:按严重程度

    e4f94fa38c84370b2cf3b3323979ab57.png

    近几年来,Python 获得了飞速的发展,而且其在安全配置文件方面做得也非常不错。大多数编程语言都是到 2018 年才出现了安全漏洞下降的情况,但是 Python 的安全漏洞自 2015 年达到峰值,之后就一直在下降。

    且 Python 的高严重性安全漏洞的占比也非常小。

    Python 安全漏洞:CWE

    77634cafe78983f1797a99bfc214d563.png

    Python 中主要存在 4 种类型的安全漏洞,输入验证(cwe-20)、权限、特权和访问控制(cwe-264)、跨站点脚本(xss)(cwe-79)和信息泄漏 / 泄漏(cwe-200)。这些安全漏洞在其它编程语言中也是非常常见的。

    C++

    C++ 安全漏洞:按严重程度

    87dd4b42edf2106a821bc530ce3a949a.png

    C++ 和 C 语言的安全漏洞情况差不多,由于这两种编程语言不太适用于 Web 应用程序开发,因为它们的安全漏洞在其它语言中不太常见。

    C++ 安全漏洞:CWE

    24956ab64af4202ac2dc74cdeb6c1b57.png从上图中我们可以看到,缓冲器错误(CWE-119)是 C++ 中最常见的安全漏洞,排在第二位的是输入验证问题(CWE-20)。

    输入验证问题(CWE-20)是从 2016 年才开始增加的,而这一增长也侧面表明接下来安全研究人员可能会重点关注输入验证问题。

    Ruby

    Ruby 安全漏洞:按严重程度

    cfb1d1888eee74ba81adc9180d4026d7.png在被调查的七种语言中,Ruby 的安全漏洞最少,在过去的 10 年中 Ruby 的安全漏洞数量一直在起起伏伏。

    Ruby 安全漏洞:CWE

    61e054bf9163ae304577c877a7703fad.png

    Ruby 中最常见的安全漏洞是 XSS 漏洞,同时也这是其它编程语言中比较常见的安全漏洞。另外,CWE-20(输入验证)和 CWE-200(信息泄漏 / 披露)在 Ruby 中自 2013 年达到顶峰之后,之后一直就没有什么变化,这说明大多数的 Ruby 开发人员已经学会了如何处理它们。

    除了 PHP 之外,Ruby 也是唯一一种具有相对较高数量的 SQL 代码注入漏洞的语言。不过,自 2015 年之后,SQL 注入就在 Ruby 中消失了,很可能是开发人员也掌握了如何避免 SQL 注入的方法。

    参考链接:

    https://www.whitesourcesoftware.com/most-secure-programming-languages/

    7d5ca95eb972c49d29f0893cf38ce4f5.gif

    你也「在看」吗??

    展开全文
  • ”其实,编程语言的安全性也取决于多种因素,为了避免引起歧义,我们先来阐述一下评判方法。 本文中关于安全性的评判标准是基于 Whitesource 的综合数据库,该数据库汇集了来自多个来源的开源漏洞信息,如国家漏洞...

    我们经常会听到这样的声音:“XX 语言比 XX 语言更安全。”其实,编程语言的安全性也取决于多种因素,为了避免引起歧义,我们先来阐述一下评判方法。
    本文中关于安全性的评判标准是基于 Whitesource 的综合数据库,该数据库汇集了来自多个来源的开源漏洞信息,如国家漏洞数据库(NVD)、安全咨询、Github 问题跟踪程序和流行的开源项目问题跟踪程序。

    海风教育在线辅导0元一对一试听课等你来领取,领取课程方法:
    1、私信留下您的手机号和姓名,需要补习的科目。
    2、也可以在海风教育官网留下您的手机号领取 https://www.hfjy.com

    Whitesource 综合数据库涵盖了 200 多种编程语言,在此次研究中,我们挑选了过去几年在开源项目中最流行的其中编程语言,C、Java、JavaScript、Python、Ruby、PHP 和 C++。
    在评判时,我们将参考这些编程语言的已知的开源安全漏洞的数量、这些漏洞随时间的严重程度以及常见的 CWE。
    谁是最安全的编程语言?

    从上图中,我们可以看到在这些编程语言中,C 语言的漏洞数量是最多的,占到了过去 10 年报告中的所有漏洞的 47%。
    这也使得很多人容易根据这个结果认为 C 语言最不安全,但其实事实并非如此。首先,C 语言是初学者最常使用的编程语言,产生漏洞的几率无疑就增加了。其次,C 语言的使用时间比大多数语言都长,理所应当的会更容易受到攻击。第三,C 语言还是 Open SSL 和 Linux 内核等主要基础架构背后的语言之一。
    如果单从安全漏洞数量的维度来看,Ruby 是最安全的编程语言,而 C 语言是最不安全的编程语言。
    各编程语言安全漏洞的变化趋势

    从图中我们可以看到,每个编程语言都有自己的安全高点和低点,但是在过去的两年中,所有编程语言的安全漏洞都出现了大幅的增加,其背后的原因主要是开源的普及和大众对于开源组件安全漏洞的认知提高。另外,自动化工具和对 bug 奖励计划的大量投资也促进了安全漏洞数量的大幅增加。
    高严重性漏洞的变化情况
    接下来,我们来重点关注一下高严重性的漏洞(在通用安全漏洞评估系统 CVSS v2 中高于 7 的漏洞)。
    从上图中我们可以看到,虽然 2017 年安全漏洞的数量激增,但是除了 JavaScript 和 PHP 之外,报告中涵盖的大多数语言中高严重性漏洞的百分比都在下降。
    而这得益于发现安全漏洞的自动化工具。这些工具能够很好的发现漏洞,但是漏洞的严重程度并不高,这也是我们看到中等严重的漏洞数量增加的原因。
    不同语言的不同安全漏洞(CWE)

    为了更加严谨的研究各种编程语言的安全性,接下来我们要检查每种语言中出现的漏洞类型,同时为了方便理解它们的弱点和长处,我们分析了随着时间的推移在每种语言中发现的 CWE 类型。
    从图中我们可以看到站点脚本(XSS)(也称为 CWE-79)和输入验证(也称为 CWE-20)是出现频率最高的 CWE。除此之外,其它出现频率较高的 CWE 包括 信息泄漏 / 泄露(CWE-200)、路径遍历(CWE-22)、权限和访问控制(CWE-264)。
    当漏洞变得越来越流行时,会有解决这个问题的框架出现,同时开发人员也会对该漏洞越来越熟悉了解,所以,可能在可预见的未来这个漏洞就会消失。
    各编程语言的安全漏洞情况
    C 语言
    C 语言是目前为止漏洞最多的语言,虽然在这十年中漏洞数量会出现上升和下降的情况,但是 C 语言的漏洞数量一直是远超其它编程语言的。
    C 语言安全漏洞:按严重程度

    C 语言的漏洞数量实在逐年增加。2018 年,C 语言的低严重性漏洞发生率相对较低,只有 7%。另外,C 语言是唯一存在大量内存损坏问题的语言,而这些问题被认为是一种关键的脆弱性类型。
    C 语言安全漏洞:CWE

    缓冲区错误(CWE-119)是 C 语言中最常见的安全漏洞,类似于 C++ 的漏洞配置文件。大多数的编程语言的 CWE 都与 Web、Web 服务相关,缓冲区错误和其他相关的 CWE 是不可能在管理语言中出现的。
    需要注意的是,这组漏洞(有时称为内存损坏)通常会产生严重后果。
    C 语言中的每个项目的安全漏洞
    构建在 C 语言之上的开源项目很容易被跟踪。从上图中,我们可以看到,Linux 漏洞几乎总是在 C 语言中占很大比例的漏洞。2016 年年中,我们发现了一个臭名昭著的名为 ImageCritical 的漏洞,为了确保安全,安全研究人员对其进行了大量的研究,因此我们可以看到 ImageCritical 在 2017 年呈现出了异常的增长。
    Java
    Java 安全漏洞:按严重程度自 2016 年起,Java 的安全漏洞就一直在不断上升。2018 年,其它编程语言的安全漏洞数量都在下降,Java 是唯一一个安全漏洞在这一年增加了的编程语言,更夸张的是,2018 年的 Java 安全漏洞相比 2017 年翻了一番。
    从上图中,我们可以看到 Java 的严重性安全漏洞一直维持在 75%z 左右,而高严重性安全漏洞在最近两年增加到了 20%。
    Java 安全漏洞:CWE
    从上图中我们可以看到在 Java 的 CWE 中有一个很特别的漏洞类型——反序列化问题(CWE-502),这是在所有调查的编程语言中 Java 所独有的一个漏洞类型,PHP、Ruby 和 Python 中没有出现反序列化的问题,这到底是研究人员还没注意到这些编程语言的反序列化问题还是序列化在其它语言中更安全呢?
    JavaScript
    JavaScript 安全漏洞:按严重程度
    JavaScript 是唯一一个在过去 10 年中安全漏洞不断增加的编程语言,其 2017 年的安全漏洞数量是 2016 年的 16 倍,而 2018 年安全漏洞数量又增加了 50% 以上。
    为何 JavaScript 的安全漏洞会一直增长呢?研究人员表示:“主要原因可能是 JavaScript 作为后端语言变得越来越流行了。”
    JavaScript 安全漏洞:CWE

    JavaScript 有两种常见的 CWE——密码问题(CWE-310)和路径遍历(CWE-22)。研究人员表示,“我们在调查 NPM 包时发现,61% 的 JavaScript 安全漏洞都存在路径遍历和加密的问题,但是这其中 70% 的包都已经不再使用维护了,且 2018 年的下载量少于 2000 次。”
    为什么这两种类型的 CWE 数量会这么多呢?研究人员表示,“原因之一可能是新的自动化工具在这些几乎没有维护下载的包中发现了这些 CWE。”
    从调查结果来看,2016 年发现的 JavaScript 安全漏洞几乎都是密码问题(CWE-310),而 2017 年发现了绝大多数的安全漏洞都是路径遍历问题(WEE-22)。同时,这两种类型的安全漏洞也导致了 JavaScript 安全漏洞的整体上升。
    JavaScript 社区在研究 JavaScript 的安全漏洞时,研究人员还发现了一个有趣的现象:超过 30% 的 JavaScript 漏洞是在社区平台上公开的。
    由于开源社区的分散性,有关安全漏洞的信息被分散在数百个安全顾问、开源项目的问题跟踪者和论坛中。虽然关于这些安全漏洞的信息也可以通过各种渠道被开发者知晓,但是可信度却无法进行衡量。
    PHP
    PHP 安全漏洞:按严重程度
    “PHP 是最好的编程语言”,这是一个在技术圈广为流传的段子,甚至非技术人也听过这个段子。但是最近几年来,PHP 的普及率一直在下降。2017 年,PHP 的安全漏洞打破了之前一直起起伏伏的趋势,数量急剧上升。
    在此次调查中,PHP 的安全漏洞数量在所有被调查的编程语言中排第二。
    PHP 安全漏洞:CWE

    PHP 是唯一一种具有 SQL 注入(CWE-89)漏洞的语言。
    很多安全专家认为 SQL 注入漏洞应该是很久远的事情了,但是在 PHP 中 SQL 注入漏洞仍是很常见的安全漏洞,尤其是在 2017 年和 2018 年,SQL 注入漏洞的数量特别高。
    针对 PHP 安全漏洞,有人表示:“PHP 语言中内置的一些设计流程和糟糕的实践,使得开发者很难编写安全代码和维护高级别的安全编码。”
    Python
    Python 安全漏洞:按严重程度

    近几年来,Python 获得了飞速的发展,而且其在安全配置文件方面做得也非常不错。大多数编程语言都是到 2018 年才出现了安全漏洞下降的情况,但是 Python 的安全漏洞自 2015 年达到峰值,之后就一直在下降。
    且 Python 的高严重性安全漏洞的占比也非常小。
    Python 安全漏洞:CWE

    Python 中主要存在 4 种类型的安全漏洞,输入验证(cwe-20)、权限、特权和访问控制(cwe-264)、跨站点脚本(xss)(cwe-79)和信息泄漏 / 泄漏(cwe-200)。这些安全漏洞在其它编程语言中也是非常常见的。
    C++
    C++ 安全漏洞:按严重程度

    C++ 和 C 语言的安全漏洞情况差不多,由于这两种编程语言不太适用于 Web 应用程序开发,因为它们的安全漏洞在其它语言中不太常见。
    C++ 安全漏洞:CWE
    从上图中我们可以看到,缓冲器错误(CWE-119)是 C++ 中最常见的安全漏洞,排在第二位的是输入验证问题(CWE-20)。
    输入验证问题(CWE-20)是从 2016 年才开始增加的,而这一增长也侧面表明接下来安全研究人员可能会重点关注输入验证问题。
    Ruby
    Ruby 安全漏洞:按严重程度
    在被调查的七种语言中,Ruby 的安全漏洞最少,在过去的 10 年中 Ruby 的安全漏洞数量一直在起起伏伏。
    Ruby 安全漏洞:CWE

    Ruby 中最常见的安全漏洞是 XSS 漏洞,同时也这是其它编程语言中比较常见的安全漏洞。另外,CWE-20(输入验证)和 CWE-200(信息泄漏 / 披露)在 Ruby 中自 2013 年达到顶峰之后,之后一直就没有什么变化,这说明大多数的 Ruby 开发人员已经学会了如何处理它们。
    除了 PHP 之外,Ruby 也是唯一一种具有相对较高数量的 SQL 代码注入漏洞的语言。不过,自 2015 年之后,SQL 注入就在 Ruby 中消失了,很可能是开发人员也掌握了如何避免 SQL 注入的方法。

    展开全文
  • 编程语言之争,一直以来是开发者社区的...为此,开源安全公司 WhiteSource 针对七种热门编程语言的安全性做了一份报告,汇总了多个来源的开源漏洞信息,其中包括国家漏洞数据库(NVD)、安全公告、GitHub问题追踪...

    编程语言之争,一直以来是开发者社区的热议问题,因为开发者喜欢证明自己所使用的编程语言占据主导地位,尤其是安全性,只不过讨论的过程往往都伴随着双方的愤怒,最后不了了之。那么,你可知在众多热门编程语言中,哪个安全性更高?

    为此,开源安全公司 WhiteSource 针对七种热门编程语言的安全性做了一份报告,汇总了多个来源的开源漏洞信息,其中包括国家漏洞数据库(NVD)、安全公告、GitHub问题追踪器(Issue Tracker)和流行开源项目问题追踪器。

    WhiteSource 根据开源社区过去几年间使用的流行语言,确认出C,Java,JavaScript,Python,Ruby,PHP 和 C ++这七种比较热门的编程语言,并在这些语言的基础上,搜索数据库查看了过去十年中每种语言中已知开源安全漏洞的数量、随时间推移这些安全漏洞发生的变化、以及各语言最常见的 CWE(通用缺陷列表)。

                                

    正如上图所示,很明显居首位的是C语言,占到了近一半的比例。不过,这并不能说明C语言的安全性远低于其他热门语言,如此高的占比主要有以下几个原因可以解释:一是,C语言的使用时间在调查语言中是最长的;二是,C语言一般编写的代码量很大;三是,Open SSL和Linux内核等基础架构背后的主要语言之一就是C语言。这些存在时间、体积和中心性等因素的组合,可以解释C语言为什么存在这么多大量已知开源安全漏洞。

    此外,报告还显示了随时间的推移不同编程语言的开源安全漏洞数量变化。过去十年间,这些编程语言有着各自的高点和低点。但所有语言都有一个明显的趋势,即近两年所有语言的已知安全漏洞数量都在大幅增加,这可以看作是安全漏洞意识的提高及开源的更加普及。随着开源安全研究投入资源的增加,人们发现的安全问题数量也会变多。

                                  

    那么,这些漏洞究竟严重到何种程度呢?调查人员研究发现高严重性的开源安全漏洞(CVSS v2得分高于7)时,发现除了JavaScript和PHP,报告中涉及的大多数语言严重漏洞的占比处于下降趋势。此外,调查人员还研究了每种语言常见的CWE。

    其中,跨站脚本攻击(XSS,也称之为CWE-79)和输入验证(也称为CWE-20)占据了最常见的位置;另外比较突出的CWE有信息泄漏(CWE-200)、路径遍历(CWE-22)、权限及访问控制(CWE-264)、不正当访问控制(CWE-284)等。

    其实,像“我的编程语言比你更安全”类似的话,现在看来更像是程序员间的打趣。如今,大多数软件开发都依赖多种编程语言来实现,而不是执着于某一编程语言。掌握已知的开源漏洞、了解团队正在使用的编程语言中的优点和缺点,这些都是确保软件项目从一开始就具有安全性的好方法。

    如果想学习C/C++编程知识,提升自己的C/C++编程技术能力的话,欢迎关注博主的微信公众号:C语言编程学习基地,一起来加油进步吧~

    展开全文
  • 这周在 Black Hat Europe 2017 安全会议上,一名安全研究员公开了几款目前非常流行的解释型编程语言中出现的漏洞。这些编程语言上存在的问题,可能让运用这些语言开发的应用程序因此也很容易遭受攻击。 这项研究的...

    没有不漏的锅,如果底层的编程语言如果出现问题,顶层的应用程序还能幸免于难吗?

    这周在 Black Hat Europe 2017 安全会议上,一名安全研究员公开了几款目前非常流行的解释型编程语言中出现的漏洞。这些编程语言上存在的问题,可能让运用这些语言开发的应用程序因此也很容易遭受攻击。

    这项研究的作者是 IOActive 的高级安全顾问 Fernando Arnaboldi。这位专家表示他使用了自动化的模糊测试工具在解释器中对五种编程语言进行了测试:Java,Perl,PHP,Python和Ruby。在对默认库和内置函数进行模糊测试之后,他在研究中公布了每种语言存在的一些问题。

    图0:JavaScript、PHP、Python等主流编程语言爆安全漏洞

    使用 XDiFF 对 5 款语言进行模糊测试

    使用模糊测试工具,对软件进行测试通常需要检测到不寻常的行为,以及对内存崩溃以及溢出进行检测。目前比较流行的测试工具(如AFL和Peach)通常需要在寻找漏洞的时候的时候采用相同的逻辑,而这些工具无法存储执行过的测试用例的信息。

    在这位研究员的研究过程中,他自定义了自己的模糊测试工具 XDiFF(扩展差分模糊测试框架),以此适应这几款不同的编程语言。在测试过程中,他将每种编程语言都分解成了最基本的功能,然后使用XDiFF来提供各种payload输入来进行测试。

    图1:JavaScript、PHP、Python等主流编程语言爆安全漏洞

    在这次测试中,我们的的输入中主要使用了不到 30 种的原始数据类型,但也有一些特别的payload。这些特别的payload 是用于测试程序获取外部数据资源时是否会出现问题。

    以上这些测试都是用于分析测试目标——是否会出现“暴露本地文件、未授权的代码注入、未授权的系统代码执行操作”等安全问题。

    测试结果:均暴露出问题

    而从他的测试结果来看,我们确实可以看到Java、PHP、Ruby、Perl、Python分别在经历了多项测试之后,暴露出来了哪些问题。

    Python中存在可用于OS命令执行的未记录方法和本地环境变量。

    Perl 中有一种可执行如 eval() 的 typemap 函数。

    NodeJS 中输出的错误信息会泄露部分文件内容。

    JRuby 可以加载和执行并非设计为远程代码执行的代码

    PHP中常量的名字可以用来执行远程命令。

    最安全的应用层序也会因此“倒下”

    Arnaboldi 表示攻击者可以利用这些编程语言上的漏洞来“放倒”最安全的应用程序。

    一些软件开发者可能会在没有意识到的情况下将代码包含在应用程序中,而这些代码可能导致的后果却是开发者没有考虑到的。

    即便是按照安全指南来进行开发的最安全的应用程序也可能会因此出现“安全隐患”。

    即便开发者没有恶意企图,但这些漏洞也可能因为开发者无意识或试图简化开发而引入进来。

    图2:JavaScript、PHP、Python等主流编程语言爆安全漏洞

    目前XDiFF已经作为开源项目公布在GitHub上。

    更具体的演讲和演示内容也可以在Arnaboldi的论文中了解。

    参考资料:

    http://securityaffairs.co/

    https://www.bleepingcomputer.com/

    *本文作者Elaine

    展开全文
  • 作者:Elaine,来自:FreeBuf.COM链接:...这周在 Black Hat Europe 2017 安全会议上,一名安全研究员公开了几款目前非常流行的解释型编程语言中出现的漏洞。这些编程语言上存在的问题,可能让运用这
  • 由于某种原因,我们都有一种喜欢的编程语言。 您可能喜欢语法,可以使用它的工具,或者只是...语言漏洞 让我们查看报告中的列表并将其细分。 每种语言报告的开源漏洞总数: C(46.9%) PHP(16.7%) Jav...
  • IT技术圈有一个永远无解且有争议性的问题,那就是“谁是最好的编程语言?”事实上,由于各种编程语言的特性、应用场景不同,它们是各有长处的,但是Whitesource另辟蹊径,从安全性方面来衡量一下谁才是最好的编程...
  • 网络安全用什么编程语言 要成为网络安全专家,要取得成功,需要多种技能。 全方位的专业人员可以放心地实施和监视安全措施,以保护计算机系统免受攻击和未经授权的访问。 总部位于巴西的Python专家Henrique教...
  • 怎样学习一门编程语言

    万次阅读 多人点赞 2015-04-06 02:12:38
    选择一门语言确定你感兴趣的领域你可以开始学习任何编程语言(尽管其中一些被描述地比其他的更加“易学”),你得去问自己自己想用通过学习这门语言完成什么样的工作。这将会帮助你确定你应该追求的编程方式并且提供...
  • 一文解决现代编程语言选择困难:命令式编程

    万次阅读 多人点赞 2021-04-07 16:22:41
    如何了解某种编程语言的优缺点?某种编程语言是否适用于我的项目?面对此类问题,如果求助于搜索引擎,输入“最佳编程语言”,结果会罗列一堆文章,涵盖 Python、Java、JavaScript、C#、C++、PHP 等,并且大多对各...
  • 如果你是一位靠 .NET、C++、Java、JavaScript、PHP 或 Python 吃饭的开发者,那要注意了:一项新研究揭示了这些编程语言的主要安全漏洞。 静态代码分析安全公司 Veracode 近期发布了这些语言的漏洞类型数据,这是...
  • Web编程常见漏洞检测与修补

    千次阅读 2012-09-25 20:06:28
    Web漏洞检测 白盒检测 对检测者的要求: ——能读懂用此语言写的程序 ——明白漏洞成因 ——漏洞挖掘经验 常用的web脚本语言:Asp/Php/Jsp/asp.net *******************************************************...
  • 从汇编语言到高级编程语言的演变

    千次阅读 2019-06-06 15:32:33
    新的编程语言在不断诞生,新语言想用更聪明的抽象,让某些方面更容易或更强大或利用新技术和新平台带来的优势,让更多人能快速做出美妙的事情。
  • 10 大怪异的编程语言

    千次阅读 2013-12-26 22:17:15
    人们都认为编程语言很容易使用和学习。编程语言应该给你提供数据结构让你来解决实际问题,它们的语法也应清晰明了,容易理解且执行速度快,没有任何bug。但有时候编程语言设计者们会创建一些违背这些原则的语言,...
  • 适用于Linux / FreeBSD的漏洞扫描程序,无代理,用Go编写。 我们有一个懈怠的团队。 Twitter: 抽象 对于系统管理员来说,每天必须执行安全漏洞分析和软件更新可能是一种负担。 为了避免生产环境中的停机,系统管理...
  • 不可否认,想要成为一名优秀的程序员确实是需要掌握多种编程语言。通过这几年的自虐式学习,小编也慢慢的掌握了这些编程语言。接下来要为大家,介绍五款让人又爱又恨的编程语言! 1.C 语言 ...
  • 本榜单统计的是跨语言开发者最讨厌的编程语言,比如你最喜欢使用A语言来编程,那么可能会对其他语言的某些特性看不惯。这是一种很主观的看法,上榜的语言不代表这个语言不好,只是说明某些开发者不太喜欢这个语言中...
  • 令人讨厌的编程语言排行

    千次阅读 2013-09-27 13:40:10
    为了避免引起语言之争,先声明一下,这个榜单统计的是跨语言开发者最讨厌的编程语言,比如你最喜欢使用A语言来编程,那么可能会对其他语言的某些特性看不惯。  这是一种很主观的看法,上榜的语言不代表这个语言...
  • Ballerina编程语言 Ballerina是一种开放源代码编程语言和平台,供云时代的应用程序程序员轻松编写可以运行的软件。 提供和消费服务 它具有用于提供和使用服务的内在并发的一流语言构造。 顺序图 基于序列图的图形...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,651
精华内容 17,460
关键字:

编程语言的漏洞