2 行代码开启 SAST,将代码漏洞定位到具体行数

news2025/1/10 3:27:05

💡  如何在流水线中集成与应用 SAST,实现自动化代码安全扫描 ?

近日,在「DevSecOps软件安全开发实践」课程上,极狐(GitLab) 高级专业服务交付工程师欧阳希、极狐(GitLab) 后端工程师黄松,分享了静态安全扫描与漏洞检测的 WHAT-WHY-HOW,并演示无缝衔接极狐GitLab 合并请求与议题功能,帮助大家进一步掌握 SAST 技术。

以下内容整理自本次直播,你也可以点击👉观看视频回放或下载 PPT。Enjoy~

软件开发生命周期中,会遇到各种各样的安全问题。众多开发人员都在寻求一个自动化排查风险和漏洞的工具,使其成为高质量软件研发的 “好助手”。

极狐GitLab 作为一体化安全 DevOps 平台,内置七大安全功能,无缝嵌入 CI/CD,实现安全自动检测,生成安全报告,结合漏洞管理功能,形成完善的漏洞追踪管理机制,最终利用发现问题、追踪问题、修复问题的闭环,来帮助用户构建纵深防御体系。

本次课程分享源代码扫描工具,包括 KICS 和 SAST 这两个覆盖不同层面的方式:

  • KICS 扫描:扫描 IaC(基础设施即代码) 源代码中的漏洞与风险;

  • SAST 扫描:扫描软件项目中源代码文件引入的安全风险。

在极狐GitLab 中,源代码安全扫描工作流如下图:

  • 每次提交代码或变更时,触发流水线静态代码扫描;

  • 扫描结果在 MR 中直接展示,并显示漏洞级别(高、中、低等);

  • 在 MR 中点击对应的安全漏洞就可以完成漏洞追踪管理;

  • 修复安全问题后再次提交代码,重新检测,审核通过后才可以合并到主分支。

下面,我们分别展开 KICS 和 SAST 介绍。

KICS 保障基础设施即代码(IaC)安全


KICS 是什么?

KICS (Keeping Infrastructure as Code Secure)主要用来在开发早期发现 IaC(基础设施即代码)中的一些安全漏洞、合规问题以及错误配置等

极狐GitLab CI/CD 内建了 KICS 模板,支持对代码仓库的 IaC(基础设施即代码)进行静态扫描。

KICS 使用条件

  • 使用极狐GitLab CI/CD;

  • 使用极狐GitLab Runner并使用 K8s 或 Docker 的 Executor;

  • 使用过程中系统自动拉取安全扫描镜像。

KICS 扫描结果

  • KICS 扫描静态代码源代码中包含的安全漏洞;

  • 扫描结果将被保存在流水线产物 Job Artifect 中;

  • 扫描结果进行分类,包括 Critical,High,Middle,Low 级别安全风险。

KICS 扫描范畴

包括但不限于以下自动化工具:

  • Ansible;

  • Azure Resource Manager;

  • CloudFormation;

  • Dockerfile;

  • Docker Compose;

  • Kubernetes;

  • OpenAPI;

  • Google Deployment Manager;

  • gRPC;

  • Terraform。

如何配置 KICS ?

使用极狐GitLab CI/CD 配置 KICS IaC 安全扫描:

  • 在存放相关 IaC 代码的极狐GitLab 仓库中添加 .gitlab-ci.yml 配置文件并添加 IaC 扫描模板,如下内容:

  • 提交该变更,系统自动触发 CI/CD 流水线进行安全扫描。

可参考极狐GitLab IaC 扫描官方文档定制化配置扫描规则 GitLab Infrastructure as Code (IaC) Scanning​​​​​​。

KICS 扫描结果如何呈现 ?

极狐GitLab CI/CD 流水线执行完成后,针对扫描结果输出安全报告,在 2 分钟内即可展示在流水线产物中,如下图:

KICS 扫描结果如何使用?

KICS IaC 扫描无缝衔接极狐GitLab 合并请求以及议题:

➤ 项目管理者

  • 可快速定位 MR 中引入的安全问题,并指派相关人员进行修复;

  • 可以针对相关的代码段进行评论,引导开发者解决问题并进行问题留痕。

➤ 开发者

  • 可根据极狐GitLab 的 IaC 扫描结果快速创建相关议题,针对中高风险问题进行精准跟踪,并指派相关人员解决该问题;

  • 可通过标签为各类安全问题设置风险等级,并记录相关问题的解决过程和耗时。

SAST


SAST 是什么?

软件中的漏洞和弱点很常见:84% 的软件漏洞都是利用应用层的漏洞。软件相关问题的普遍性是使用应用安全测试工具的主要动机,SAST 就是其中之一。

SAST(Static Application Security Testing)静态应用程序安全测试,俗称静态分析,是一种应用程序的安全测试手段,出现较早,主要是通过分析源代码来发现潜在的安全漏洞,从而确保软件安全。

SAST 属于白盒测试,分析结果能够精确到代码行数,而且通常是在代码编译之前进行,因此属于 SDLC 早期,修复问题的成本相对较低。

如上图所示,同属于源代码阶段的安全测试还有前文说到的基础设施即代码扫描,以及 DAST 静态应用程序安全测试、许可证合规、密钥检测。

优秀的 SAST 工具具备什么特点?

➤ 更好的集成性和综合性

  • 与软件生命周期紧密结合,能和议题、合并请求集成;

  • 支持更全面的语言框架,不需要分开使用多个开源方案。

➤ 更好的可视化和报告功能

  • 检测后能生成详细的漏洞报告,支持强大的漏洞管理功能。

➤ 更好的扩展性和定制性

  • 能够统一各种静态分析器的接口,减小用户学习成本;

  • 能支持扩展自定义分析器,满足复杂场景需求。

如上文极狐GitLab 安全扫描工作流所介绍,极狐GitLab 将 SAST 与 MR 无缝集成,在创建 MR 时,触发 CI/CD 进行 SAST 分析,最终的结果会展示在 MR 中,开发人员可通过创建 Issue 来对相应的 SAST 漏洞进行追踪管理;当修改后重新提交代码,再次触发 CI/CD Pipeline,在确认无误后,方可合入代码。

其中,极狐GitLab 的分析器,基于第三方代码分析工具的封装,统一处理逻辑和输出格式,支持自定义,支持多种语言,包管理器,框架等,诸如 Java、Go、.Net、JavaScript、Node.js 等。

如何启用 SAST ?

以极狐GitLab 为例:

SAST 的执行流程如下图,极狐GitLab 支持通过两种方式启用 SAST:

➤ 方式 1:在 UI 中配置 SAST

基础配置包含 4 项:

  • Image prefix:自定义分析镜像的命名空间;

  • Excluded paths:修改时记得手动加上默认值;

  • Stage:流水线阶段;

  • Search maximum depth:语言确定阶段搜索深度,具体分析是整个源码。

➤ 方式 2:在 CI/CD YAML 中配置 SAST

只需要在极狐GitLab CI/CD 中加入如下两行代码即可使能 SAST:

include:
  - template: Security/SAST.gitlab-ci.yml

详细配置内容可参考官方文档 静态应用程序安全测试(SAST)。

以上,就是关于 SAST 的基础支持和应用分享。

同时,我们提供了极狐GitLab 旗舰版 30 天免费体验机会,欢迎到极狐GitLab 官网申请试用,解锁更多 DevSecOps 实践。

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

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

相关文章

互联网赚钱项目有哪些?目前最火的互联网项目

互联网是一个神奇的行业,大门不出二门不迈,一根网线一台电脑,甚至一台手机就可以赚钱。它给我们创造了前所未有的商业机会,让成千上万有梦想,敢想敢干的人通过互联网获得了巨大的成功!正因为如此&#xff0…

引领真无线耳机未来趋势,NANK南卡OE骨传导真无线耳机惊艳亮相

传统的蓝牙耳机存在很多问题,例如续航时间短、长期佩戴耳朵会不舒服,甚至影响听力等等。为了解决这些问题,在骨传导领域深耕十多年的南卡品牌推出了这款真无线骨传导耳机——NANK南卡 OE。 NANK南卡OE即将正式上线,这一消息一经宣…

项目搭建第一天后台搭建方式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、后台环境是什么?二、使用步骤1.项目目录2.项目介绍3.项目构建3.1 注册中心搭建方式3.2 关键配置3.3 开启高可用方式 总结 前言 提示&#xff1…

10 KVM虚拟机配置-虚拟CPU和虚拟内存

文章目录 10 KVM虚拟机配置-虚拟CPU和虚拟内存10.1 概述10.2 元素介绍10.3 配置示例 10 KVM虚拟机配置-虚拟CPU和虚拟内存 10.1 概述 本节介绍虚拟CPU和虚拟内存的常用配置。 10.2 元素介绍 vcpu:虚拟处理器的个数。 memory:虚拟内存的大小。 属性un…

盖雅工场荣获「2022年度最佳人力资源服务机构」奖

2023年4月26日,HRoot重磅发布2022年度最佳人力资源服务机构榜单。盖雅工场凭借专业的服务、优质的品牌口碑和影响力,再度荣获「2022年度最佳人力资源服务机构」奖项,彰显了盖雅优秀的产品实力以及在人力资源技术服务领域的优势地位。 奖项背景…

PCL学习五:Range Images-距离图像

参考引用 Point Cloud Library黑马机器人 | PCL-3D点云PCL深度图像 1. 引言 1.1 深度图像的获取与研究方向 获取方法 激光雷达深度成像法,计算机立体视觉成像,坐标测量机法,莫尔条纹法,结构光法 研究方向 深度图像的分割技术深度…

使用 SaleSmartly 实时聊天提高转化率

在竞争激烈的电子商务环境中,很难给客户留下持久的印象,与他们建立关系更加困难。但是,提供个性化的体验和产品是超越竞争对手的最佳方式之一。这就是为什么许多跨境电子商务企业将与客户的个性化沟通作为他们的首要任务。 SaleSmartly&#…

JVM原理与实战(一)

jvm的基本结构 1.类加载系统 负责从文件系统或者网络中加载Class信息 2.方法区 (1)加载的类信息存放于一块称为方法去的内存空间 (2)除了类的信息外,方法区中可能还存放着运行时常量池信息,包括字符串字面…

PyQt5桌面应用开发(8):从QInputDialog转进到函数参数传递

本文目录 PyQt5桌面应用系列How old are you, Dialog?QInputDialog minimalistwhy not lambdaand how partial worksSummary PyQt5桌面应用系列 PyQt5桌面应用开发(1):需求分析 PyQt5桌面应用开发(2):事件…

HTML购物车示例(勾选、删除、添加和结算功能)

以下是一个简单的HTML购物车示例,包含勾选、删除、添加和结算功能。结算功能使用PHP实现,可以获取选中商品的ID。 以下是一个简单的HTML购物车示例,包含勾选、删除、添加和结算功能。结算功能使用PHP实现,可以获取选中商品的ID以下…

Linux下安装Redis

下载 方式一:官网下载稳定版本,然后FTP上传至服务器 https://download.redis.io/releases/ 方式二:服务器内使用wget下载(想下其它版本可参考上图,更改命令后缀版本即可) wget http://download.redis.i…

2.基础篇

目录 一、描述软件测试的生命周期(软件测试的流程) 二、如何描述一个bug 三、bug的级别(粗略划分) 四、bug的生命周期 五、因为一个bug和开发人员产生争执怎么办 六、如何设置弱网? 一、描述软件测试的生命周期&a…

Flex弹性布局

文章目录 1. 开启Flex布局2. 应用于flex container的css属性flex-directionjustify-contentalign-itemsflex-wrapflex-flowalign-content 3. 应用于flex items的css属性orderflex-growflex-shrinkflex-basis(了解)align-selfflex 1. 开启Flex布局 flex c…

校招推荐学习java开发还是大数据开发

这两个方向其实都是不错的方向,java虽然卷,但是技能在手也不怕。大数据的发展前景也是不容小觑的。关键就在于你未来想发展的方向以及个人的兴趣 首先可以肯定的是,市场上终归是需要Java人才的,但是总会有人来问,Java…

对偶问题和KKT条件

KKT条件 对于不等式约束优化问题 min ⁡ f ( x ) s . t . g ( x ) ≤ 0 \min\quad f(x)\\ {\rm s.t.}\quad g(x)\leq 0 minf(x)s.t.g(x)≤0 拉格朗日函数为 L ( x , λ ) f ( x ) λ g ( x ) L(x,\lambda)f(x)\lambda g(x) L(x,λ)f(x)λg(x) 。 KKT条件包括 拉格朗日函…

分享5款轻量级的Win10神器,错过你会后悔的

今天我要为大家推荐五款小众而且小体积的WIN10小工具,它们可以让你的电脑使用更加方便和高效,而且不占用太多的空间和资源,非常适合轻量级的办公和娱乐。 1.窗口管理工具——TileIconifier TileIconifier可以将窗口最小化到托盘区域,从而更…

在Android应用中集成使用traceroute工具

背景知识 traceroute是一个常用于Linux系统的网络工具,它可显示数据包在IP网络中所经过路由的IP地址,理想状态下可探测本机和目标地址之间的所有路由节点。 其他操作系统中也有类似的替代品,实现都大同小异。一般用法如下: 终端…

【TCP为什么需要粘包和拆包】

如今,大半个互联网都建立在 TCP 协议之上,我们使用的 HTTP 协议、消息队列、存储、缓存,都需要用到 TCP 协议——这是因为 TCP 协议提供了可靠性。简单来说,可靠性就是让数据无损送达。但若是考虑到成本,就会变得非常复…

一文带你理解SpringBean

Bean定义 ​ Bean作为Spring框架面试中不可或缺的概念,其本质上是指代任何被Spring加载生成出来的对象。(本质上区别于Java Bean,Java Bean是对于Java类的一种规范定义。)Spring Bean代表着Spring中最小的执行单位,其…

如何用ApiFox自动生成接口文档?没有比这更详细的教程了

目录 前言 第一步:安装 Apifox IDEA 插件(Apifox Helper) 第二步:配置 Apifox 访问令牌 和项目 ID 第三步:自动生成文档! 第四步:去 Apifox 项目中查看自动生成的文档 Apifox 更多好用的功能…