细数应用软件的缺陷分类

这篇具有很好参考价值的文章主要介绍了细数应用软件的缺陷分类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文分享自华为云社区《应用软件的缺陷分类》,作者:Uncle_Tom 。

软件缺陷分类在已知缺陷管理、缺陷用例库建设、静态检查工具的能力覆盖和横向对比中起着重要的作用。本文参考GB/T-30279, CNNVD,NVD,以及CWE的各种视图, 给出了一个建立适合自己的缺陷分类方法。

1. 软件缺陷分类的作用

最近先后几波同事找到我这边来讨论软件缺陷分类。

  • 第一波:需要用缺陷分类用于业界软件漏洞的分类。根据上月底国家缺陷漏洞库CNNVD发布《2022年度网络安全漏洞态势报告》显示,2022年度新增漏洞近2万5千个,达到历史新高,保持连年增长态势。超高危级漏洞占比呈持续上升趋势,尽管漏洞修复率大幅提升,但漏洞威胁形势依然严峻。同时整体形势出现新变化,呈现高风险漏洞数量突破新高、零日争夺凸显攻防新较量、单边漏洞管控扰乱国际秩序、网络霸权主义冲击网空权益等特点,网络安全整体形势更加复杂严峻。缺陷漏洞分类有助于漏洞的统计、研究,从而加强漏洞感知机制和手段建设,以实现高水平漏洞风险治理。
  • 第二波:是为了建立缺陷漏洞库,用于静态分析工具能力的提升。漏洞的分类能在很大程度上提升巨量用例的管理能力,实现用例对缺陷场景的全面覆盖,从而通过用例指导工具的研发方向和能力覆盖的检测。
  • 第三波:是为了静态分析工具选择的分析,每个工具都拥有500-1000+的检查规则,如何了解工具间的差异?选用最少的工具,实现最大的能力覆盖?这个也可以借助检查缺陷的分类,将静态分析工具的规则按缺陷分类进行分类,就可以看清楚工具在不同软件缺陷分类问题上所拥有的规则数。基于这个数据粗略的得到,工具在软件缺陷问题检查的大体覆盖程度。这个方法也可以在缺陷分类的粒度上,降低分析、比较规则的数量。使分析人员聚焦在感兴趣的规则分类上,或者让不同的分析小组并行的、快速的进行工具间的横向对比。

业界现在有那些软件缺陷分类可以做为参考,以及如何建立适合自己的缺陷分类?

2. 《GB/T 30279-2020 信息安全技术 网络安全漏洞分类分级指南》

  • 《GB/T 30279-2020 信息安全技术 网络安全漏洞分类分级指南》

对于网络安全漏洞,国家在2020年颁布的国标《GB/T 30279-2020 信息安全技术 网络安全漏洞分类分级指南》,并于2021.06.01投入使用。这个标准的网络安全漏洞分类是基于漏洞产生或触发的技术原因对漏洞进行的划分,分类导图如下图所示。标准采用树形导图对漏洞进行分类,首先从根节点开始,根据漏洞成因将漏洞归入某个具体的类别,如果该类型节点有子类型节点,且漏洞成因可以归入该子类型,则将漏洞划分为该子类型,如此递归,直到漏洞归入的类型无子类型节点或漏洞不能归入子类型为止。

  • 分类导图

按照这个分类标准,国家缺陷漏洞库(CNNVD)将信息安全漏洞划分为26种类型,分别是:配置错误、代码问题、资源管理错误、数字错误、信息泄露、竞争条件、输入验证、缓冲区错误、格式化字符串、跨站脚本、路径遍历、后置链接、SQL注入、注入、代码注入、命令注入、操作系统命令注入、安全特征问题、授权问题、信任管理、加密问题、未充分验证数据可靠性、跨站请求伪造、权限许可和访问控制、访问控制错误、资料不足。

这个分类方式参考了CWE的 3.1版本,3.1版本从2018-03-29 到 2019-01-03使用。目前随着CWE的这几年的快速发展,里面的CWE-16 配置错误,CWE-17 代码问题,已经废弃不再使用。虽然这个分类覆盖了网络安全的主要缺陷类型,但也存在着分类粒度过大,无法完成缺陷分类的全覆盖的问题。

3. 美国国家通用漏洞数据库(NVD)的分类指导

美国国家通用漏洞数据库(NVD)从一开始就参考了CWE 的分类方式对发现的CVE进行缺陷分类指导。

3.1. 从2008到2016年

从2008到2016年, 主要参考视图CWE-635 NVD 2008-2016。如下图:

  • CWE-635 NVD 2008-2016

这个版本的分类主要有19个分类。国标的分类和这个分类有很大程度的吻合,可以说基本上一致。

3.2. 2016年之后

NVD 主要参考CWE的1003视图,如下图。

  • CWE-1003 弱点映射到已发布漏洞的简化视图

CWE-1003视图包含 37个一级节点,一共130个分类节点。

随着各种缺陷的不断发现,CWE的分类也在不断的完善过程中,特别是这几年,几乎每年都有3-4此的更新,为了使发现的CVE能够得到尽可能准确的CWE分类,在主页面上特别增加了一个CVE对应CWE的菜单CVE Mapping CWE guidance,协助用户完成对应任务。

同时这几年CWE也连续发布了各年的最危险的25种安全问题,详见:

  • 2023年最具威胁的25种安全漏洞(CWE TOP 25)
  • CWE4.8 – 2022年危害最大的25种软件安全问题
  • CWE发布2021年最危险的25种软件缺陷

在进行历年TOP 25的问题的统计过程中,CWE的研究人员也发现了软件问题分类给统计工作带来的困扰,在不断的修正着分类的从属关系,使之保持正交的分类统计方式,避免因问题分类问题导致的缺陷的重复计算。

4. 常用CWE分类视图

CWE做为软件缺陷分类的重要标准, 对安全研究、安全标准、缺陷管理起了重要的纽带作用。CWE使代码缺陷不同领域的研究人员在交流安全问题时,能够采用相同的定义,减少了歧义性。

CWE(Common Weakness Enumeration)。CWE被用于以下目的:

  • 用通用语言描述和讨论软件和硬件的弱点;
  • 检查现有软件和硬件产品中的弱点;
  • 评估针对这些弱点的工具的覆盖范围;
  • 利用常见的基准标准来识别,缓解和预防漏洞;
  • 在部署之前防止软件和硬件漏洞;

更多的介绍见:

  • 话说CWE 4.2的新视图
  • CWE视图层级关系的解析 之 CWE节点的存储和定义

4.1. CWE-699 开发者视图

CWE-699 开发者视图,这个视图主要以开发者的角度,围绕软件开发中经常使用或遇到的概念来组织弱点。这包括软件开发生命周期的所有方面,包括体系结构和实现。因此,这种观点可以与架构师、开发人员、教育工作者和评估供应商的观点紧密一致。它提供了各种类别,旨在简化导航、浏览和映射。

这个视图包含40个分类,以及399个节点。

4.2. CWE-1000 研究者视图

CWE-1000 研究者视图, 该视图旨在促进对弱点的研究,包括弱点之间的相互依赖性,并可用来系统地找出CWE内部的理论差距。该视图面向的是学术研究人员、漏洞分析人员和评估工具厂商。它对弱点进行了分类,在很大程度上忽略了如何检测它们,它们出现在代码中的什么地方,以及它们何时被引入软件开发生命周期。相反,它主要是根据软件行为的抽象来组织的。这种分类方法不关心缺陷的检测方法,缺陷在代码中的位置,在软件开发生命周期中何时引入缺陷。该视图主要基于对软件行为进行抽象描述的方法组织归类。

这个视图包含10个分类,933个节点。这个视图涵盖了所有的节点。

4.3. CWE-1400 软件安全保障分类

研究人员在使用CWE进行软件缺陷分类的过程中,发现分类之间的重合会给分类和研究带来很多的困惑。大家需要一个类别之间相互排斥的分类方法,尽管这样很不容易,但还是可以通过增加节点来逐步实现。

于是在CWE4.11版本终于给出了一个建议的参考,这个就是视图:CWE-1400 软件安全保障分类, 这个视图围绕大规模软件保证研究感兴趣的类别组织弱点,以支持使用安全语言开发等策略消除弱点。还可以用于帮助跟踪公开披露的漏洞数据中的弱点趋势。这个视图是全面的,因为每一个弱点都包含在其中,而不像大多数其他只使用弱点子集的观点。这个视图是由最高级别的类别构成的,只有第二级别的弱点。研究者视图(CWE-1000)中提出的弱点之间的关系未显示。
每个弱点只被添加到一个类别中。所有类别相互排斥;也就是说,任何弱点都不可能是一个以上类别的成员。虽然弱点难以仅根据一个特征进行严格的分类,但强制将其归入一个类别可以简化某些类型的分析。

这个分类方式,每个类别的规模可能差异很大,因为:
(1)与其他领域相比,CWE在某些领域没有得到很好的充实;
(2)分组中CWE的抽象可能会下降到Variant级别,而不是其他类型。

  • CWE-1400 软件安全保障分类,如下图:

  • CWE-1400 软件安全保障分类在应用软件架构中的分布

5. 自定义缺陷分类视图

在早些年,为了能更好的用于静态分析工具的对比和缺陷用例的整理, 依据代码编码过程的各个环节,对开发者视图(CWE-699)的40个分类进行了顺序调整,对节点数较小的一些分类进行了合并;同时参考研究者视图(CWE-1000),对开发者视图(CWE-699)分类中的节点进行了扩充。最终定义出适合静态分析工具检查和缺陷用例管理的视图。 视图中的定义按照编码、权限、程序间交互,以及程序设计分为31个分类。视图一共包含850个软件CWE弱点。

  • 分类的基本原则:

    • 覆盖软件开发的主要过程:设计,开发;
    • 覆盖应用软件的主要功能模块:外部交互;应用内部逻辑、算法;加密和权限;
    • 分类之间保持正交,不重合;
    • 为了查询节点之间的相关性,在分类内部尽可能的放置Class 节点的,并保持CW-699,CWE-1000给与的节点之间关系。
  • 自定义缺陷分类

  • 自定义视图和其他视图的比较
    从CWE 4.0之后,为了完善缺陷,加入了硬件的缺陷。自定义视图并未包含硬件类缺陷,缺陷缺少的部分主要为硬件类缺陷。

自定义缺陷采用CWE 4.12版本统计、比较。

CWE 节点类型 本视图节点数 开发者视图(699) 研究者视图(1000) 软件安全保障视图(1400) CWE节点总数
View 1 1 1 1 49
Pillar 0 0 10 10 10
Category 31 40 0 22 374
Class 87 1 105 107 107
Base 441 393 523 519 519
Variant 284 25 288 290 290
Compund 7 0 7 7 7
Total 850 460 934 956 1356

自定义缺陷分类在应用软件架构中的分布


6. 总结

  • 软件缺陷分类能够:
    • 管理已知缺陷,加强漏洞感知机制和手段建设;
    • 建立完善的用例库,用于提升分析工具的检测和提升覆盖能力;
    • 分析静态检查工具的能力覆盖和横向对比,提升多分析工具对问题的整体覆盖能力。
  • CWE-1400 软件安全保障分类,将软件缺陷分成了22个大类,并给出了类别相互排斥,且包含所有缺陷节点的分类方式;这个分类方式已经非常接近我们期望的放分类方式;
  • 在应用过程中,可以根据自己的需要定义分类视图,以便更好的关注自己应用软件的高发问题,文中给出了一个建议的样例。

7. 参考

  • 《GB/T 30279-2020 信息安全技术 网络安全漏洞分类分级指南》
  • 《Measures for excellence: reliable software on time, within buget》Lawrence H. Putnam, Ware Myers, 1991.10
  • Orthogonal Defect Classification - A Concept for In-Process Measurements,IEEE Transactions on Software Engineering ( Volume: 18, Issue: 11, November 1992
  • IEEE Std 1044-1993.IEEE standard classification for anomalies. The Institute of Electrical and Electronics Engineers,1993
  • Common Weakness Enuimeration
  • CWE-635 Weaknesses Originally Used by NVD from 2008 to 2016
  • CWE-699 Software Development
  • CWE-1000 Research Concepts
  • CWE-1400 Comprehensive Categorization for Software Assurance Trends

 文章来源地址https://www.toymoban.com/news/detail-647013.html

点击关注,第一时间了解华为云新鲜技术~

 

到了这里,关于细数应用软件的缺陷分类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 应用软件破解

    研究软件注册机制,利用OD等工具破解U盘监控器、Free Internet Window Washer,绕过或发现注册码,达到注册成功目的。 1、U盘监控器注册破解 U 盘监控器需要注册才能使用全部功能,我们的任务是使得输入任何注册码均能注册成功 。通常在注册时,程序会读取注册码,然后对注册

    2024年02月16日
    浏览(45)
  • 软件物料清单管理 | 打开“应用软件盲盒”,预警“开源组件风险”

      随着软件规模化发展和开源软件的兴起,越来越多的软件在开发过程中集成第三方组件或开源组件。虽然这极大地提高了开发效率,但也难以避免地引入了安全风险。 2021年底,知名的开源项目 Apache Log4j被暴存在严重的安全漏洞,影响范围巨大,被称之为 “核弹级” 漏洞

    2024年02月08日
    浏览(38)
  • Android 平台应用软件开发(学习中)

    1,LinearLayout(线性布局),RelativeLayout(相对布局),FrameLayout(帧布局),AbsoluteLayout(绝对布局),TableLayout(表格布局)。 2,线性布局中的控件属性说明 ①android:background,设置UI控件的背景,其值可以是资源文件夹中的图片或者是颜色的十六进制值。 ②android:orientation,该属性是线性布局

    2024年02月04日
    浏览(32)
  • 小课堂:应用软件如何做安全方案

    一、导语 作为三大入侵途径之一的“应用软件”,被用于入侵的频率非常高。 我们常用的Apache、Nginx、Tomcat、MySQL、SQL Server、Serv-U等大部分服务器软件,都有安全隐患,需要做好安全防护措施。 下面我们以Apache为例,讲解如何防御入侵。Apache是一款非常优秀的Web服务器软件

    2024年02月16日
    浏览(32)
  • 易语言软件定制软件开发脚本开发协议软件电脑网站APP应用视频制作工程制作

    随着信息技术的不断发展,易语言软件定制开发已成为许多公司的一项重要业务。本文将探讨如何利用易语言承接软件定制软件开发脚本开发协议软件电脑网站APP应用视频制作工程制作。 一、易语言概述 易语言是一种简单易学的编程语言,它采用中文编程,让不会英文的初

    2024年02月08日
    浏览(57)
  • 苹果电脑菜单栏应用管理软件Bartender 4 mac软件特点

    Bartender mac是一款可以帮助用户更好地管理和组织菜单栏图标的 macOS 软件。它允许用户隐藏和重新排列菜单栏图标,从而减少混乱和杂乱。 Bartender mac软件特点 菜单栏图标隐藏:Bartender 允许用户隐藏菜单栏图标,只在需要时显示。这样可以减少菜单栏的拥挤和视觉干扰,使界

    2024年02月03日
    浏览(36)
  • 软件测试/测试开发丨ChatGPT在软件测试领域的应用

    随着互联网技术的迅速发展,软件已经成为现代社会中不可或缺的一部分。而软件测试作为保障软件质量的关键环节,也越来越受到人们的关注。在这个领域,ChatGPT作为一种新型的人工智能技术,正逐渐应用于软件测试领域,为软件测试带来了诸多创新和改进。 在软件测试

    2024年02月14日
    浏览(44)
  • C# 软件Licence应用实例

    我们在使用一些需要购买版权的软件产品时,或者我们做的商业软件需要进行售卖,为了收取费用,一般需要一个软件使用许可证,然后输入这个许可到软件里就能够使用软件。简单的是一串序列码或者一个许可证文件,复杂的是一个定制化插件包。于是有的小伙伴就开始好

    2024年02月10日
    浏览(24)
  • VOSviewer软件的基础与应用

    VOSviewer是一款免费且专业的文献计量分析软件,也是一个知识图谱可视化工具,由荷兰莱顿大学开发,主要用于构建和查看文献计量知识图谱,基于文献的共引和共被引原理,具有可视化能力强、适合于大规模样本数据的特点,并支持标签视图、密度视图、聚类视图和分散视

    2024年02月09日
    浏览(24)
  • 软件工程应用题汇总

    DFD/L0(基本系统模型) 只包含源点终点和一个处理(XXX系统) DFD/L1(功能级数据流图)在L0基础上进一步划分处理(XXX系统) 个人理解   DFD/L2(在L1基础上进一步分解后的数据流图) 变换流 以CD为变换中心          箭头尾部记得加圆圈(空心圆代表传递的数据,实心圆代表传递

    2024年01月18日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包