谈谈2022年软件安全发展态势_第1页
谈谈2022年软件安全发展态势_第2页
谈谈2022年软件安全发展态势_第3页
谈谈2022年软件安全发展态势_第4页
谈谈2022年软件安全发展态势_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

谈谈2022年软件安全发展态势

目录

前言............................................................................2

1.概述........................................................................2

2.近十年软件开发发展变化.....................................................3

2.1.经过安全扫描的应用程序数量是十年前的三倍多.............................4

2.2.微服务逐渐成为主流.......................................................5

2.3.安全扫描频次比十年前增加了20倍.........................................8

2.4.三方库的安全性依旧堪忧.................................................10

3.静态安全测试(SAST)、动态安全测试(DAST)和SCA对比...........................15

3.1.缺陷发现能力对比........................................................15

3.2.缺陷修复速度对比........................................................18

3.3.缺陷修复能力对比........................................................20

4.2022年中国信息安全行业全景图谱............................................20

4.1.行业概况................................................................20

4.1.1.定义...............................................................20

4.1.2.产业链剖析:中游发展较为完善.......................................21

4.2.行业发展历程:行业进入普惠阶段.........................................23

4.3.行业发展现状............................................................23

4.3.1.行业规模增长迅速...................................................23

4.3.2.细分领域"三足鼎立”.................................................24

4.3.3.政府为主要需求领域.................................................25

4.3.4.EAL3+级别信息安全产品超过400个....................................26

4.4.行业竞争格局............................................................28

4.4.1.区域竞争格局:北京信息安全企业数量领先............................28

4.4.2.企业竞争格局:.....................................................30

4.5.行业发展前景及趋势预测.................................................33

4.5.1.2026年行业规模有望超过4000亿元....................................33

4.5.2.行业向网络化、标准化趋势发展.......................................34

5.总结.........................................................................35

第1页共35页

刖百

近期,国外知名的专注于应用安全的Veracode公司发布了他们一年一度的

《软件安全报告》至今已连续发布了12版。在最新的报告中(第12版),

Veracode公司深入观察了软件开发和软件安全近十年的发展状况,提供了详实

的数据分析和对比结果,并结合当下主流的应用缺陷扫描能力横向对比给出了

提高软件安全性的最佳实现路径。这对于持续关注国内外安全行业应用安全领

域发展态势的同行来说,具有一定的借鉴意义。

1.概述

世界正变得比以往任何时候都更紧密地联系在一起。连接使我们的生活更

轻松,但它也增加了风险。一个安全漏洞可能会产生多米诺骨牌效应,使软件

在全球范围内都受到攻击,例如去年年末爆发的Log4j高危漏洞以及近期出现

的SpringFramework远程执行代码(CVE-2022-22965),几乎影响了全球绝大多数

软件。但是,塑造了安全格局的不仅仅是增强的连接性,还有超强的竞争力和

不断创新的需求。为了加快速度,许多软件开发团队已经转向本地云技术、微

服务架构和开源代码来加速和扩展他们的努力。此外,软件开发团队已经采用

了敏捷方法,并且在开发过程中尽可能自动化更多的步骤。

虽然这种演变提高了软件开发生命周期的速度,但也带来了新的复杂性和

风险。在我们的第12版软件安全状况报告中,我们将在Cyentia研究所的帮助

下探讨这些趋势,以评估软件安全状况是如何继续发展的。我们的目标是帮助

业内同行对软件安全计划作出明智的决定,以便各位同行可以最小化风险,并

满足网络安全条例的要求,如美国白宫在2021年5月12日发布的关于改善国

家网络安全行政命令中所列出的要求。

2021年5月,拜登政府发布了一项关于网络安全的行政命令,概述了向美

国政府销售软件的供应商的新安全要求。这些要求包括软件开发过程中的安全

测试以及正在使用的开源库的物料清单,因此,已知的漏洞将被披露,并且能

够在将来进行跟踪。虽然该命令仅影响短期内向联邦政府销售软件的公司,但

它也需要制定一个试点计划,最终将改变所有软件供应商的安全要求。

第2页共35页

”商业软件的开发往往缺乏透明度,对软件抵御攻击的能力缺乏足够的重

视,并且缺乏防止恶意行为者篡改的适当控制。现在迫切需要实施更加严格和

可预测的机制,以确保产品的安全运行,并且如预期的那样。“关键软件”一

一执行对信任至关重要的功能(例如提供或要求提高系统特权或直接访问网络和

计算资源)的软件一一的安全性和完整性是一个特别令人关切的问题。因此,联

邦政府必须采取行动迅速提高软件供应链的安全性和完整性,优先处理关键软

件。”

2.近十年软件开发发展变化

与去年类似,我们查看了活跃应用程序的整个历史,而不仅仅是查看一年

内与应用程序相关的活动。通过这样做,我们可以清楚的了解到应用程序的整

个生命周期,从而得到更精确的度量和观察结果。除了回顾过去,我们还通过

考虑可能有助于提高应用程序安全性的最佳实践来设想未来如何增强软件安全

性。

Veracode用大量的数据量化了很多关于应用程序安全性状况的发展变化,

近十年是互联网高速发展的时期,我们需要后退一步,审视过去,展望未来,

看看哪些方面是稳定的,哪些方面发生了变化,并试图理解哪些原则经受住了

时间的考验,哪些发生了动摇。

首先,我们来看看人们是如何使用软件分析工具的,以及这些年来它们是

如何改变的。我们将看到这些扫描反映出的发展趋势。我们也将看到开源软件

是如何继续成为大多数应用程序不可或缺的一部分。其次,我们将分析软件的

缺陷,看看这些软件开发趋势是如何在引入软件的漏洞过程中表现出来的。接

下来,我们将检查漏洞是如何修复的,以及开发人员是否在修复漏洞方面做得

更好。最后,我们将展望未来,思考开发者究竟能做些什么才能编写出更安全

的软件。特别是,我们将看到开发人员花时间学习如何修复漏洞的简单行为有

助于更快地修复漏洞,并有助于防止将来出现安全漏洞。

第3页共35页

2.1.经过安全扫描的应用程序数量是十年前的三倍多

图1扫描的应用程序数量相比于十年前增加了三倍

从上图中,我们可以看到经过安全扫描的应用程序数量比以往任何时候都

多。这种增长不仅仅是因为有更多的组织机构产生。去年,大多数组织平均每

季度创建超过17个扫描应用程序,而十年前只有大约5个。

其可能原因有以下两点:一是组织正在创建更小、更模块化的应用程序;

二是组织正在将他们的安全扫描范围扩展到低危的应用程序。

20

创15

10

均5

0

2007200820092010201120122013201420152016201720182019202020212022

使用Vearcode安全产品的组织数量・10•200。500

第4页共35页

100%

VeryHigh

Medium

VeryLow

2010

从上图中可以看到应用程序的风险程度的分布一直相当稳定。在过去的10

年里,这种倾斜是非常一致的,大多数应用程序的风险程度都是“高”或“非

常高”,只有少数应用程序的风险程度是“低”或“非常低”。

2.2.微服务逐渐成为主流

微服务一种是松散耦合的应用程序的集合,通常有一个小的代码库,通过

API进行通信。微服务的优势在于,如果更改一个部分不太可能影响其他部分,

则可以更容易地处理应用程序的各个部分。

3o%

Googlesearchinterest

in"microservices”开

使

2o%乃

言50

的1o%25

比n%

201820192021

应用程序数量10

第5页共35页

从上图可以看出,大约在2018年之前,使用多种编程语言的应用程序数量

缓慢但稳定地增长,达到峰值(不包括异常值),约20%的应用程序使用多种编程

语言。但是,随着微服务的概念越来越受欢迎,这一数字出现了急剧下降,目

前只有不到5%的应用程序使用多种语言。

20%

<5%

在2018年,大约有20%的应用程序包含了多种软件开发编程语言。今年,

只有不到5%的应用使用了多种编程语言,这意味着软件开发人员将转向更小

的、只有一种编程语言的应用或微服务。

第6页共35页

图2使用不同编程语言开发的软件代码库平均大小与首次静态扫描的时间关系

从上图可以看出,对于微服务型架构,我们认为可以用多种编程语言编写

的应用程序的规模肯定会有所下降,这一趋势是好事情。使用JavaScript、

Python和.NET开发的应用程序数量都在下降,这表明软件开发人员更趋向于使

用微服务,其他几种常见编程语言的情况如下:

JavaScript

随着时间的推移,JavaScript应用程序变得越来越小,这可能是因为包含了

更加多样化和健壮的库生态系统

PYTHON和.NET

第7页共35页

Python和.NET规模有所减少,但这可能更多地只是均值回归,而不是真实

趋势

C++与Java

同时,使用C++和Java等更为成熟的语言编写的应用程序在过去几年中保

持着差不多的大小

Scala

与其更重量级的教父Java相比,Scala应用程序(未展示图表)的规模有所下

降,Scala的受欢迎程度可能与不同的架构目标有关。

Go

有趣的是,G。(未展示图表)是一种通常与微服务相关的语言,实际上已经

看到了应用程序大小的增加

ANDROID

在AndroidN发布之前,Android应用程序的规模越来越大,而AndroidN

改用了OpenJDK。这使得应用程序的规模大大缩小,随后又出现了缓慢而稳定

的增长。我们不认为这是一种趋势,但很高兴看到软件生态系统中的重大事件

在数据中得到验证。

Android

201220142016201820202022

2.3.安全扫描频次比十年前增加了20倍

有人说“软件正在吞噬世界”,也有人说“敏捷正在吞噬软件世界”这可

能也是对的。持续测试和集成(包括对管道进行安全扫描)正在成为一种规范,我

们可以从开发人员扫描其应用程序的频率中看到这一点。十年前,开发人员平

均每年扫描两到三次。现在,大多数开发人员每天会进行静态扫描,并且每周

第8页共35页

进行动态扫描。软件组合分析(SCA)扫描也是至少每周进行一次。在软件生命周

期中,你越早发现问题,你就越有可能在问题变得更大之前迅速解决它们。

I间

包括管道安全扫描在内的持续测试和集成正在成为常态。十年前,应用程

序每年参与安全扫描两三次。而现在,90%的应用程序每周参与安全扫描一次

以上,其中大多数每周扫描三次。

持续集成模式的部分优势在于能够轻松地向管道中添加新的组件。静态测

试是必须的。动态测试的使用也在不断增长,而且由于软件开发人员越来越意

识到开源软件固有的潜在风险,SCA的使用也在不断增长。

第9页共35页

从2018年到2021年,我们看到采用多种安全扫描类型组织增加了31%,

其中很大一部分组织使用了完整的静态、动态和SCA扫描套件。

2.4.三方库的安全性依旧堪忧

大多数应用程序(取决于编程语言)具有一种杠铃效应,几乎完全由第三方代

码或几乎完全由内部代码组成。当然也有一些例外。Java的OOP设计哲学将类

粘合在一起,直到你的代码开始看起来像一个正常运行的应用程序,这使代码

重用变得轻而易举。当有完美的第三方类可以免费使用时,为什么还要编写自

己的类呢?结果就是,Java应用程序中的大部分代码都来自第三方,并且在过

去几年中在这个方向上发展得更加迅猛。

第10页共35页

Java.NET

100%

50%

0%

JavaScriptPython

100%

0%

PHPC++

201920202021201920202021

图3不同编程语言所开发的软件中第三方库的占比情况

第11页共35页

.NETJava

Diafnostici.DebugApacheCommonsCodec

GtoballzationGuava

IOJacicson-AnnotAtions

NewtonsoftlsonJackson-core

jackson-databind

orgspringframeworkspring-context

SLF4|APIModule

SpringAOP

SpringBNns

SpringCore

2018201920202021

20182019202020212018201920202021

Python

certifi

chardetdiff-lcs

jsoti

idn«

rake

pyttwn-dateutil

rsp«c

pytzrep«c-core

PyYAMirspec-expectaiions

requestsrspec-mocks

rsp«c-suppon

setuptools

thor

tzinfo

urtlib3

20182019202020212018201920202021

图4不同编程语言TOP10三方库的使用情况

上图展示了我们感兴趣的六种语言中最受欢迎的10个库是如何随着时间的

推移而演变的。在堆积区域图中,每个波段代表使用特定库的扫描存储库的百

分比。带子越厚,代表库越受欢迎。当图表的整体高度增加时,表明这10个库

的受欢迎程度都在增加。如果库的受欢迎程度经常起起伏伏,那么我们可以预

见,随着时间的推移,带子的颜色将会大幅增加,并逐渐消失。我们在上图中

没有看到这种情况,那些顶级库的流行程度基本上是一致的。开发人员将坚持

使用可靠的库,并且可能不会尝试重构他们的代码库来获取最新的热门的可替

代软件库。当软件库没有漏洞时,更新进展缓慢,但软件库出现漏洞时,更新

速度就相对较快。只要开源软件库的开发者继续修复安全漏洞,开发者们就会

继续使用这些库。

在过去几年中,软件中是否使用了更多或更少的存在漏洞的第三方库呢?

第12页共35页

.NETJava

图5近几年不同编程语言开发的软件中使用有漏洞的三方库的占比

第13页共35页

图6在过去四年中,存在已知漏洞的软件库的比例从35%下降到不到10%

尽管存在安全漏洞的软件库的数量有很明显的下降并且大多数组织采用了

多种安全扫描能力,但是仍然有77%的第三方软件库在漏洞出现三个月后仍未

修复。

从积极的方面来看,对第三方软件库存在的漏洞进行补救的时间有了明显

的改善。在2017年,要达到50%(半衰期)的临界点需要三年多的时间,而现在

只需要一年多一点的时间。

通过分析对比近十年的数据,我们可以看出应用程序的安全性在不断提

升:

100%

HighSeverity

25%

0%

201620182020

图7存在OWASPTop10和CW曰SANSTop25中列出的缺陷的应用程序数量占比

上图分析了OWASPTop10和CWE/SANSTop25中列出的缺陷,以及那些被

归类为“高危”或以上的缺陷。随着时间的推移,如果仔细观察每一个缺陷,

我们就会注意到一些高峰和低谷。尽管线条可能会跳来跳去,总体上都在缓慢

地减少。

第14页共35页

3.静态安全测试(SAST)、动态安全测试(DAST)和SCA对比

3.1.缺陷发现能力对比

静态测试

CRLF注入

信息泄露

密码问题

代码质量

凭证管理

输入验证不足

目录遍历

跨站点脚本(XSS)

SQL注入

封装

身份验证问题

时间和状态

服务器配置96.6%

不安全依赖732%

信息泄露72.5%

密码问题59.2%

封装57.1%

身份验证问题54.7%

部署配置41.8%

会话固定1U%

跨站点脚本(XSS)10.1%

代码质量7.5%

代码注入6.9%

SQL注入6.6%

静态扫描需要直接查看分析源代码,因此,在不同的编程语言开发的软件

中查找的缺陷也不同。静态扫描非常擅长检测内存管理不正确或输入未正确验

证的缺陷。鉴于此,静态分析的结果非常依赖于开发语言也就不足为奇了。在

C++语言中使用缓冲区/内存管理发现缺陷是很常见的,但是在.NET或Java语言

第15页共35页

中不存在这些缺陷。因此,即使CRLF注入是静态分析的顶部缺陷类型,它甚至

不在C++或PHP的前10个缺陷中。

•CRLFInjection

・CRLFInjection

CredentialsManagement

•Cross-SiteScripting(XSS)

•insufhdemInputVaUdauon

•CodeQualityCryptographicissues

•informationLMloge“information

GyptocraphicIssues

•AutMntkattonHMIOT

•DirectoryTraversal

CrtdMUalsManafamant

•DirectoryTraverul•CodeQualrty

,Crou-SitaSeri{Hint(XSS)

•iMuflkcientinputVabdMion

•Enupwl4tion

PHPPython

20172018201920202021

图8不同编程语言开发的软件中通过静态分析发现的缺陷数量变化

动态扫描利用运行时环境,并针对运行时环境运行。它没有深入研究底层

语言的特性,而是可以在代码的执行和接口中发现更多的缺陷。请注意,此处

最常见的缺陷类型通常与静态分析结果不重叠。服务器配置和信息泄漏一直是

所有底层语言中发现的主要缺陷类别。这些缺陷在不同的语言中是如此一致,

因此不值得展示这些差异。每种语言的总体趋势如下图所示。

第16页共35页

ServerConfiguration

InformationLeakage

CryptographicIssues

Encapsulation

AuthenticationIssues

DeploymentConfiguration

SessionFixation

Cross-SiteScripting(XSS)

CodeQuality

图9通过动态分析发现的缺陷数量变化

软件组合分析是第三种扫描,它通过跟踪各种开源项目和包,然后识别代

码库中包含的项目和包来进行操作。这允许与开发人员共享这些库中的所有现

有信息。第三方软件中的缺陷可以从各种来源报告,如静态代码扫描、人工代

码审计、安全研究人员报告缺陷等。我们再次发现,这些类型的缺陷因语言而

异,如下图所示(但请注意,纵轴对不同语言使用不同的比例)。一些语言

(Java、JavaScript和Python)在使用时表现出明显的下降趋势,.NET和C++没有

显示出它们第三方库中的那种类型的下降。

第17页共35页

.NET

•InsuHkitntInputvalidation

•CrojsS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论