在开源广泛使用的今天,如何解决开源组件中潜在的风险问题也被众多企业提上了日程。开源风险包括漏洞风险,许可证风险等等,现在一般的解决方法是使用SCA工具。

SCA工具最基础的检测能力就是对开源组件中的依赖关系进行分析。组件的依赖关系之所以如此重要,是由开源本身的性质所决定的。开源对于开发者来说最好的一点就是避免了重复造轮子,但广泛的引用开源组件带来的问题就是依赖关系复杂且混乱。最麻烦的是一旦其中一项依赖出现了问题,单靠人工手段进行检测实在是太费时费力了。

在开源项目中可传递依赖关系引入的安全风险事件比比皆是,大家所熟知的就是 2021 年 12 月份出现的 Log4j2 漏洞(CVE-2021-44228)。 Log4j2 作为一个堪比标准库的基础日志库,受到无数开源 Java 组件直接或间接依赖。此次爆发的 Log4j2 漏洞影响范围广泛且危害严重,在各个场景领域皆应获得重点关注,我国工信部对此事件也给予了高度重视。

那么像log4j2这样的、庞大且复杂的组件关系链,最好的检测和管理办法就是使用知识图谱技术

知识图谱本质上是结构化的语义知识库,用于以符号形式描述物理世界中的概念及其相互关系。其基本组成单位是“实体-关系-实体”三元组,以及实体及其相关属性-值对,实体间通过关系相互联结,构成网状的知识结构。在知识表示中,知识图谱是一种知识库,其中的数据通过图结构的数据模型或拓扑整合而成。知识图谱通常被用来存储彼此之间具有相互联系的实体。(来源:wiki)

知识图谱技术近几年在工业界应用也越来越广泛。如网络安全、医疗、法律、金融垂直领域都已经有比较好的应用案例。

知识图谱和依赖关系在表现形式上的适配度很高。知识图谱最重要的功能就是描述点与点之间的联系,最重要作用无非就在于确定了点之后如何寻找它的其他联系。而SCA的依赖分析也是如此,我们首先需要找到有问题的开源组件,随后将它的依赖关系全部报告出来,这样使用者才知道该组件的影响力和范围有多大。

根据NIST建议的 CycloneDX标准中提供的开源组件成分及其关系规范化的格式描述,可以通过关系图描述开源组件的组成成分,如下图所示。

通过知识图谱可以很好的解决开源软件复杂的依赖关系表示不清晰的问题,让开源软件成分语义化,可视化,变得机器可读可推理。总的来说,使用知识图谱有以下几点优势:

1.知识图谱的图表示方法能构建开源软件的成分深层关系(如依赖、引用、许可等);

2.使用开源软件相关的漏洞知识库和其建立关系,利用知识图谱的分层传播路径搜索算法有效分析开源软件的漏洞影响,以衡量项目漏洞的严重性;

3.应用图算法分析知识图谱(依赖关系图)获得最具风险的关键依赖关系,推荐有效的修复建议。

为了方便理解,我们简单构建一个开源软件知识图谱本体模型:

在安全分析研究方面,开源软件知识图谱可以帮助安全人员对开源软件进行全面的风险评估分析:

1. 基于开源组件属性特征(如源代码、包等文件的 hash 值)来判定组件是否存在被包装冒用或自身被篡改的风险;

2. 利用不同开源组件的依赖关系,结合组件版本信息,可以在高危漏洞应急响应中快速识别受影响的其他组件,通过图的聚合及子图拆分等图优化算法能够高效、持续的输出风险分析结果。

如下图,展示了 log4j-core@2.3 组件存在的多个高危漏洞关系,如果在软件中引用了存在高危漏洞的开源组件,无疑会给软件产品带来潜在的威胁,同样,软件供应商的软件产品也会面临同样的安全风险。

显而易见,相比于传统的文字或表格呈现形式,知识图谱的展示能让使用者更清晰的了解组件的依赖关系,更有效的采取相应的修复措施。

CodeAnt支持知识图谱技术,通过依赖关系图的展示,对组件进行彻底的检测剖析。传统的SCA工具只能做到基本的依赖分析,而CodeAnt基于知识图谱技术,能进一步实现漏洞追踪预警、软件组件隔离和专家修复建议。真正做到深层次的软件成分分析,保障您的软件供应链安全。

参考资料:让代码安全变轻松,简单好用的开发安全平台-CodeAnt

SCA(软件成分分析)中的知识图谱技术相关推荐

  1. SCA软件成分分析 简析(一)

    一.概述 SCA全称 Software Compostition Analysis,译为软件成分分析,即通过分析软件源码提取项目依赖的第三方组件及其版本.许可证.模块.框架和库等信息,生成软件物料清单 ...

  2. 从开源组件安全看SCA软件成分分析技术

    1.基本概念 软件成分分析(SCA,Software Composition Analysis)是一种对二进制软件的组成部分进行识别.分析和追踪的技术.专门用于分析开发人员使用的各种源码.模块.框架和 ...

  3. 浅谈软件成分分析(SCA)在企业开发安全建设中的落地思路

    前言 开源软件具有开放.共享.自由等特性,在软件开发中扮演着越来越重要的角色,也是软件供应链的重要组成部分.根据Gartner调查显示,99%的组织在其 IT系统中使用了开源软件.而来自Sonatyp ...

  4. 漫谈SCA(软件成分分析)测试技术:原理、工具与准确性

    本文分享自华为云社区<漫谈SCA测试技术(一)>,原文作者:安全技术猿 . 1.什么是SCA SCA(Software Composition Analysis)软件成分分析,通俗的理解就 ...

  5. 北大软件“软件成分分析与漏洞检测工具”(CoBOT—SCA)正式发布

    根据全球知名IT研究与顾问咨询公司Gartner统计,从2010年到2018年软件代码中采用开源框架或组件.第三方库的比例每年以30%的速度增长,大量的软件系统引入开源代码和第三方库,有的系统引用开源 ...

  6. 软件成分分析(SCA)详述

    一.SCA是什么? 今天的软件开发普遍遵循敏捷实践,发布和部署周期都很短这导致开发团队非常依赖开源来加速创新迭代速度.因此,对团队项目中包含的每个开源组件进行跟踪非常重要,这样可以避免法律不合规的风险 ...

  7. 什么是SCA(软件成分分析)

    1.基本概念 软件成分分析(SCA,Software Composition Analysis)是一种对二进制软件的组成部分进行识别.分析和追踪的技术.专门用于分析开发人员使用的各种源码.模块.框架和 ...

  8. 什么是软件成分分析(SCA)安全测试技术

    [摘要] 本文介绍了SCA技术的基本原理.应用场景,业界TOP SCA商用工具的分析说明以及技术发展趋势:让读者对SCA技术有一个基本初步的了解,能更好的准确的应用SCA工具来发现应用软件中一些安全问 ...

  9. 软件成分分析技术介绍

    软件成分分析技术介绍 1.关于软件成分分析 SCA,Software Composition Analysis,软件成本分析是一种对二进制软件的组成部分进行识别.分析和追踪的技术.在开源软件日益盛行的 ...

最新文章

  1. 目标检测模型从训练到部署!
  2. MCMC(二)马尔科夫链
  3. 导入 sun.net.TelnetInputStream; 报错
  4. mysql 外键有啥用途_Mysql外键是什么?有哪些用处?(图文+视频)
  5. 【MM配置】Inventory Management 库存管理
  6. Verilog的数据流、行为、结构化与RTL级描述
  7. 1、Hive原理及查询优化
  8. R7-5 求矩阵各行元素之和 (15 分)
  9. Linux nc命令详解
  10. 洛谷T1967 货车运输 Kruskal最大生成树倍增LCA
  11. MySQL备份---lvm snapshot
  12. 系统集成项目管理工程师(试题分析、考试大纲、教材目录)
  13. ae合成设置快捷键_AE设计首选快捷键大全+解析
  14. 腾讯云:服务器资源池化技术发展趋势
  15. 我叫mt4公会攻城战服务器维护中,我叫MT4工会攻城战攻略玩法详解[多图]
  16. 小程序源码:装B神器P图修改微信流量主小程序源码下载趣味恶搞图制作
  17. 数据的导出Excel表
  18. 保研被鸽,去了自己不理想的学校怎么办?
  19. 人均 3.6万行代码, C++ 成最烫手山药:腾讯首度披露技术研发数据!
  20. 利用栈实现四则运算,带负数,带括号,带小数

热门文章

  1. 大岩量化小白科普:什么叫高频交易,什么叫低频交易
  2. MarkDown如何打出反引号
  3. KBP310-ASEMI插件整流桥3A 1000V
  4. 农业生产适宜性评价之土地资源评价算法
  5. 软考—软件设计师笔记
  6. 投影仪免费的影视软件有哪些?看《追光者》我却感动得想哭
  7. Unity AR Shadow 阴影
  8. 在外企做 IT 有哪些独特的福利
  9. 如何有效制定一份完整的网站运营推广方案一
  10. 使用python和flask建个人博客---增加一个新功能:点击主页图片的时候能够跳转到指定的网页