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

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

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

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

  • KICS 扫描:扫描 IaC(基础设施即代码) 源代码中的漏洞与风险;
  • SAST 扫描:扫描软件项目中源代码文件引入的安全风险。

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

  • 每次提交代码或变更时,触发流水线静态代码扫描;
  • 扫描结果在 MR 中直接展示,并显示漏洞级别(高、中、低等);
  • 在 MR 中点击对应的安全漏洞就可以完成漏洞追踪管理;
  • 修复安全问题后再次提交代码,重新检测,审核通过后才可以合并到主分支。

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

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

1.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。

2.如何配置 KICS ?

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

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

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

3.KICS 扫描结果如何呈现 ?

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

4.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:

细配置内容请点击→→ 参考官方文档 静态应用程序安全测试(SAST) | 极狐GitLab

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

#极狐Gitlab##技术栈##牛客解忧铺##23届找工作求助阵地#
全部评论
码住了,等更多干货
点赞
送花
回复
分享
发布于 2023-04-29 10:24 吉林
大佬还有别的吗?
点赞
送花
回复
分享
发布于 2023-04-29 10:51 上海
网易互娱
校招火热招聘中
官网直投

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务