宝塔山 发表于 2024-10-10 01:03:22

如何用CWE API 来减轻软件产物中的安全风险

 本文分享自华为云开辟者社区《用CWE API 减轻软件产物中的安全风险》作者: Uncle_Tom
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 的相关先容放在了: https://github.com/CWE-CAPEC/REST-API-wg


[*]API 紧张包罗以下API: https://i-blog.csdnimg.cn/blog_migrate/aadebe1d08f56a5da80ab667b9983994.png
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 节点类型
图标类型节点数量说明 https://i-blog.csdnimg.cn/blog_migrate/766317818cb797489551fad8433ed249.gif
视图(View)50视图表现一种视角,人们大概会用它来查察目录中的缺点。 https://i-blog.csdnimg.cn/blog_migrate/962e7b6be5f24507c88a4f127496dbca.gif
支柱(Weakness-Pillar)10最抽象的缺点类型,代表与之相关的所有类(class)/根本(base)/变体(Variant)的主题。 支柱不同于类别,因为从技能上讲,支柱仍旧是一种描述错误的缺点,而类别则代表用于对相关事物进行分组的常见特征。 https://i-blog.csdnimg.cn/blog_migrate/40c0f1ca27bb5255a41da4cfea078125.gif
分类(Category)374分类是基于某些共同特征或属性的缺点的聚集。类别紧张用作CWE的构造机制,不应由外部源映射到。 https://i-blog.csdnimg.cn/blog_migrate/10280d231d70bba5b19a9ae10cbac510.gif
类别(Weakness-Class)110一种以非常抽象的方式描述的缺点,通常与任何特定的语言或技能无关。 比支柱缺点更详细,但比根本缺点更笼统。 类级别的缺点通常用以:举动、属性和资源维度中的1-2来描述问题。 https://i-blog.csdnimg.cn/blog_migrate/4c354d7405a9f4a40501f83a6c76abf4.gif
基础(Weakness-Base)520一种更详细的缺点类型,大部分与资源或技能无关,但具有足够的详细信息以提供检测和防备的特定方法。根本级别的缺点通常用以:举动、属性、技能、语言和资源维度中2-3个维度来描述问题。 https://i-blog.csdnimg.cn/blog_migrate/6368a1f4a0ff0a1d0b6fbe7c4d700fd4.gif
变体(Weakness-Variant)292是与特定类型的产物相关的缺点,通常与特定的语言或技能相关。比根本缺点更详细。变体级别的缺点通常用以:举动、属性、技能、语言和资源维度中3-5个维度来描述问题。 https://i-blog.csdnimg.cn/blog_migrate/271c0dc50f23512bfc29d8da4df58079.gif
复合缺陷(Weakness-Compound)的组合(Composite)方式7由两个或多个不同的缺点组成的复合元素,其中所有缺点都必须同时存在才能出现潜伏的缺点。消除任何缺点可以消除或显着降低风险。一个缺点 X 可以被“分解”为组件缺点 Y 和 Z。在某些环境下,一个缺点对于组合大概不是必不可少的,但改变其性质时,该缺点有大概会变成缺陷。

[*]各类型之间的关系: https://i-blog.csdnimg.cn/blog_migrate/b8417af09f8a2225754f8be08ae0b7cc.gif
 >  https://i-blog.csdnimg.cn/blog_migrate/a74e8bb495755dc323f94ba064ca260d.gif
、 https://i-blog.csdnimg.cn/blog_migrate/f67c031d056a2c080a000481a52ab335.gif
 >  https://i-blog.csdnimg.cn/blog_migrate/cbd91fa7a5d8853e3f6ae1af3a4ea362.gif
 >  https://i-blog.csdnimg.cn/blog_migrate/a7395e7e70fe0c1901440c078aee1d8f.gif
>  https://i-blog.csdnimg.cn/blog_migrate/e400fb2f7da69b89d8e6a922d230103e.gif
、 https://i-blog.csdnimg.cn/blog_migrate/d3e215be0e576373e0e2cb82c3c758e1.gif
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
[*] 相应回复
https://i-blog.csdnimg.cn/blog_migrate/8d4ad494b6931b31ef99bef9144b0882.png
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
[*] 相应回复

https://i-blog.csdnimg.cn/blog_migrate/c6a456e6a0fe023757289a628fe1d71b.png
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
[*] 相应回复

https://i-blog.csdnimg.cn/blog_migrate/c1480ceace979a73e60b8ee06927177e.png
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:特权放弃/降低错误

https://i-blog.csdnimg.cn/blog_migrate/ddfa089eaabc840820bcfb898794289f.png
3.7. 查找缺点节点在视图中的后代节点(/cwe/{id}/descendants?view={viewId})



[*] API作用:查找缺点节点在视图中的后代节点,即这个节点的所有子节点。

[*] 哀求:查找 CWE-119:内存缓冲区边界内操作的限制不适当 的后代节点
https://cwe-api.mitre.org/api/v1/cwe/119/descendants
[*] 相应回复

https://i-blog.csdnimg.cn/blog_migrate/d12a2ad3d936743e1bbbcba114cdb3c0.png

在视图: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
[*] 相应回复
https://i-blog.csdnimg.cn/blog_migrate/d1efd97a5229fca1cbe1e0f87ab506f5.png

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


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

https://i-blog.csdnimg.cn/blog_migrate/2c17df5d937e2d5985c2be27ba67b1be.png
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:内存缓冲区边界内操作的限制不适当 的子节点 https://i-blog.csdnimg.cn/blog_migrate/6e2a501102a6a07306fff12fa0440248.png
3.9. 查找缺点节点的先人(/cwe/{id}/ancestors?view={viewId})



[*]API作用:查找缺点节点在各个视图中的先人,即查找这个节点的父节点,直到根节点。

[*]哀求:查找 CWE-119:内存缓冲区边界内操作的限制不适当 各视图 中先人
https://cwe-api.mitre.org/api/v1/cwe/119/ancestors
[*]相应回复 https://i-blog.csdnimg.cn/blog_migrate/41ce232f87f6249c77350c604e180689.png

许多视图中都包罗 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:研究者视图中的先人 https://i-blog.csdnimg.cn/blog_migrate/728f946529cee01e44fdeffad9846a14.png


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

在 https://github.com/CWE-CAPEC/REST-API-wg/ 还提供了 CWE 的 JSON 格式。


[*]REST-API 目录布局如下

https://i-blog.csdnimg.cn/blog_migrate/b5431ccf16fd25519dbc322d258ce1cb.png
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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 如何用CWE API 来减轻软件产物中的安全风险