摘要:CWE在今年2/24发布4.0,首次将硬件安全漏洞纳入了CWE中,6/25发布4.1, 8/20就发布了4.2。

1. 按照惯例,先说故事

我们先说下CWE的幕后老板--MITRE[1]。 MITRE称自己是一家“非赢利组织”,通过联邦资助的研发中心(Federally Funded R&D Centers(FFRDC))运作。目标是为更安全的世界解决问题(we solve problems for a safer world)。

1.1. MITRE的起源

MITRE的历史可以追溯到美、苏二战后的冷战时期。50年代后期,面对苏联核打击的威胁,美国空军呼吁麻省理工学院帮助其建立一个防空系统,以帮助其侦查即将来临的轰炸机。该研究所提出了半自动地面环境(SAGE)系统结合了雷达,无线电和网络通信来检测敌机,对附近的空军基地发出警报并不断更新,这些基地的战机会及时升空拦截即将来临的威胁。SAGE也是美国的第一个现代化防空系统[6]。MITRE的前三个字母MIT就是麻省理工学院的缩写。记得以前的一个法国电影《蛇》(1973),讲的就是这个历史背景下的故事人员发现苏联制造战略轰炸机剩余的材料,做成了衣架被用到民用航空上,人员就想方设法偷了来,交给实验室分析,厉害的科学家们,通过材料的组成成分,推算出了由此材料制成的轰炸机满载时的航程。有兴趣的朋友可以翻出来看一看,那个年代非常经典的谍战片。

1.2. 著名的ATT&CK

对于MITRE这个名字,可能更多的人会先想到这些年比较火的MITRE的ATT&CK攻击框架,这个引领全球网络安全攻防潮流的安全技术战术知识库框架。10/27号MITER刚刚发布了ATT&CK的第8.1版本。说它是个战术的知识框架,是因为ATT&CK将入侵期间可能发生的情况,细分成14个策略阶段:侦察、资源开发、入侵初期、执行、持久化、权限提升、防御逃避、凭证访问、发现、横向移动、收集、指挥和控制、渗透、影响。然后针对攻击方在每个阶段所使用的技术、工具加以总结、归类成知识库,从而有助于我们理解攻击者具备的能力。 目前ATT&CK按领域分为:

  • 企业(Enterprise):传统企业网络和云环境;
  • 移动(Mobile):移动通信设备;
  • ICS:Idustrial Control System 工控系统
    下图为企业的ATT&CK:

1.3. 运营模式:臭鼬工厂(Skunk Work)

MITRE经营着一些最隐秘、低调的科学技术实验室,这些实验室就像电影《007》中的M16实验室。因为MITRE是非赢利组织,所以MITRE通过“联邦资助的研发中心”(FFDRC)的方式,运营着7家“臭鼬工厂”(Skunk Work)级别的研发中心。

也许大家对“臭鼬工厂”这个模式有些陌生,这里稍微解释一下。1943年,为了与德国飞机制造公司Messerschmitt制造的飞机竞争,洛克希德公司成立了一个名为 Skunk Works(臭鼬工厂)的顶级秘密研究和生产基地,它明确的任务是在 180 天内开发一架高速战斗机。项目在决策上给予了很大的自主权,鼓励无视标准程序。结果项目创纪录的在143天里,开发并交付了洛克希德公司的 P-80 射击机,这是美国陆军航空兵的第一架喷气式战斗机。以及后面我们熟悉的U2,F22,F35都是由这类工作室研发出来的。后来臭鼬工厂就成为一种创新的模式被一直沿用至今,苹果、Google等大公司都有类似的工作室。下图是2014年洛克希德公司在臭鼬工厂70年的时候的一个宣传图。

1.4. 研发领域

MITRE的研发领域涵盖先进的航空系统、企业现代化技术、司法工程、医疗保健、国家网络安全等。产品也从机载预警通讯系统(AWACS)、军用卫星通信系统;到FBI的社交媒体图像指纹识别项目和与之关联的人体解剖学和犯罪史数据库;帮助美国国土安全部(DHS)开发的物联网(包括智能手机、健身追查器、智能家居产品等)入侵与检测系统;据说还正在研发一项通过体味变化测谎的技术......。 Mitre吸引了大批最顶尖的网络安全人才和跨界科技专家、科学家,也营造了很多传奇的故事。比如,前MITRE工程师Matt Edman(秃头,胡须, 清脆的男中音)曾与联邦调查局(FBI)合作,利用其黑客技巧帮助FBI摧毁了臭名昭著的地下网络du品市场--“丝绸之路(Silk Road)”。

今年新冠疫情流行,美国的卫生机构向Mitre Corp.提出打造一种名为“Sara Alert”的监控系统。通过Sara Alert系统,公共卫生官员可以登记和监控生病或有感染风险的个人和家庭,被登记的人被要求每天通过短信、电子邮件、电话或网站输入他们的症状。这将有助于卫生保健机构确定哪些人需要护理,哪些人需要隔离。美国疾病控制和预防中心现在正依靠Sara Alert来挽救该国的新冠肺炎疫情监测工作。感觉有些像我们的“健康码”。

2. CWE的简介

2.1. CWE的诞生

回到今天的主题上来,从1999年MITRE开始发布CVE(Common Vulnerabilities and Exposures)[2]缺陷列表。作为CVE的一部分,MITRE的CVE团队对漏洞、攻击、故障和其他概念进行了初步分类,以帮助定义常见的软件漏洞。但是这些分类过于粗糙,无法用于代码安全评估行业产品中提出的缺陷的识别和分类的需求。为此,MITRE参与美国国土安全部(DHS)赞助的美国国家标准技术研究院(NIST)的软件保障度量和工具评估(SAMATE)项目中,于2005年首次修改了内部CVE类别工作,以用于代码评估行业。于是便产生了CWE(Common Weakness Enumeration)[3]。CWE被用于以下目的:

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

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

2.2. CWE编号类型

目前CWE对软件和硬件的缺陷进行了分类和描述, 每一个分类拥有唯一的一个CWE编号, 并按照CWE编号的类型(类缺陷、基础缺陷和变种缺陷等)形成了多层次的缺陷类型划分体系。

3. CWE 4.2的新视图

近些年随着软件安全问题越来越成为软件应用系统风险防控的重要因素,CWE的更新速度也明显加快。

特别是今年2/24发布4.0,首次将硬件安全漏洞纳入了CWE中,6/25发布4.1, 8/20就发布了4.2。

  • CWE-1350: Weaknesses in the 2020 CWE Top 25 Most Dangerous Software Weaknesses
  • CWE-1305: CISQ Quality Measures (2020)

3.1. CWE-1350: CWE/SANS Top 25

这个视图是CWE按照NIST(National Institute of Standards and Technology)管理的缺陷库NVD(National Vulnerability Database)[3]中的缺陷CVE(Common Vulnerabilities and Exposures), 并依照CVSS[4]评分体系(Common Vulnerability Scoring System)给出的出危害性(severity)和缺陷的出现频率(prevalence), 按公式计算后的得分给出的排名。 从这里可以看到数据的可靠性, 能够反映2020年发现的主要的安全缺陷,对工具、测试和安全研究有着重要的指导作用。

CWE和SANS学院一起,从2009,2010,2011 一共发布了三次 TOP 25[5]。但后来不知道因何原因,直到2019才又再次发布了TOP 25, 这是继CWE 2019 TOP 25后的又一次更新。CWE 2020 TOP 25统计了从2018到2019大约27,000 CVE漏洞。我们来看以下2020和2019年Top 25发生的变化。

3.1.1. CWE 2020 TOP 25 vs CWE 2019 TOP 25

  • 上升较快的有:
    • CWE-787 (Out-of-bounds Write): from #12 to #2;
    • CWE-522 (Insufficiently Protected Credentials): from #27 to #18
    • CWE-306 (Missing Authentication for Critical Function): from #36 to #24
    • CWE-862 (Missing Authorization): from #34 to #25
    • CWE-863 (Incorrect Authorization): from #33 to #29
      从这里可以看出,除了787是缓冲区问题之外,另外上升较快的都是权限控制相关的问题.
  • 下降较快的有:
    • CWE-426 (Untrusted Search Path): from #22 to #26
    • CWE-295 (Improper Certificate Validation): from #25 to #28
    • CWE-835 (Loop with Unreachable Exit Condition): from #26 to #36
    • CWE-704 (Incorrect Type Conversion or Cast): from #28 to #37

3.1.2. CWE 2020 TOP 25 变动表

3.1.3. 排名算法

由于排名得分的算法,考虑到了出现频率(prevalence)和危害(severity)两个参数, 确保出现频率低, 危害小的缺陷, 不容易出现在排行榜中, 而是让频率高, 危害高的缺陷出现在排行榜中。这个算法只能从统计学的角度消减数据偏差,但对于对缺陷归属哪一个CWE的理解问题的偏差,仍然会对造成在CVE的缺陷分类映射到CWE时据造成一定的误差。这些在CWE分类层次上一直存在的问题,只能希望在后期的CWE版本逐步得到解决。

  • 计算公式:
    • Freq = {count(CWE_X’ ∈ NVD) for each CWE_X’ in NVD}
    • Fr(CWE_X) = (count(CWE_X ∈ NVD) - min(Freq)) / (max(Freq) - min(Freq))
    • Sv(CWE_X) = (average_CVSS_for_CWE_X - min(CVSS)) / (max(CVSS) - min(CVSS))
    • Score(CWE_X) = Fr(CWE_X) * Sv(CWE_X) * 100

3.2. CWE-1305: CISQ Quality Measures (2020)

3.2.1. CISQ 背景

CISQ是信息和软件质量联盟(Consortium for Information & Software Quality(CISQ))基于自动化质量特征度量标准来衡量软件质量。这个质量标准源于自对象管理组织(Object Management Group (OMG))[7]。对象管理组(OMG)是一个国际性,开放成员,非营利性技术标准联盟。OMG标准由供应商,用户,学术机构推动。 OMG工作组针对各种技术和更广泛的行业制定企业集成标准。 我们熟悉的 Unified Modeling Language (UML) 和 Model Driven Architecture (MDA)就是这个组织制定的。

  • 谁在使用
    有超过1500个软件组织加入了CISQ的会员, CISQ也被许多顶级的系统集成或软件开发商使用, 例如: Cognizant, CGI, Tech Mahindra, GSA, BNY Mellon, U.S. Air Force, Generali, BMW。
  • ISO/IEC正在启动将CISQ并入ISO/IEC DIS 5055 Information technology — Software measurement — Software quality measurement — Automated source code quality measures 标准中。 估计这个标准在明年就会正式发布。

3.2.2. CISQ如何评估软件质量

  • CISQ汇集了世界知名软件专家, 定义了一套最佳实践, 以确保软件的: 可靠性, 性能效率, 安全性 和可维护性;
  • 对评估的四个维度, CISQ整理了CWE中800多个已知的软件弱点, CISQ确定了最关键和影响最大的CWE,并针对每个质量特征对它们进行了标准化以实现自动化;
  • 在每个质量度量的角度, 都可以通过静态分析的方法, 通过代码层面和架构层面进行自动化评估;
  • CISQ 四个特性的概览

3.2.3. CISQ 2020 vs CISQ 2016

CWE在2019年3月份的3.2版本引入了CISQ的2016年发布的草案0.9版本。这次发布的是CISQ今年1月份发布的1.0正式版。

4. 小结

  • 从2020 TOP 25来看, 2019,2020 缓冲区溢出, 输入校验引起的问题(注入, CSRF) 仍然是软件安全和工具需要面对的主要问题; 同时权限设置引入的问题, 在呈上升的趋势;
  • CISQ 通过静态分析来实现软件质量的自动度量, 并采用对CWE的问题检测, 细化了衡量的标准。这为通过工具对应用软件质量的自动化度量提供了一个思路, 也为建立一个统一的标准下的软件质量的测评提供了重要依据。

5. 参考

[1] MITRE: https://www.mitre.org/
[2] CVE: http://cve.mitre.org/cve/
[3] CWE: https://cwe.mitre.org/
[4] NVD: https://nvd.nist.gov/
[5] CVSS: https://nvd.nist.gov/vuln-metrics/cvss
[6] Inside americas secretive 2billion research hub collecting fingerprints from facebook hacking smartwatches and fighting covid-19
[7] OMG: https://www.omg.org/about/index.htm
[8] List of Weaknesses Included in the CISQ Automated Source Code Quality Measures June 2019
[8] List of Weaknesses Included in the CISQ Automated Source Code Quality Measures June 2019

本文分享自华为云社区《话说CWE 4.2的新视图》,原文作者:Uncle_Tom 。

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

道高一丈,且看CWE4.2的新特性的更多相关文章

  1. 十分钟带你看一遍ES6新特性

    let , const关键字 var 看习惯了java, 看js真的是忍不住想笑,比如说这个var,它太自由了,自由到{}根本限制不住它的生命周期 js的var关键字,无论在何处声明,都会被视为声明在 ...

  2. es2017新特性

    2017年6月底es2017不期而至; 截止目前es8是ecmascript规范的第九个版本:自es2015开始ECMA协会将每年发布一个版本并将年号作为版本号:算了 直接看下es2017的新特性: ...

  3. 腾讯云安全:开发者必看|Android 8.0 新特性及开发指南

    欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 背景介绍 谷歌2017 I/O开发者大会今年将于5月17-19日在美国加州举办.大会将跟往年一样发布最新的 A ...

  4. 开发者必看|Android 8.0 新特性及开发指南

    背景介绍 谷歌2017 I/O开发者大会今年将于5月17-19日在美国加州举办.大会将跟往年一样发布最新的 Android 系统,今年为 Android 8.0.谷歌在今年3 月21日发布 Andro ...

  5. 【Java8新特性】Stream API有哪些中间操作?看完你也可以吊打面试官!!

    写在前面 在上一篇<[Java8新特性]面试官问我:Java8中创建Stream流有哪几种方式?>中,一名读者去面试被面试官暴虐!归根结底,那哥儿们还是对Java8的新特性不是很了解呀!那 ...

  6. 【Java8新特性】冰河带你看尽Java8新特性,你想要的都在这儿了!!(文本有福利)

    写在前面 很多小伙伴留言说,冰河你能不能写一些关于Java8的文章呢,看书看不下去,看视频进度太慢.好吧,看到不少读者对Java8还是比较陌生的,那我就写一些关于Java8的文章吧,希望对大家有所帮助 ...

  7. 深度分析:java8的新特性lambda和stream流,看完你学会了吗?

    1. lambda表达式 1.1 什么是lambda 以java为例,可以对一个java变量赋一个值,比如int a = 1,而对于一个方法,一块代码也是赋予给一个变量的,对于这块代码,或者说被赋给变 ...

  8. 一文带你看遍 JDK9~14 的重要新特性!

    Java9 发布于 2017 年 9 月 21 日 .作为 Java8 之后 3 年半才发布的新版本,Java 9 带 来了很多重大的变化其中最重要的改动是 Java 平台模块系统的引入,其他还有诸如 ...

  9. Django 2.0 新特性 抢先看!

    一.Python兼容性 Django 2.0支持Python3.4.3.5和3.6.Django官方强烈推荐每个系列的最新版本. 最重要的是Django 2.0不再支持Python2! Django ...

随机推荐

  1. 【mq读书笔记】消息队列负载与重新分配(分配 新队列pullRequest入队)

    回顾PullMessageService#run: 如果队列总没有PullRequest对象,线程将阻塞. 围绕PullRequest有2个问题: 1.PullRequest对象在什么时候创建并加入p ...

  2. V-指令,细节补充

    v-for遍历对象的时候 v-for=" (item) in person" 这里item是person对象里面的value值 而v-for=" (item,key) i ...

  3. Lsi卡和IB卡在CentOS中升级

    LSI 9271 步骤1:准备升级工具和固件包 rpm -ivh MegaCli-8.07.14-1.noarch.rpm [root@phegdata01 ~]# unzip 23-34-0-000 ...

  4. [oBIX包使用教程] 使用 Python 通过 oBIX 协议访问 Niagara 数据

    oBIX 全称是 Open Building Information Exchange,它是基于 RESTful Web Service 的接口的标准,用于构建控制系统.oBIX是在专为楼宇自动化设计 ...

  5. Prometheus 使用之 node exporter

    本文使用的 Prometheus 版本为 2.22.0,node exporter 版本为 1.0.1:部署在 Linux 服务器Prometheus 是开源的监控报警系统和时序列数据库 (TSDB) ...

  6. 20190626_二次开发BarTender打印机_C#代码_一边读取TID_一边打印_打印机POSTEK

    demo代码如下: private void btnPrint_Click(object sender, EventArgs e) { if (this.btnPrint.Text == " ...

  7. PyQt(Python+Qt)学习随笔:QTextEdit的setText、setHtml、setPlainText之间的区别

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 QTextEdit中提供了三个设置编辑器文本的方法,分别是setTex ...

  8. python xlsxwriter创建excel 之('Exception caught in workbook destructor. Explicit close() may be required for workbook.',)

    python2.7使用xlsxwriter创建excel ,不关闭xlsxwriter对象,会报错: Exception Exception: Exception('Exception caught ...

  9. Mac上使用Docker Desktop安装Kubernetes

    下载镜像需要特殊手段,你懂的,如果没有特殊手段,建议放弃这种方式. 1 启用Kubernetes 启用过程,会联网下载kubenetes相关的核心组件镜像,如下是我下载好的: 下载好了,kubenet ...

  10. 华大MCU单片机之HC32F003/HC32F005 hc32f005_ddl_Rev1.9.0 Lite精简版库使用心得

    之前几个项目开发都是用的华大HC32F003_DDL_Rev1.0.2的库函数,今年刚开始入手华大,刚开始不是很了解这个芯片,看到库能用就上手了.这个版本的库编译效率很低,16K的芯片一下就写爆了.后 ...