甲方安全建设-DevSecOps SCA分析

admin 2024年5月14日22:32:32评论25 views字数 2571阅读8分34秒阅读模式

前言   

前文讲到了利用DependencyTrack对代码进行SCA分析,但是当时是通过手动上传BOM并在UI上进行展示查阅,对于安全左移DevSecOps来说,必然需要在应用编码、构建阶段就对其进行安全分析,如果发现安全风险则禁止构建和部署。编码阶段可以使用类似IDEA插件来实现,本文将通过CI流水线实现SCA分析。


Gitlab流水线介绍

本文不去讲解如何搭建Gitlab和对应的CI,只讲如何实现SCA的流水线。Gitlab的CI流水线可以在项目中创建一个.gitlab-ci.yml的文件,在里面控制好相应的步骤,如build、deploy,然后分别设置每个步骤都所需步骤。通过dependencies可以设置流水线所需要的前置步骤,来完成必要的顺序执行。其中详细步骤中,script可以使用shell代码,当不想流水线继续时,可以使用exit 1返回非0的状态码,这样流水线就会结束且不会往后执行。

根据https://docs.dependencytrack.org/usage/cicd/文档,可以在上传bom时自动创建项目,省去创建项目的前置步骤。笔者没有发现DependencyTrack有手动分析bom的API接口,看起来是上传bom后自动分析的,因此需要在流水线中上传bom后等待一点时间,给其分析的时间,bom越大分析时间越长,使用DependencyTrack API时,需要注意赋予BOM_UPLOAD、PROJECT_CREATION_UPLOAD、VULNERABILITY_ANALYSIS权限。


测试

首先以python项目为例,使用cyclonedx-bom完成bom的生成。然后在requirements.txt存放一个不存在漏洞的软件包:

甲方安全建设-DevSecOps SCA分析

这时候触发gitlab流水线是没问题的:

甲方安全建设-DevSecOps SCA分析

但是如果存放存在漏洞的软件包时,流水线停在了sca,不再往build执行:

甲方安全建设-DevSecOps SCA分析

甲方安全建设-DevSecOps SCA分析这样可以杜绝漏洞风险包上线。

附 流水线

stages:              - sbom              - sca              - build                       variables:              DT_API_KEY: keykeykeyjjjjjjj              DT_SERVER_URL: http://www.chinabaiker.com:8081                       # 生成 SBOM 的阶段            generate_sbom:              stage: sbom              image: python:3.9              before_script:                - pip install cyclonedx-bom -i https://pypi.tuna.tsinghua.edu.cn/simple/              script:                - cyclonedx-py requirements -o bom.xml              artifacts:                paths:                  - bom.xml                       # 进行 SCA 扫描的阶段            sca_scan:              stage: sca              image: ubuntu:latest              dependencies:                - generate_sbom              script:                - apt-get update -y                - apt-get install jq curl -y                - echo 111111                - echo ${DT_SERVER_URL}                - >                  UPLOAD_RESPONSE=$(curl -s -X POST "${DT_SERVER_URL}/api/v1/bom"                     -H "Content-Type: multipart/form-data"                     -H "X-Api-Key: ${DT_API_KEY}"                     -F "projectName=${CI_PROJECT_NAME}"                     -F "projectVersion=${CI_COMMIT_REF_NAME}"                     -F "[email protected]"                    -F "autoCreate=true")                - echo 111111                - echo ${DT_SERVER_URL}                - echo ${UPLOAD_RESPONSE}                - >                  PROJECT_ID=$(curl "${DT_SERVER_URL}/api/v1/project/lookup?name=${CI_PROJECT_NAME}&version=${CI_COMMIT_REF_NAME}"                     -H "Content-Type: application/json"                     -H "X-Api-Key: ${DT_API_KEY}"  | jq -r '.uuid')                - echo ${PROJECT_ID}                - sleep 30  # 等待扫描结果生成                - |                  RESULT=$(curl "${DT_SERVER_URL}/api/v1/finding/project/${PROJECT_ID}"   -H "Content-Type: application/json" -H "X-Api-Key: ${DT_API_KEY}")                  HIGH_CRITICAL_RESULT=$(echo $RESULT | jq '[.[] | select(.vulnerability.severity == "HIGH" or .vulnerability.severity == "CRITICAL")]')                  echo ${HIGH_CRITICAL_RESULT}                  HIGH_CRITICAL_COUNT=$(echo $RESULT | jq '[.[] | select(.vulnerability.severity == "HIGH" or .vulnerability.severity == "CRITICAL")] | length')                  if [ "$HIGH_CRITICAL_COUNT" -gt 0 ]; then                    echo "High severity vulnerabilities found: $HIGH_COUNT"                    exit 1                  else                    echo "No high severity vulnerabilities found."                  fi                                    allow_failure: false              only:                - branches                       # 构建阶段            build:              stage: build              script:                - echo "Building project..."              dependencies:                - sca_scan              only:                - branches                       


总结  

本文讲解了利用DependencyTrack完成Devsecops中的SCA分析,保证了代码安全。

原文始发于微信公众号(中国白客联盟):甲方安全建设-DevSecOps SCA分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月14日22:32:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   甲方安全建设-DevSecOps SCA分析https://cn-sec.com/archives/2741084.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息