10 分钟对公司的 gitlab 代码仓库来一次安全体检 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ssltest
V2EX    推广

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

  •  
  •   ssltest 2022-03-25 09:02:56 +08:00 2132 次点击
    这是一个创建于 1297 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本文来自用户南瓜投稿

    去年 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

    1 条回复    2022-03-25 09:15:46 +08:00
    patrickyoung
        1
    patrickyoung  
       2022-03-25 09:15:46 +08:00   13
    @livid Promotion. 该公司曾经多次使用恶意滥用 GitHub API 创建大量 PR 目的推广其产品。被 GitHub 封禁后重复换号再来。目前暂时停止后改用发软文方式推广。

    #墨菲安全 #墨菲安全滥用 API 推广
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2407 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 01:26 PVG 09:26 LAX 18:26 JFK 21:26
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86