人工智能驱动的网络攻击:如何检测、预防和抵御智能威胁

立即阅读
我们利用人工智能进行网站翻译,虽然我们力求准确,但不一定总是 100%精确。感谢您的理解。

软件 Supply Chain中的依赖性漏洞

Stella Nguyen,高级产品营销经理
分享此贴

第三方库对于加快软件开发生命周期至关重要。开发人员经常出于各种目的集成开源库,而不是从头开始编码--无论是出于成本效益、缺乏资源还是更好的灵活性。Maven Central 和 PyPI 等资源库以及依赖关系管理工具简化了这一过程,提高了工作效率。然而,这种依赖也带来了潜在的安全风险。 

管理项目的开源依赖关系可能会带来挑战,包括嵌套依赖关系(一个依赖关系中包含一个或多个依赖关系)以及依赖关系管理方面的专业知识有限。外部库的集成扩大了攻击面,增加了安全风险。发现库中的漏洞会危及依赖该组件的所有软件。因此,必须利用依赖性扫描工具来识别和解决源于第三方依赖性的已知漏洞。 

软件 重用和依赖性采用 

随着分发生态系统越来越容易访问,开发人员选择重复使用现有软件来加快复杂软件的开发。然而,如果不小心管理,这种便利性可能会带来意想不到的安全问题。这些现有的软件程序主要以软件包的形式通过互联网发布,软件包中包含被称为库的发布版本,以及说明版本、作者、许可证、参考文献和其他相关信息的元数据。打包软件简化了分发和版本控制流程。 

开源软件包 

开发人员通常根据开源许可证公开共享代码,从而实现代码审查、社区协作和轻松集成。任何开发人员都可以重用、修改或贡献代码库。项目在质量、维护和支持方面差异很大。作者发布这些软件包是为了让它们更容易被访问,但支持和责任取决于许可证。

依赖关系 

一旦一个软件包在另一个项目中被引用,它就会成为项目依赖项,代表外部软件包引用。依赖关系是软件包之间的单向关系,其中一个软件包依赖另一个软件包才能正常运行。开发人员在应用程序中加入依赖关系,在构建时解决依赖关系并获取必要的依赖关系。 

软件 Supply Chain 

供应链是指流程中涉及的所有外部供应商,特别是那些提供软件依赖性的供应商。近年来,供应链管理在软件开发中的地位日益突出,公司在接受供应商之前,都会制定包括供应商要求、法律文件和合同在内的政策,以确保合规性。 

依赖性管理

首要问题

管理依赖关系很快就会变得不堪重负,导致所谓的 "依赖关系地狱"。现代应用程序可能有数百甚至数千个直接依赖项,这给跟踪漏洞带来了挑战。以下是一些管理大量依赖关系成为挑战的场景。 

  • 缺乏代码审查:尽管开源是透明的,但有时团队可能会跳过代码审查,导致错误的安全感。
  • 隐性信任:开发人员往往不对作者进行彻底审查,仅依赖于版本库的包含,就将依赖关系纳入其中。
  • 大量使用依赖包:即使只需要软件包的一小部分功能,开发人员通常也会严重依赖软件包,从而导致依赖关系臃肿。
  • 破坏性更改:更新软件包可能很复杂,可能会引入破坏性更改,导致犹豫不决和软件包过时。
  • 责任问题:开源软件的维护和支持标准低于商业软件的要求,从而导致纠纷和项目开发人员不切实际的期望,并可能导致软件包不安全。
最近的袭击

针对第三方依赖程序的攻击不断增加,引发了人们对软件安全的担忧。2021 年的 Log4Shell 漏洞或最近于 2024 年 3 月发生的XZ Utils 后门(影响数千个 Maven 软件包)等备受瞩目的事件,凸显了此类漏洞的广泛影响。同年,在流行的 NPM 软件包 ua-parser-jswas 中发现恶意软件,凸显了在应用程序堆栈中使用第三方库的相关风险。 

2024 年 1 月另一个值得关注的攻击是MavenGate,这是一种新的软件供应链攻击方法,通过废弃的库劫持依赖项。成功利用这些缺陷,可让不法行为者在依赖库中找到易受攻击的工件,并将恶意代码注入应用程序,更有甚者,可通过恶意插件破坏构建过程。 

随着开源库使用的增加,了解和降低这些风险变得至关重要。这促使我们进一步调查开源库中漏洞的普遍性、类型和持久性,以及它们与项目属性和提交的关系。 

Supply Chain 安全建议
通过 SBOM 审计、可信供应链选择和构建过程安全实现安全软件管理的步骤示意图

利用OPSWAT SBOM 确保依赖关系安全 

为应对供应链攻击,美国于 2021 年 5 月批准了"关于改善国家网络安全的行政命令",其中规定了改善供应链政策的步骤。其中一项关键要求是为每件产品提供SBOM。 

OPSWAT 软件 Bill of Materials (SBOM)不断发展,以满足安全环境下软件开发日益增长的需求。OPSWAT SBOM 的主要功能之一是依赖性扫描。该功能旨在通过识别项目依赖关系中的漏洞来提高代码库的可见性。 

了解更多有关 SBOM 为何重要的信息。

嵌套依赖扫描

软件包依赖性扫描

OPSWAT SBOM 可在开发和测试过程中自动检测软件依赖关系中的安全漏洞。例如,SBOM 可让团队了解应用程序是否使用了已知存在漏洞的开源库。团队就可以采取行动保护应用程序。 

对 Python 软件包进行安全分析,显示漏洞、依赖问题和安全版本
 源代码依赖性检查 

用 Python 检查依赖性

使用 pip 和 grep 显示 Python "请求 "软件包依赖关系的终端命令输出

Container 图像扫描

OPSWAT SBOM 检查容器映像的每一层,以识别漏洞或威胁,包括操作系统 (OS) 包和应用程序使用的依赖软件库。这种积极主动的方法能够在潜在问题升级为重大问题之前,对其进行检测并加以解决。

漏洞评估报告显示软件生态系统中包含相应漏洞、CVE 标识符、版本和修复版本的软件包列表
Container 图像扫描

检查阿尔派的依赖性 

显示 Alpine Linux 上 ssl_client 软件包依赖信息的终端输出结果
易受影响的依赖关系的严重程度

通过了解依赖性漏洞的常见类型、普遍性和持久性,开发人员和安全团队可以衡量其严重性并探索补救策略,从而从中受益。 

SBOM 可扫描项目的依赖关系,查找已知漏洞。检测到漏洞后,SBOM 会提供详细信息,包括严重性级别、漏洞描述和可用修复程序。 

requirements.txt 的漏洞报告,包含突出显示的软件包漏洞和 CVE 详情
易受影响的依赖关系的严重程度 
漏洞报告 

可导出详细报告供团队跟踪: 

  • 扫描的依赖项总数 
  • 在所有依赖项中发现的漏洞总数 
  • 扫描的一系列版本 
  • 已知 CVE 
  • 严重、高度、中度和低度漏洞总数 
补救和建议

OPSWAT SBOM 建议安全团队将所有易受攻击的软件包更新到包含漏洞修复的最新版本。这样,团队就能解决软件包维护者的漏洞问题,或从依赖树中删除软件包。这种积极主动的方法可以让团队在潜在的安全风险成为问题之前就加以解决,从而大大提高软件项目的安全性和完整性。此外,OPSWAT SBOM 还有助于企业在软件供应链中保持合规性和安全性。强烈建议团队应 

绘制依赖关系图
利用工具来确定环境中存在哪些依赖关系以及它们之间的关系。

消除不必要的依赖
删除不必要或非必需的依赖,以减少攻击面。

使用已建立的资源库
确保从信誉良好的来源获取依赖项。

扫描所有依赖项
在任何软件中使用依赖项之前,都要对其进行扫描,以了解是否存在安全或质量问题。

结束语 

利用依赖性扫描工具(如OPSWAT SBOM),您可以主动识别并解决项目依赖性中的漏洞,在潜在安全风险被利用之前将其降低。利用依赖性扫描和 SBOM 的强大功能,构建安全、合规和弹性软件应用程序。 

标签

通过OPSWAT 了解最新信息!

立即注册,即可收到公司的最新动态、 故事、活动信息等。