用 CWE API 减轻软件产品中的安全风险

news2024/12/26 22:28:49

1. CWE REST API 推出的目的

8 月 8 号,CWE™ 计划推出了“CWE REST API”。

CWE™计划由美国网络安全与基础设施安全局(Cybersecurity & Infrastructure Security Agency(CISA))资助的国土安全系统工程与发展研究所(Homeland Security Systems Engineering and Development Institute(HSSEDI))运营。

“CWE REST API” 是一项由CWE REST API工作组推动的社区驱动的工作。API 的目的是简化安全软件和硬件架构师、EDA 工具开发人员、验证工程师之间的接口,用于减轻其产品,以及数据库本身中的安全风险。

从项目负责的两个主要负责人,一个来自Synopsys,另一个来自MITRE。

CWE REST API 为以下人员提供了一种简单有效的方式来保持 CWE 最新的内容信息:

  • 漏洞管理领域的项目合作伙伴
  • 软件 (software(SW)) 和硬件 (hardware(HW)) 开发人员
  • 架构师
  • 电子设计自动化 (electronic design automation(EDA)) 工具开发人员
  • 验证工程师
  • 其他关心降低其产品安全风险的人

API 推出为下游下游应用程序,始终保持最新状态,这将成为利用 CWE 内容更改的重大改进。

2. 访问 CWE REST API

用于访问 CWE REST API 的根 URL,无需注册或使用任何凭据即可使用。

建议使用 API 在本地填充 CWE 内容的缓存,每当有新版本可用时,都可以刷新该缓存。

CWE REST API 的根 URL: https://cwe-api.mitre.org/api/v1/

可以直接在浏览器中直接输入这个地址加上相应的请求。

  • 例如查找当前的 API CWE 的版本

    • 请求:
      https://cwe-api.mitre.org/api/v1/cwe/version
    • 响应回复
    {
        "ContentVersion": "4.15",
        "ContentDate": "2024-07-16",
        "TotalWeaknesses": 964,
        "TotalCategories": 409,
        "TotalViews": 54
    }

可以看到当前版本为最新的 CWE 4.15,总共有 964 个弱点节点,409 个分类节点,54 个弱点视图。
有关 CWE 4.15 的介绍详见:《CWE 4.15 - AI/ML 引入的应用缺陷》

3. CWE REST API 简介

CWE REST API 的相关介绍放在了: GitHub - CWE-CAPEC/REST-API-wg

  • API 主要包含以下API:

3.1. 查找CWE 版本(/cwe/version)

  • API作用:查找当前 CWE 的版本

  • 请求:
    https://cwe-api.mitre.org/api/v1/cwe/version

  • 响应回复

    {
        "ContentVersion": "4.15",
        "ContentDate": "2024-07-16",
        "TotalWeaknesses": 964,
        "TotalCategories": 409,
        "TotalViews": 54
    }

3.2. 查找CWE ID 类型(/cwe/{id(s)})

  • API作用:查找一个或多个CWE ID的类型,ID之间使用逗号分隔。

  • 请求:查找节点1400,284,1396,269,260,259,384 的类型
    https://cwe-api.mitre.org/api/v1/cwe/1400,284,1396,269,260,259,384

  • 响应回复

[
    {
        "Type": "view",
        "ID": "1400"
    },
    {
        "Type": "pillar_weakness",
        "ID": "284"
    },
    {
        "Type": "category",
        "ID": "1396"
    },
    {
        "Type": "class_weakness",
        "ID": "269"
    },
    {
        "Type": "base_weakness",
        "ID": "260"
    },
    {
        "Type": "variant_weakness",
        "ID": "259"
    },
    {
        "Type": "compound_weakness",
        "ID": "384"
    }
]
  • 现有 CWE 节点类型
图标类型节点数量说明

视图(View)50视图表示一种视角,人们可能会用它来查看目录中的弱点。

支柱(Weakness-Pillar)10最抽象的弱点类型,代表与之相关的所有类(class)/基本(base)/变体(Variant)的主题。 支柱不同于类别,因为从技术上讲,支柱仍然是一种描述错误的弱点,而类别则代表用于对相关事物进行分组的常见特征。

分类(Category)374分类是基于某些共同特征或属性的弱点的集合。类别主要用作CWE的组织机制,不应由外部源映射到。

类别(Weakness-Class)110一种以非常抽象的方式描述的弱点,通常与任何特定的语言或技术无关。 比支柱弱点更具体,但比基本弱点更笼统。 类级别的弱点通常用以:行为、属性和资源维度中的1-2来描述问题。

基础(Weakness-Base)520一种更具体的弱点类型,大部分与资源或技术无关,但具有足够的详细信息以提供检测和预防的特定方法。基本级别的弱点通常用以:行为、属性、技术、语言和资源维度中2-3个维度来描述问题。

变体(Weakness-Variant)292是与特定类型的产品相关的弱点,通常与特定的语言或技术相关。比基本弱点更具体。变体级别的弱点通常用以:行为、属性、技术、语言和资源维度中3-5个维度来描述问题。

复合缺陷(Weakness-Compound)的组合(Composite)方式7由两个或多个不同的弱点组成的复合元素,其中所有弱点都必须同时存在才能出现潜在的弱点。消除任何弱点可以消除或显着降低风险。一个弱点 X 可以被“分解”为组件弱点 Y 和 Z。在某些情况下,一个弱点对于组合可能不是必不可少的,但改变其性质时,该弱点有可能会变成缺陷。
  • 各类型之间的关系:

     > 

     > 

     > 

3.3. 查找弱点节点信息(/cwe/weakness/{id(s)}

  • API作用:查找弱点节点的信息。

    • 输入的是CWE 的ID;
    • ID 的类型只能是:pillar_weakness, class_weakness, base_weakness, variant_weakness, compound_weakness;
    • 可以同时输入多个 CWE ID,每个 ID 之间用逗号分隔。
  • 请求:查找 CWE-120:未进行输入大小检查的缓冲区拷贝(传统缓冲区溢出) 的信息
    https://cwe-api.mitre.org/api/v1/weakness/120

  • 响应回复

3.4. 查找分类节点信息(/cwe/category/{id(s)})

  • API作用:查找分类节点的信息。

    • 输入的是CWE 的ID;
    • ID 的类型只能是:category;
    • 可以同时输入多个 CWE ID,每个 ID 之间用逗号分隔。
  • 请求:查找类别节点 CWE-1399:内存安全 的信息
    https://cwe-api.mitre.org/api/v1/category/1399

  • 响应回复

3.5. 查找视图节点信息(/cwe/view/{id(s)})

  • API作用:查找视图节点的信息。

    • 输入的是CWE 的ID;
    • ID 的类型只能是:view;
    • 可以同时输入多个 CWE ID,每个 ID 之间用逗号分隔。
  • 请求:查找视图 CWE-1400:软件安全保障综合分类 的信息
    https://cwe-api.mitre.org/api/v1/cwe/view/1400

  • 响应回复

3.6. 查找弱点节点在视图中的父节点(/cwe/{id}/parents?view={viewId})

  • API作用:查找弱点节点在不同视图中的父节点。

  • 请求:CWE-272:最小特权原则违背 的父节点
    https://cwe-api.mitre.org/api/v1/cwe/272/parents

  • 响应回复

[
    {
        "Type": "class_weakness",
        "ID": "271",
        "ViewID": "1000",
        "Primary_Parent": true
    },
    {
        "Type": "category",
        "ID": "1011",
        "ViewID": "1008"
    },
    {
        "Type": "category",
        "ID": "1149",
        "ViewID": "1133"
    },
    {
        "Type": "category",
        "ID": "1396",
        "ViewID": "1400"
    },
    {
        "Type": "category",
        "ID": "265",
        "ViewID": "699"
    },
    {
        "Type": "category",
        "ID": "254",
        "ViewID": "700"
    },
    {
        "Type": "category",
        "ID": "748",
        "ViewID": "734"
    },
    {
        "Type": "category",
        "ID": "859",
        "ViewID": "844"
    },
    {
        "Type": "category",
        "ID": "901",
        "ViewID": "888"
    }
]
  • API作用:查找弱点节点在指定视图中的父节点。

  • 请求:CWE-272:最小特权原则违背 在CWE-1000:研究者视图中的父节点
    https://cwe-api.mitre.org/api/v1/cwe/623/parents?view=1000

  • 响应回复

[
    {
        "Type": "class_weakness",
        "ID": "271",
        "ViewID": "1000",
        "Primary_Parent": true
    }
]
  • CWE-272:最小特权原则违背 在CWE-1000:研究者视图 中的父节点是 CWE-271:特权放弃/降低错误

3.7. 查找弱点节点在视图中的后代节点(/cwe/{id}/descendants?view={viewId})

  • API作用:查找弱点节点在视图中的后代节点,即这个节点的所有子节点。

    • 请求:查找 CWE-119:内存缓冲区边界内操作的限制不恰当 的后代节点
      https://cwe-api.mitre.org/api/v1/cwe/119/descendants

    • 响应回复

在视图:CWE-1000:研究者视图, CWE-1003:简化弱点映射到发布漏洞视图, CWE-1305:2020 CISQ 质量度量视图中都有弱点CWE-119:内存缓冲区边界内操作的限制不恰当 ,可以查找这个节点的后代节点。

  • API作用:查找弱点节点在指定视图中的后代节点。

    • 请求:查找 CWE-119:内存缓冲区边界内操作的限制不恰当 在视图 CWE-1000:研究者视图 中的后代节点
      https://cwe-api.mitre.org/api/v1/cwe/119/descendants?view=1000

    • 响应回复

只查找CWE-1000:研究者视图中,CWE-119:内存缓冲区边界内操作的限制不恰当 的后代节点。

  • CWE-1000:研究者视图中 CWE-119:内存缓冲区边界内操作的限制不恰当 的实际位置

3.8. 查找弱点节点的子节点(/cwe/{id}/children?view={viewId})

  • API作用:查找弱点节点在视图中的子节点,即这个节点的儿子节点。

    • 请求:查找 CWE-119:内存缓冲区边界内操作的限制不恰当 在视图 CWE-1000:研究者视图 中的子节点
      https://cwe-api.mitre.org/api/v1/cwe/119/children?view=1000

    • 响应回复

[
    {
        "Type": "base_weakness",
        "ID": "120",
        "ViewID": "1000"
    },
    {
        "Type": "base_weakness",
        "ID": "125",
        "ViewID": "1000"
    },
    {
        "Type": "base_weakness",
        "ID": "466",
        "ViewID": "1000"
    },
    {
        "Type": "base_weakness",
        "ID": "786",
        "ViewID": "1000"
    },
    {
        "Type": "base_weakness",
        "ID": "787",
        "ViewID": "1000"
    },
    {
        "Type": "base_weakness",
        "ID": "788",
        "ViewID": "1000"
    },
    {
        "Type": "base_weakness",
        "ID": "805",
        "ViewID": "1000"
    },
    {
        "Type": "base_weakness",
        "ID": "822",
        "ViewID": "1000"
    },
    {
        "Type": "base_weakness",
        "ID": "823",
        "ViewID": "1000"
    },
    {
        "Type": "base_weakness",
        "ID": "824",
        "ViewID": "1000"
    },
    {
        "Type": "base_weakness",
        "ID": "825",
        "ViewID": "1000"
    }
]
  • CWE-1000:研究者视图中 CWE-119:内存缓冲区边界内操作的限制不恰当 的子节点

3.9. 查找弱点节点的祖先(/cwe/{id}/ancestors?view={viewId})

  • API作用:查找弱点节点在各个视图中的祖先,即查找这个节点的父节点,直到根节点。
    • 请求:查找 CWE-119:内存缓冲区边界内操作的限制不恰当 各视图 中祖先
      https://cwe-api.mitre.org/api/v1/cwe/119/ancestors
    • 响应回复

很多视图中都包含 CWE-119:内存缓冲区边界内操作的限制不恰当。

  • API作用:查找弱点节点在指定视图中的祖先。
    • 请求:查找 CWE-119:内存缓冲区边界内操作的限制不恰当 在视图 CWE-1000:研究者视图 中祖先
      https://cwe-api.mitre.org/api/v1/cwe/119/ancestors?view=1000

    • 响应回复

[
    {
        "Data": {
            "Type": "class_weakness",
            "ID": "119",
            "ViewID": "1000"
        },
        "Parents": [
            {
                "Data": {
                    "Type": "class_weakness",
                    "ID": "118",
                    "ViewID": "1000"
                },
                "Parents": [
                    {
                        "Data": {
                            "Type": "pillar_weakness",
                            "ID": "664",
                            "ViewID": "1000"
                        },
                        "Parents": [
                            {
                                "Data": {
                                    "Type": "view",
                                    "ID": "1000",
                                    "ViewID": "1000"
                                },
                                "Parents": null
                            }
                        ]
                    }
                ]
            }
        ]
    }
]
  • CWE-119:内存缓冲区边界内操作的限制不恰当 在CWE-1000:研究者视图中的祖先

4. CWE REST API 提供的 CWE JSON 格式

在 GitHub - CWE-CAPEC/REST-API-wg 还提供了 CWE 的 JSON 格式。

  • REST-API 目录结构如下

4.1. Json Schema

Json schema 是用来定义Json 文件的格式。这里使用的是 2020-12 的版本: “https://json-schema.org/draft/2020-12/output/schema”

Json schema 存放在目录: specifications 目录下。

这些 Schema 为每个 Json 文件给出了 Json 文件格式的定义,包括 Json 结构,字段类型,枚举值等。可以用这些 Json schema 来校验里面的 Json文件。

4.2. CWE Json 文件

  • 所有 CWE REST API 需要用到的 Json 文件 都存放在目录: json_repo 目录下。
    • C 目录:存放 409 个 CWE 类 Json 文件;
    • V 目录: 存放 54 个 CWE 视图 Json 文件;
    • W 目录: 存放 964 个 CWE 弱点 Json 文件;

  • 在项目的根目录下还有两个可以利用的 Json 文件:
    • cwe.json: CWE 各节点信息;
    • cwe_tree.json: CWE 节点关系;

5. 总结

  • CWE REST API 为安全需要提供了一种简单的获取 CWE 信息的接口;
  • API 提供了查找:版本、节点类型、节点(弱点、类、视图)信息, 以及节点在视图中的父节点、祖先、子节点和所有子节点的查询能力;
  • 提供了 CWE 的 Json 格式文件, 让使用者在除了 XML 格式外多了一个选择;

6. 参考

  • CWE REST-API Quick Start

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2054806.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AutoSAR SecOC小小科普

目录 1.为什么要提SecOC 2.SecOC基本原理 2.1 参与到MAC计算的数据有哪些 2.2 新鲜度值如何管理 3.SecOC与各模块关联关系 1.为什么要提SecOC 在车载网络技术里,大家基本都是从CAN开始入门。在CAN DBC里,我们总能看到有些报文除了自带有效payload外…

AWS 消息队列服务 SQS

AWS 消息队列服务 SQS 引言什么是 SQSSQS 访问策略 Access Policy示例:如何为 DataLake Subscription 配置 SQS 引言 应用系统需要处理海量数据,数据发送方和数据消费方是通过什么方式来无缝集成消费数据的,AWS 提供 SQS 消息队列服务来解决…

42000 Star图标工具Mermaid!

Mermaid:用文本构建图表世界 - 精选真开源,释放新价值。 概览 Mermaid.js 是一个创新的开源工具,专为简化图表创建流程而设计。它通过一种简洁的文本描述语言,使得用户能够快速地生成流程图、序列图、甘特图等图表,而…

【威锋网-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…

JavaEE过滤器的创建与使用过滤器的使用场景

过滤器 Filter也称之为过滤器,过滤器是javaEE规范肿定义的一种技术,可以让请求到达目标servlet之前,先进入到过滤器中,在过滤器中统一进行一些拦截处理,当处理完成后,可以继续向后执行,到达目标servlet,如果配置了多个过滤器,也可以进入下一个过滤器 创建过滤器 创…

一键更换Linux优质的软件源和docker源 —— 筑梦之路

一个非常牛逼的开源项目:https://github.com/SuperManito/LinuxMirrors.git LinuxMirrors 使换源更简单 - LinuxMirrors 支持的操作系统 系统名称适配版本Debian8.0 ~ 13Ubuntu14.04 ~ 24Kali Linux2.0 ~ 2024Linux Mint19.0 ~ 21 / LMDE 6DeepinallArmbianallP…

Redis7基础篇(一)

redis十大数据类型 目录 redis十大数据类型 redis键key 数据类型命令 redis字符串string 分布式锁 ​编辑 ​编辑​编辑应用场景 ​编辑​编辑 reids列表list 应用场景 redis哈希hash 应用场景 redis集合set 应用场景 redis有序集合zset(sorted set集…

【设计模式】观察者模式和订阅发布模式

观察者模式 观察者模式包含观察目标和观察者两类对象。一个目标可以有任意数目的与之相依赖的观察者。一旦观察目标的状态发生改变,所有的观察者都将得到通知。 当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新,解决…

《机器学习》逻辑回归 梯度下降、混淆矩阵、随机种子、正则化惩罚 No.6

一、混淆矩阵 1、什么是混淆矩阵? 混淆矩阵是用于评估分类模型在不同类别上的预测准确性的工具。它提供了模型预测结果与真实结果之间的对应关系,帮助我们分析和理解模型的分类性能。 假设,要对15个人预测是否患病,使用1表示患病…

生产环境中MapReduce的最佳实践

目录 MapReduce跑的慢的原因 MapReduce常用调优参数 1. MapTask相关参数 2. ReduceTask相关参数 3. 总体调优参数 4. 其他重要参数 调优策略 MapReduce数据倾斜问题 1. 数据预处理 2. 自定义Partitioner 3. 调整Reduce任务数 4. 小文件问题处理 5. 二次排序 6. 使用…

【python与java的区别-03(集合、字典)】

一、Set python: 集合(set)是一个无序的不重复元素序列。 集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。 可以使用大括号 { } 创建集合,元素之间用逗号 , 分隔, 或者也可以使用 set() 函数…

【解释器模式】设计模式系列:构建动态语言解释器与复杂表达式处理(深入理解并实现)

文章目录 深入理解并实现解释器模式1. 引言1.1 解释器模式的定义1.2 模式的主要优点和缺点1.3 适用场景1.4 实际应用案例简介 2. 解释器模式的基本概念2.1 模式的核心思想2.2 模式的角色2.3 模式的动态行为分析 3. 解释器模式的工作原理3.1 如何构建表达式树3.2 如何通过递归遍…

可达鸭举牌网页版本在线生成源码html5

源码介绍 可达鸭举牌网页版本,在线生成源码,点击分享即可制作DIY自己的举牌文字网页,需要GIF动图的自行用GIF图片录制工具录制下来。 PS:上传到服务器运行或者本地nginx运行,不要双击index.html,如果本地双击HTML&…

【3】AT32F437 OpenHarmony轻量系统第一个程序:点灯

在搭建好AT32F437 OpenHarmony 轻量系统之后,当然要尝试点一下灯了。 编写点灯程序 笔者在适配OpenHarmony轻量系统的时候,只对源码的device和vendor目录进行了修改,AT32的app目录笔者放置在了vendor/tree/master/artery/AT-START-F437/app…

什么是网络安全?网络安全防范技术包括哪些?

一、引言 在当今数字化的时代,网络已经成为人们生活和工作中不可或缺的一部分。然而,随着网络的普及和应用的广泛,网络安全问题也日益凸显。从个人隐私泄露到企业关键信息被盗,从网络欺诈到大规模的网络攻击,网络安全…

在国产芯片上实现YOLOv5/v8图像AI识别-【2.5】yolov8使用C++部署在RK3588更多内容见视频

本专栏主要是提供一种国产化图像识别的解决方案,专栏中实现了YOLOv5/v8在国产化芯片上的使用部署,并可以实现网页端实时查看。根据自己的具体需求可以直接产品化部署使用。 B站配套视频:https://www.bilibili.com/video/BV1or421T74f 背景…

ubuntu 安装两个nginx实例时的坑,非默认nginx实例配置修改总也不生效的问题

一、问题 由于工作需求xx云服务器上安装了两个nginx实例,突然有一天需要在非默认nginx上增加一个子站点,根据网上教程和原来的记录修改vi nginx.conf 后保存载总也不生效? 怎么破? 二、过程记录 假如:非默认nginx安装在…

HanLP分词的使用与注意事项

1 概述 HanLP是一个自然语言处理工具包&#xff0c;它提供的主要功能如下&#xff1a; 分词转化为拼音繁转简、简转繁提取关键词提取短语提取词语自动摘要依存文法分析 下面将介绍其分词功能的使用。 2 依赖 下面是依赖的jar包。 <dependency><groupId>com.ha…

使用SSH协议远程连接Ubuntu

1.切换到root用户 sudo -i 2.安装openssh-server apt update apt install openssh-server 3.启动ssh服务 service ssh start 4.查看ssh状态 &#xff08;q键: 退出&#xff09; service ssh status 5.检查ssh服务是否启动成功 ps -e | grep ssh 6.开机自启动 systemctl enable …

基于STM32F103的FreeRTOS系列(九)·任务创建函数的使用·静态方法和动态方法

目录 1. 前期准备 1.1 中断文件修改 1.2 SysTick文件修改 1.3 任务创建函数API 2. 任务创建&#xff08;静态方法&#xff09; 2.1 创建两个任务函数 2.2 静态创建开始任务函数 2.3 创建开始任务的任务函数 2.4 补充 2.5 代码 3. 任务创建&#xff08;动…