海量代码仓库使用codeql自动扫描随想
2023-4-10 09:32:16 Author: www.freebuf.com(查看原文) 阅读量:26 收藏

freeBuf

主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

背景

组织有上万个代码仓库,覆盖多种编程语言,并且每日都有大量系统上线。在过去,我们一直使用 cobra 工具进行代码审计,根据组织情况对其进行了深度定制cobra并实现了 SCA 扫描功能。然而,我们发现静态规则扫描会有较多误报和漏报,同时针对不同编程语言的扫描规则的维护也较为繁琐,涉及到诸如 Java、Go、C# 等多个语言。

需要进一步改进工具的准确性和易用性,以提高代码审计效率和质量。

于是我有了一些关于在大规模场景下使用 CodeQL 进行扫描的思考,但需要注意的是,CodeQL 不允许集成到 CI/CD 中。因此本文只是为大家提供一个思路。

扫描流程图

image

监控gitlab仓库更新

监控方式

我们可以考虑两种方法来监控仓库代码是否更新,一种是主动探测,另一种是被动 Hook。

主动探测的方法比较常见,可以通过定时任务或者轮询的方式,定期检查仓库代码是否更新,并对更新的代码进行相应的处理。这种方法通常会对服务器产生一定的压力和额外的网络流量,需要考虑到资源的利用效率。但好处在于,遇到外部披漏漏洞时,可以一键下发任务,自动审查项目代码。

被动Hook的方法则可以监控上线邮件,获取到对应的仓库地址或者通过gitlab的webhook来将更新的仓库推送到扫描平台进行扫描。

综合而言,可以根据实际情况选择适合自身业务的代码更新监控方法。对于具体的实施方案,还需要结合项目特点、开发团队和管理需求等多方面因素进行详细分析和评估,从而确保方案的有效性和可行性。

扫描

  1. fastapi启动服务,开放一个添加任务的接口,调用codeql

  2. 任务推送至该接口进行扫描

添加自定义规则功能

通过维护一份规则名称表,在前端选择对应规则的时候,能够找到后端具体规则路径,加载具体的codeql规则,从而实现自定义规则的扫描。

拉黑功能

对于误报告警,可以考虑将其加入黑名单中,从而防止重复报警,减少噪声。

点击拉黑,把代码仓库名称(地址)、扫描规则、扫描的文件路径、文件具体行加入黑名单库。

理想效果图

image

参考

https://cobra.feei.cn/
https://github.com/ZhuriLab/Yi

交流

欢迎各位多多指出不足之处并和我进行交流,可以加我v:boat9999999,进入安全开发讨论群交流

最后还要感谢我的好大哥、camille的作者@zhengjim给我提供技术上的帮助与支持


文章来源: https://www.freebuf.com/articles/es/363062.html
如有侵权请联系:admin#unsafe.sh