WhiteSource 通过对 650 多个开发人员进行了调查,并从 NVD(Nartional Vulnerability Database)、安全公告、经过同行评审的漏洞数据库、问题跟踪程序等渠道收集了数据之后,整理发布了一份研究报告。该报告显示,2019 年公开的开源软件漏洞数已激增至 6000 多个,同比增长了近 50%。

值得庆幸的是,其中有 85% 的漏洞已被披露,并提供了相应的修复程序。
不过报告也指出,遗憾的是,最终只有 84% 的已知开源漏洞出现在 NVD 中。且有关漏洞的信息并没有集中在一个位置发布,而是分散在数百种资源中。因此,一旦出现索引编制不正确的状况时,就会使得搜索特定数据变得愈发艰难。
而报告的开源漏洞也中有 45% 并未是最初就报告给 NVD 的,许多漏洞是在其他渠道中被报告数月后才在 NVD 中发布。在 NVD 之外报告的所有开源漏洞中,也只有 29% 最终被登记在册。
此外,研究人员还对 2019 年漏洞排名前七的编程语言进行了比较,并将其与过去十年的数量进行了比较。结果发现,在这几种语言中,历史基础最好的 C 语言占有最高的漏洞百分比。PHP 的相对漏洞数量也在大幅增加,但没有迹象表明其流行度有同样的提升。而 Python 方面,尽管该语言在开源社区中的普及率在持续上升,但其漏洞百分比仍相对较低。

另一方面, 该报告还考虑了通用漏洞评分系统(Common Vulnerability Scoring System,CVSS)的数据是否是衡量补漏优先级的最佳标准。 CVSS 在过去的几年中已进行了多次更新,以期达到为可对所有组织和行业提供支持的客观可衡量标准。然而在此过程中,它也改变了高严重性漏洞的定义。举例来说就是,此举意味着此前在 CVSS v2 下被定为 7.6 的漏洞,在 CVSS v3.0 标准下就可能被定为 9.8,这也意味着团队会面临着更多的高严重性问题。现在,已有超过 55% 的用户具有高严重性或严重性问题。
报告预测,在 2020 年,开源软件漏洞的数量还会持续增长。不过与此同时,一些针对开源安全系统的计划也在不断推进。
最后,报告作者也总结称,“最重要的一点是,列表中提及的开源项目具有漏洞并不意味着它们就不安全。这仅意味着作为开源项目的用户,您需要了解安全风险,并确保保持开源依赖关系的最新状态。”
但是它是个基础,如果连底层这些都有漏洞,那么无论多没完美的解决这些高级的漏洞,也是徒劳的。
用你的大厦为例子,Java等语言从一开始就在解决了地基问题,尽管解决速度不够快,但还是完成了任务,甚至都不需要Rust的介入就弄好了。
而出现得最多的大厦安全问题,种类几乎都是大门安保漏洞。所以要加强员工的培训。
同你这个理论推论:因为面向对象是种思想,因此面向对象的语言无用?
而且,用C语言之类的面向过程语言实现面向对象的项目的大有人在。
地基解决地基的问题你,装修解决装修的问题。
不能因为地基没法解决护栏的安全问题就说地基安全设计没用吧?
而且,从原理上说,就不可能有绝对安全的软件系统。
那是不是任何语言在安全设计的方面都是多余和没用了?
缓冲区一般是在栈内申请的数据。
函数内,一个缓存char buf[0x4]; 你却修改了buf[4~8],buf[4~8]是保存返回地址。
而栈一般拥有执行权限。所以,适当的时候,把buf[-0~-max],修改成目标机器码… x86汇编类似
func:
subl 4,%esp
movl %esp,%eax 这里是buf地址
addl 4,%esp
ret //相当于pop %eax jmp %eax