10分钟对公司的gitlab代码仓库来一次安全体检

去年 log4j 漏洞爆发时候就已经很痛苦了,当时把所有的线上服务排查了一遍。没想到这都已经过去3个月了,上周又遇到了一个服务仍在使用低版本,被外部攻击,有点受伤。

这件事后,老板让我全量扫一遍我们的代码库,看还有哪些服务还在用老版本的 log4j,统一推一波修复,防止后续在发生此类事件。

方案调研

方案一(放弃)

当时我第一反应是写个脚本,遍历所有项目,再拉取项目到本地,通过正则匹配的方式识别代码中是否使用了 log4j,并提取版本,并根据版本号判断是否有漏洞。但后面想了下,这个漏洞检测方式不具备通用性。一是组件判断很麻烦,我们通常说的组件名和配置文件中的组件名根本不是一回事,不是很好对应,二是如果后边再有其他漏洞,还要重新写正则,着实麻烦。

方案二(成功)

在 github 上搜了下开源项目,看看有没有能对项目做组件扫描的工具,找了半天找到了一个叫 Murphyscan 的开源项目,比较满足我的需求。思路是写个脚本,先通过 gitlab 接口获取项目列表,然后 clone 代码到本地,然后通过 Murphyscan 提供的客户端扫描,处理扫描结果获取目标漏洞组件。

脚本流程

为寻求便捷、高效,使用 python3 编写脚本,具体流程如下:

  1. 通过 python-gitlab 包,调用 gitlabapi,获取项目列表及clone链接。
  2. clone 代码到本地
  3. 调用 Murphyscan 客户端,扫描项目
  4. 处理扫描结果(扫描结果为 json 类型),遍历漏洞,发现目标漏洞打印项目名及项目提交者。
  5. 删除 clone代码

进一步,增量检测

全量检测搞定,老板交代的任务算是搞完,心情愉悦,但有一个问题,如果哪个程序员手抖,引用组件时候,又引入一个低版本的,那老板岂不是要杀我祭天。怀着忐忑的心情调研了下怎么扫描增量服务。

经过调研发现,gitlab有一个叫webhook功能。他的功能是,管理员可以指定push、merge等动作触发时,向某个指定接口通知该事件,这样我就可以知道有代码更新或者创建。拿到通知后我就去拉取最新代码,再扫描一次,发现有漏洞后通过机器人提醒我,这样增量检测就搞定了。

gitlab配置

进入Gitlab平台,点击顶部【菜单】-【管理员】进入管理中心

10分钟对公司的gitlab代码仓库来一次安全体检

1.选择系统钩子进入Webhook设置页面

2.URL处填写python起的webapi接口地址

3.下方触发器中确保【仓库更新事件】处于勾选状态

4.去掉【启用SSL验证】的默认勾选

5.点击【添加系统钩子】完成设置

10分钟对公司的gitlab代码仓库来一次安全体检

webapi

通过fastapi起了一个web服务,其功能主要是接收gitlab的webhook事件推送,收到事件后,拉取项目代码,并进行扫描,同样扫描结果会通过飞书机器人将有问题的项目检测结果推送给我。

待优化

目前代码还有些问题,主要是目前流程还是单线程的,我们公司项目量和代码更新量比较少的情况下还可以,如果代码更新比较频繁,可能会导致使用webapi线程过多,服务崩溃。后续会通过任务队列形式,将webhook接口和漏洞检测拆开,通过任务队列管理检测任务。

项目地址

该项目已贡献给MurphySecurity,

项目地址:https://github.com/murphysecurity/murphysec-gitlab-scanner.git

发布者:墨菲安全,转发请注明出处:https://www.murphysec.com/blog/product-presentation/4183.html

(0)
上一篇 2023年1月4日 17:30
下一篇 2023年1月4日 17:32

相关推荐

  • 拥抱大模型-大语言模型在墨菲安全产品中的应用

    近年来大模型的飞速发展,让人们看到了AI的无限可能,业界在积极探索大模型在各个领域的应用。在过去的一段时间里,墨菲安全也在积极探索大模型在软件供应链安全场景中的应用。 大模型在漏洞知识库中的应用 墨菲安全后端的漏洞、软件知识库构建过程涉及到大量的语义理解工作,包括自然语言的语义、代码的语义。在过去我们通常会构建一系列的小模型来完成这些工作,例如模型A用于提取…

    2023年6月11日
  • 十年磨一剑,墨菲安全正式发布开源项目murphysec,专注软件供应链安全治理

    先抛出两个问题: 你们公司从超市买一桶水回去,喝之前会做检测吗?会担心水被人下毒吗? 你们公司的程序员从 GitHub 上 clone 一个开源项目或者组件,引入到线上项目代码中运行,你会担心有安全漏洞吗?会担心软件投毒吗? 开源技术的应用成为驱动新一轮产业数字化升级的核心动力 “迎接数字时代,激活数据要素潜能,推进网络强国建设,加快建设数字经济、数字社会、…

    2023年1月4日
  • 软件供应链受威胁下的应对方法——供应链安全管理平台的五大工具能力

    背景 如今,软件供应链安全问题已经成为一个全球性的难题。根据数据统计,2017年全球遭受网络攻击的公司比例已经达到了93%,其中很大一部分是由于软件供应链安全问题导致的。而在中国,据统计,2019年全国共发生了2.7万起网络安全事件,其中不乏因软件供应链安全问题而导致的事件。 软件供应链安全问题的出现原因也较为复杂,包括第三方供应商的安全风险、源代码泄露、恶…

    2023年2月20日
  • 看到我们的IDE插件代码被友商复制粘贴了,所以我们做了一个愉快的决定

    昨天看到一个朋友给我发了一篇文章,某友商也发布了一款关于代码安全检测的 IDE 插件,其中UI和代码特征上,与我们的MurphySec Code Scan 插件有一些非常相似的地方。于是我们也简单做了一些分析: UI 对比,icon好像是一样的? 友商 IDE 插件代码中出现的murphysec字样,而且友商的插件里面并没有看到快速认证这个功能,可能是后端不…

    2023年1月5日
  • 墨菲安全软件供应链安全产品v3.0正式公测之快速入门

    标题:墨菲安全软件供应链安全产品v3.0正式公测之快速入门 全新 3.0 版本帮您3分钟从代码分析、风险检测到一键修复,快速提升代码安全性 一、视频演示 以 Gitlab 全量检测为例,展示一次完整检测流程: 二、操作流程介绍 流程图展示了墨菲安全平台的基本操作流程,可供参考。 暂时无法在飞书文档外展示此内容 1、创建团队、加入团队或直接使用默认团队 已为您…

    2023年1月5日

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-180-9568

邮件:hi@murphysec.com

工作时间:周一至周五,10:00-19:00,节假日休息

关注公众号

20230105-100741