蜻蜓:GitLab结合fortify实现自动化代码扫描实践

简介: 在甲方做安全的同学可能会有一项代码审计的工作,通常需要从gitlab把代码拉取下来,然后使用代码审计工具进行扫描,然后对结果进行人工确认;在这个流程中需要做的事情比较繁琐,比如说gitlab如何配置token、如何自动化把代码拉取到本地、如何调用fortify实现批量扫描等诸多繁琐问题。本篇文章以甲方安全代码安全建设为主线,分享如何让代码审计工具自动化扫描gitlab仓库里的代码。并且提供了一个便捷的实验环境供大家测试。

一、背景

在甲方做安全的同学可能会有一项代码审计的工作,通常需要从gitlab把代码拉取下来,然后使用代码审计工具进行扫描,然后对结果进行人工确认;

在这个流程中需要做的事情比较繁琐,比如说gitlab如何配置token、如何自动化把代码拉取到本地、如何调用fortify实现批量扫描等诸多繁琐问题。

本篇文章以甲方安全代码安全建设为主线,分享如何让代码审计工具自动化扫描gitlab仓库里的代码。并且提供了一个便捷的实验环境供大家测试。

本文实验中调用了多款代码审计工具(包含semgrep、fortify、墨菲、河马,其中fortify软件属于商业性质,本文章无法提供该软件,如需自备此软件并存放在主机/data/share/fortify目录),完成试验后可以看到各代码审计工具的效果对比。

二、准备环境

为了方便大家,我把我的实验gitlab地址直接共享出来,大家可以优先使用此共享环境。

URL:http://123.249.6.139:1880/
用户名:root
密码:qingtingtest
token:glpat-SMsSWy6xzB4x8B6rFryB

配置gitlab环境

为了真实模拟fortify扫描gitlab仓库的代码,我需要快速搭建一个gitlab仓库,这里实验docker的方式最为简单,只需要执行以下的命令

docker run --detach --hostname gitlab.thinkpad --publish 8443:443 --publish 880:80 --publish 222:22 --name gitlab --restart always --volume /data/gitlab/config:/etc/gitlab --volume /data/gitlab/logs:/var/log/gitlab --volume /data/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce

命令执行之后,docker会自动拉取docker镜像,并创建一个gitlab的容器,服务启动之后会随机生成一个root用户的密码,可以通过以下命令查看root用户的初始化密码

docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

命令执行之后,可以在终端中看到如下所示密码

Password: UnSoOs7l8YN6dYDQRP/1/dzpKswF7dq7fpyhKBey95A=

现在可以使用浏览器访问gitlab的页面,访问地址是http://x.x.x.x:880/,然后浏览器会自动跳转到登录页面,如下图所示

在登录页面,我们在用户名处输入root,密码处输入刚才得到的密码;登录成功之后会自动跳转到工作台的首页,如下图所示。

创建API访问的token

为了让fortify能够访问到gitlab仓库的代码,我们需要创建一个token,用于API访问;在头像位置展开下拉菜单,选择preferences->Access Tokens ,填下相关参数,界面如下所示

创建完成,把生成的token复制出来,后续要用到

glpat-ggjo6Z6aQXWCZ2FNJcsz

gitlab搭建完后,默认里面有一个空项目,fortify无法扫除有价值的漏洞,为了方便测试,需要在新建项目的位置导入项目进去,打开URL地址

http://10.1.1.140:880/projects/new#import_project,然后选择Repository by URL,然后填入一个可以被拉取的仓库地址,这里我提供一个供大家实验,如下图所示

https://gitee.com/songboy/QingScan

导入项目之后,gitlab会自动拉取代码到服务器,如下图所示

三、配置参数

现在已经有了gitlab的实验环境,可以正式开始做实验,首先打开蜻蜓的市场页面,URL地址如下

http://qingting.starcross.cn/scenario/store

可能会提示要求登录,如果是首次进入蜻蜓安全控制台,扫描登录之后会自动注册

然后需要在服务器执行添加节点的shell命令,按照提示进行操作即可,如下图所示

现在回到市场页面,找到快速挖掘0day漏洞,在下方有个按钮,添加到工作流,如下图所示

添加到工作流之后,会看到工作流的信息,这里可以把gitlab的配置信息填写进去,需要点击进入编排流程,如下图所示

在编排工作流页面,上方有一个设置全局变量的小图标,按照提示配置必要参数,如下图所示

四、运行程序

运行全局变量完成之后,可以右键点击第一个节点,再次点估运行选项,就可以运行这个工作流,运行过程中节点状态会发生变化

节点会按照自上而下运行,运行过程中状态图标会一直旋转,当运行完成时,可以看到成功的小图标

运行完成之后,可以去数据中心查看运行结果,可以根据节点和任务ID等方式筛选,如下图所示

我选中fortify代码扫描节点,筛选出来的列表页面如下所示

在列表页面只展示了一小部分数据,可以点击查看按钮,在详情页查看详细的漏洞信息,用于审计标注,如下图所示。

上面节点的代码已经在GitHub中开源,有需要的小伙伴也可以在GitHub

https://github.com/StarCrossPortal/QingTing

GitHub地址:https://github.com/StarCrossPortal/QingTing

目录
相关文章
|
1月前
|
Java Serverless 项目管理
云效常见问题之自建gitlab代码同步到codeup报通过token访问失败如何解决
云效(CloudEfficiency)是阿里云提供的一套软件研发效能平台,旨在通过工程效能、项目管理、质量保障等工具与服务,帮助企业提高软件研发的效率和质量。本合集是云效使用中可能遇到的一些常见问题及其答案的汇总。
40 1
|
1月前
|
移动开发 安全 数据安全/隐私保护
iOS 全局自动化代码混淆工具!支持 cocoapod 组件代码一并混淆
iOS 全局自动化代码混淆工具!支持 cocoapod 组件代码一并混淆
|
1月前
|
运维 监控 持续交付
构建高效自动化运维体系:策略与实践
在数字化时代,企业IT基础设施的管理和维护变得日益复杂。为了提高效率、降低错误率并快速响应市场变化,构建一个高效的自动化运维体系至关重要。本文将探讨自动化运维的核心策略,并通过实际案例分析展示如何将这些策略应用于日常管理中,以实现IT运维的优化。
17 0
|
2天前
|
人工智能 Python
【Python实用技能】建议收藏:自动化实现网页内容转PDF并保存的方法探索(含代码,亲测可用)
【Python实用技能】建议收藏:自动化实现网页内容转PDF并保存的方法探索(含代码,亲测可用)
20 0
|
4天前
|
运维 Devops Shell
云效产品使用报错问题之在codeup上创建的代码分支或者代码变动,同步到gitlab失败如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
9天前
|
敏捷开发 监控 前端开发
深入理解自动化测试框架Selenium的架构与实践
【4月更文挑战第16天】 在现代软件开发过程中,自动化测试已成为确保产品质量和加快迭代速度的关键手段。Selenium作为一种广泛使用的自动化测试工具,其开源、跨平台的特性使得它成为业界的首选之一。本文旨在剖析Selenium的核心架构,并结合实际案例探讨其在复杂Web应用测试中的高效实践方法。通过详细解读Selenium组件间的交互机制以及如何优化测试脚本,我们希望为读者提供深入理解Selenium并有效运用于日常测试工作的参考。
14 1
|
10天前
|
自然语言处理 测试技术 API
深入理解自动化测试框架Selenium的设计理念与实践
【4月更文挑战第15天】 在现代软件开发过程中,自动化测试已成为确保产品质量和加速迭代的关键手段。Selenium作为一种广泛使用的自动化测试框架,提供了对多种浏览器和平台的支持,极大地促进了Web应用的功能测试。本文旨在剖析Selenium的核心设计理念,探讨其在实际项目中的应用,并指出常见的误区及最佳实践,以期帮助测试工程师更高效地利用Selenium进行测试工作。
|
10天前
|
运维 Kubernetes Devops
构建高效自动化运维体系:DevOps与容器技术融合实践
【4月更文挑战第15天】 在当今快速发展的信息技术时代,传统的IT运维模式已难以满足业务敏捷性的需求。本文旨在探讨如何通过整合DevOps理念和容器技术来构建一个高效的自动化运维体系。文章将详细阐述DevOps的核心原则、容器技术的基础知识,以及两者结合的优势。此外,文中还将分享一系列实践经验,包括持续集成/持续部署(CI/CD)流程的搭建、微服务架构的应用,以及监控和日志管理策略的优化,以期帮助企业实现快速、可靠且安全的软件交付过程。
|
10天前
|
测试技术 持续交付 Docker
Django中的自动化部署与持续集成实践
【4月更文挑战第15天】本文介绍了Django项目中自动化部署与持续集成的实践方法。自动化部署通过选择Ansible、Fabric或Docker等工具,编写部署脚本,配置持续集成工具(如Jenkins、GitLab CI),确保服务器环境一致,实现快速应用上线。持续集成则涉及配置版本控制系统,设置自动化构建和测试,编写全面的测试用例,集成代码质量检查工具,并配置通知机制,以提升代码质量和开发效率。这两者结合能有效提升项目的迭代速度和可靠性。
|
11天前
|
人工智能 运维 监控
构建高效自动化运维体系的实践与思考
【4月更文挑战第14天】在数字化转型的浪潮中,自动化运维作为提升系统稳定性和效率的关键手段,受到了企业的广泛关注。本文将深入探讨如何构建一个高效的自动化运维体系,涵盖从基础设施的搭建到流程的优化等多个方面。通过分析当前自动化运维的挑战及解决方案,文章旨在为读者提供一套实用的策略框架,帮助企业实现运维工作的高效化、标准化和智能化。

热门文章

最新文章