freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

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

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

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

10分钟对公司的gitlab代码仓库来一次安全体检
墨菲安全实验室 2022-03-25 09:15:35 435503
所属地 北京

>本文来自用户南瓜的投稿

去年 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平台,点击顶部【菜单】-【管理员】进入管理中心

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

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

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

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

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

webapi

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

待优化

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

项目地址

该项目已贡献给MurphySecurity,项目地址:https://github.com/murphysecurity/murphysec-gitlab-scanner.git

# 网络安全 # web安全 # 漏洞分析 # github # Gitlab
本文为 墨菲安全实验室 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
墨菲安全实验室 LV.5
这家伙太懒了,还未填写个人描述!
  • 20 文章数
  • 5 关注者
Apache Tomcat 存在 JsonErrorReportValve 注入漏洞(CVE-2022-45143)
2023-01-05
OSCS开源安全周报第23期:Foxit PDF ReaderEditor 任意代码执行漏洞
2022-12-26
行业认可|墨菲安全登信息通信软件供应链安全社区优秀榜单
2022-12-19
文章目录