乐趣区

关于安全测试:2-行代码开启-SAST将代码漏洞定位到具体行数

💡  如何在流水线中集成与利用 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 实际。

退出移动版