无论是通过渗透软件交付管道,还是利用开源组件中现有的漏洞,攻击者都在利用供应链控制的漏洞来危害组织及其客户;安全漏洞威胁已然成为我们无法回避的问题。
开源软件数量呈指数增长,导致我们根本无法单纯通过人力对漏洞进行筛查;且庞大的开源数量群让库间关系越发复杂,我们很难察觉到漏洞的存在。
在快速发展的时代里,效率至上是大家默认的规则。为了尽快产出,研发人员必然会采用大量的开源组件和第三方库。
与此同时,开发者更多关注自身编码是否安全可行,却忽略了这些“外来者”的风险。显而易见的是,当第一个问题出现,后续影响都会接踵而来,从而引发多米诺骨牌效应,造成难以估量的经济损失。
层出不穷的软件安全事件也印证了这一点:黑客只需找到软件供应链中的一个漏洞就可以发起攻击,开发人员却要对整个软件供应链进行维护。一旦出现被攻击的情况,留给研发人员的时间便会被压缩。
我们必须对开源漏洞的审查完成更加自动化和高效化的要求。
而国内企业的应用系统也存在同样的问题,比如漏洞频发的Fastjson库,攻击者可利用其反序列化漏洞,远程命令执行入侵到企业服务器,通过服务器执行命令,危害性极大。类似的还有jackson、shiro、Struct2,、OpenSSL等。
为了解决这类问题,软件成分分析(SCA)应运而生。
SCA
什么是SCA
SCA (Software Composition Analysis) 软件成分分析,通过检测软件许可证、依赖项以及代码库中的已知漏洞和潜在漏洞来分析开源组件,使 DevOps 能够管理其安全风险和许可证合规性。
简单来说,SCA是一项通过分析软件包含的一些信息和特征来实现对该软件的识别、管理、追踪的技术。
SCA发展历程
2002年前后出现了第一个开源手动扫描器。尽管该扫描器对提升组织代码库的可见性起到了一定的效果,但同时也会导致很高的误报率。这种错误需要人工干预来解决,与我们最初敏捷开发环境的需求相悖。
时间来到2011年,随着技术的进步,已经能够实时自动检测漏洞和许可问题。与此同时,SCA技术与软件开发工具(如存储库、构建工具、包管理器和CI服务器)集成在一起,极大程度上帮助开发人员掌握开源管理和安全性。
在随后的演进过程中,逐渐丰富了连续自动检测和安全漏洞优先级功能:当软件或者组件的已知漏洞较多时,通过自动识别最大风险的安全漏洞,组织机构可以首先解决优先事项。
直到今天,SCA拥有能够自动修复安全漏洞的技术,可以帮助开发人员确定漏洞所在的位置,为修复提供有关影响构建的可能性数据,从而根据漏洞检测、漏洞严重性、CVSS评分或发布新版本时触发的安全漏洞策略启动自动修复工作流,帮助研发人员不断修补开源组件,减少已知漏洞数量,从而帮助我们远离安全漏洞风险。
SCA工作原理
SCA 工具可检查包管理器、清单文件、源代码、二进制文件、容器映像等。
其中,已识别的开源被编译成物料清单 (SBOM) ,然后将其与各种数据库进行比较。但大多数情况下,SCA 扫描程序是从 CI/CD 管道中的生成目录中读取的,有时也会位于开发人员桌面或暂存于服务器上。
SCA可以采用多种策略识别代码库中来自第三方产品的文件,例如一个从已知软件产品中的文件预先计算的哈希列表。当扫描程序运行时,它会遍历计算机软件中所有文件的哈希值,并将它们与其列表进行匹配。因为每个文件的哈希值都是唯一的,所以当哈希匹配时,程序便会知道检测片段中装载了哪些组件以及相关的组件信息。
此外,许多扫描程序可以解析源文件,可以方便定位囊括在自己的代码中的专有代码片段。
由于 SCA 扫描程序会更新其已知漏洞列表,即使代码保持不变,每次运行扫描程序时也可能得到不同的结果。这意味着上述过程是可持续发展 的,哪怕在软件上线后的几年时间里,人们依然可以依据经常更新其已知漏洞列表去发现软件中的缺陷,极大便利了研发人员对已发布软件的维护。
SCA功能
软件成分分析 (SCA) 是自动化对开源软件 (Open Source Software) 使用的可见性的过程,用于风险管理、安全性和许可证合规性。
随着所有行业软件中开源 (Open Source) 使用的兴起,跟踪组件的需求呈指数增长,以保护公司免受问题和开源漏洞的影响。由于大多数软件创建都包括操作系统,因此手动跟踪很困难,需要使用自动化来扫描源代码、二进制文件和依赖项。
SCA 解决方案允许在整个软件供应链中对开源使用进行安全风险管理,从而使安全团队和开发人员能够:
一、为所有应用创建准确的物料清单 (SBOM)
SBOM 将描述应用程序中包含的组件、所用组件的版本以及每个组件的许可证类型。SBOM 可帮助安全专业人员和开发人员更好地了解应用程序中使用的组件,并深入了解潜在的安全和许可问题。
二、发现并跟踪所有开源
开源软件和许可证管理扫描工具允许公司发现源代码、二进制文件、容器、构建依赖项、子组件以及修改和开源组件中使用的所有开源。这一点尤其重要,因为公司会考虑广泛的软件供应链,包括合作伙伴、第三方供应商和其他开源项目。
三、制定和执行政策
从开发人员到高级管理人员,开源软件许可证合规性在组织内的各个级别都至关重要。SCA 强调了制定策略、响应许可证合规性和安全事件以及在整个公司范围内提供操作系统培训和知识的需求。许多解决方案能够使审批流程自动化,并设置特定的使用和补救指南。
四、启用主动和持续监控
为了更好地管理工作负载并提高生产力,SCA 继续监控安全和漏洞问题,并允许用户针对当前和已发布产品中新发现的漏洞创建可操作的警报。
SCA的类型及其优点
以下是5种主要的SCA工具类型,可帮助用户管理和分析第三方和开源组件:
1. 包管理器:协助安装和管理开源包,并提供有关依赖项的信息以避免版本冲突。 2. 二进制分析工具:用于扫描编译的代码以识别使用中的开源组件,并提供有关依赖项、安全风险和许可问题信息。 3. 漏洞扫描程序:扫描开源软件包和库中的已知漏洞,允许用户优先处理需要被优先处理的漏洞。 4. 组成分析工具:提供开源组件的全面视图,分析依赖项、许可证问题以及整体软件质量和运行健康状况。 5. 持续监控工具:随时间推移监控应用程序,提醒开发人员开源组件的更改或更新,并确保他们与最新的补丁和更新保持同步。
在SCA工具中寻找的关键功能
关于软件开发而言,速度、可靠性和安全性是任何成功项目的三个基本因素。以下是拥有SCA工具可以如何帮助用户在这三个方面获得收益:
一、速度
SCA工具可以帮助开发人员避免跟踪和管理开源组件的耗时且手动的过程。这可以使用户更专注于编写代码、测试和交付软件,最终加快开发过程。
二、可靠性
借助 SCA工具,用户可以确保使用安全可靠的开源组件构建应用程序。通过尽早识别潜在的安全漏洞或许可问题,用户可以降低风险并确保应用程序是建立在坚实的安全基础之上。
三、安全性
SCA工具在确保应用程序的安全性方面起着至关重要的作用。通过识别和解决任何安全漏洞或过时组件的依赖,SCA工具可帮助用户保护应用程序免受潜在攻击。
考虑到以上问题,以下是在选购SCA工具时应该注重的一些关键功能:
1.能够在容器化环境中扫描开源组件
可以检测容器内运行的开源组件中漏洞的SCA工具,对于确保整个容器化环境的安全性和可靠性至关重要。
2.实现对团队使用的特定容器注册表的本地化支持
允许SCA工具扫描容器映像并识别正在使用的特定容器注册表中的任何潜在漏洞或问题。如果没有对特定容器注册表的本地支持,则必须手动配置该工具以扫描容器镜像,非常耗时且容易出错。
3.全面检测覆盖范围
支持检测各种开源库和组件中的漏洞、许可问题和其他质量问题。
4.实时监控
实时监控功能对于更具活力的公司至关重要,必须在潜在漏洞或问题浮现之时就尽快检测到,以避免发展成为重大问题。
5.易于集成
简单化集成到用户现有的开发工作流程和基础设施中,且不会对SDLC造成任何中断或延迟。
6.强制实施可自定义的策略
具有根据组织的特定需求自定义策略的能力,对于确保该工具符合安全和质量标准非常重要。
7. 报告和分析
提供详细的报告和分析,以便轻松跟踪进度、监控趋势并确定需要改进的领域。
8.自动化
提供自动扫描和分析功能,以节省时间并降低人为错误风险。
德迅蜂巢(容器安全)
德迅蜂巢·云原生安全平台由德迅自主研发,能够很好集成到云原生复杂多变的环境中,如PaaS云平台、OpenShift、Kubernetes、Jenkins、Harbor、JFrog等等。通过提供覆盖容器全生命周期的一站式容器安全解决方案,德迅蜂巢可实现容器安全预测、防御、检测和响应的安全闭环。
(1)德迅蜂巢·云原生安全平台的核心架构理念:
-
在开发阶段(Dev),遵循“安全左移”原则,做到上线即安全
-
在运行阶段(Ops),遵循“持续监控&响应”原则,做到完全自适应
(2)实现功能
德迅蜂巢主要从安全左移和运行时安全两个阶段,在云原生的全生命周期过程中,提供原生的、融合的安全能力。
一、资产清点:
德迅蜂巢可以清晰地盘点工作负载本身的相关信息,此外,还能够实现不同工作负载之间的关系可视化,帮助运维和安全人员梳理业务及其复杂的关系,弥补安全与业务的鸿沟。
-
细粒度梳理关键资产
-
业务应用自动识别
-
资产实时上报
-
与风险和入侵全面关联
容器资产种类全面盘点
支持容器、镜像、Registry、主机、POD等容器资产快速清点,为用户提供容器内资产的分类视图,实现容器资产的全面可视化。
容器资产内容深度识别
对每类资产进行深入分析,获取资产相关的高价值安全数据,帮助用户从安全角度细粒度观察资产运行状况。
自动化、持续性容器资产清点
系统资产数据持续更新,每日及时地、自动化上报资产数据。基于历史清点的数据,每次只清点新启动的进程信息,极大降低对服务器性能的耗损。
二、镜像扫描:
德迅蜂巢的镜像检查能力已经覆盖到开发、测试等多个环节中,可快速发现镜像中存在的漏洞、病毒木马、Webshell等镜像风险。
-
覆盖容器全生命周期
-
全方位检测
-
镜像合规检查
-
X86、ARM 架构镜像全栈适配
持续的镜像补丁检测能力
持续更新漏洞数据库,并与集群中的容器镜像进行匹配。一旦发现任何新镜像补丁信息,用户将收到通知,而不必定期重新扫描。
全面的补丁数据呈现
深入检测运行环境和远程镜像仓库中容器镜像的重要更新补丁,综合考虑系统的业务影响、资产及补丁的重要程度、修复影响情况,智能提供最贴合业务的补丁修复建议。
灵活快速的检索方式
可根据需求灵活显示列表数据,定义表格显示。系统提供基于安全场景的筛选方式,如支持按 CVE 编号进行检索等,帮助用户迅速定位镜像和其安全补丁信息。
三、微隔离
德迅蜂巢微隔离原生自适应容器多变的环境。通过对访问关系的梳理和学习,提供自适应、自迁移、自维护的网络隔离策略,帮助用户快速、安全地落地容器微隔离能力。
-
业务视角展示网络拓扑关系
-
云原生场景的隔离策略
-
适配多种网络架构
-
告警模式业务0影响
提供业务视角的网络拓扑关系
基于实际业务的⼯作负载可视化展示容器间的访问⾏为,清晰展示网络拓扑关系,方便运维和安全人员理解。
覆盖各种云原生场景的隔离策略
集群内网络隔离
可设置基于Namespace、Label、Controller、IP/CIDR的隔离策略。
集群间网络隔离
可设置基于集群与非容器集群,集群与外部网络之间的隔离策略。
纯容器与胖容器
针对纯容器与胖容器提供不同的隔离策略。
提供“告警”模式,让用户放心设置策略
针对工作负载提供“仅告警”业务模式,不下发实际的隔离策略,而是模拟下发的情况,当发现偏离策略的行为则进行告警提示。通过此种模式,可避免因隔离错误而对业务造成影响。
全面适配云原生的网络环境
适配Underlay、Overlay、Vxlan、Macvlan、Ovs等诸多网络架构。
四、入侵检测
德迅蜂巢通过多锚点入侵监测分析,实时监测容器中的已知威胁、恶意⾏为、异常事件,监测到入侵事件后,对失陷容器快速安全响应,把损失降到最低。
-
威胁建模适配容器环境
-
持续地监控和分析
-
威胁告警快速响应处置
-
提供多种异常处理⽅式
基于已知威胁进行检测
德迅蜂巢通过监控容器内的进程创建、文件变化等行为,获取行为特征,将这些特征经过德迅五大检测引擎的检测,以发现容器中的病毒、挖矿、Webshell等攻击行为。
基于恶意行为进行检测
以ATT&CK框架中定义的入侵模型为参考,结合对于运行时基础事件监控来建立IOC模型进行分析,能有效发现初始入侵时的远程漏洞利用、无文件攻击行为、远程控制的反弹Shell、端口扫描、横向移动、K8S的异常调用等行为。
基于异常行为进行检测
通过容器进程行为、文件行为、网络行为的监控/学习,建立容器行为模型,分析异常偏离行为, 发现未知入侵威胁。
五、合规基线
德迅蜂巢构建基于CIS Benchmark的最佳安全操作实践检查,帮助企业实施和完善容器合规规范,可实现一键自动化检测,并提供可视化基线检查结果和代码级修复建议。
-
CIS标准
-
一键自动化检测
-
基线定制开发
-
代码级修复建议
一键任务化检测,基线检查结果可视化呈现
用户可快捷创建基线扫描任务,根据检测需要,自行选择需要扫描的容器和基线,基线检查结果可视化呈现。
基于Docker基线多维检查
根据CIS Benchmark最佳实践方案,从运行时容器、镜像、主机三个维度,对各类容器配置问题进行检查
基于Kubernetes基线多节点检查
根据CIS Benchmark的规范,定时对k8s的master节点、worker节点进行基线检查。扫描完成后,即可查看每个扫描详情以及扫描结果