众所周知,GitHub 是全球最大的代码托管平台,它在 2019 年报中提到平台已拥有超过 4000 万开发者,全年共创建了 4400 万个仓库。而在庞大的数字的背后,每天却发生着大量的安全泄露!我们需要实时监控 GitHub,防止出现重大安全事故。
0x01 监控原理
通常监控 GitHub 有两种方案:
1、爬虫
2、GitHub API:https://developer.github.com/v3/
GitHub 拥有健全的反爬虫机制,因此想通过爬虫监控 GitHub 并不容易,使用 GitHub API 是一个更加稳定且高效的选择。但是 GitHub API 对请求频率做了严格的限制,如果需要扫描很多关键字,必须申请多个令牌(personal access token)降低每个账号的请求频率。
0x02 码小六
今天介绍一款 GitHub 代码泄露监控工具 - 码小六,基于 PHP + Laravel 构建,开源免费,为企业安全保驾护航!
仓库地址:
https://github.com/4x99/code6
系统特点:
1、全可视化界面,操作简单
2、支持 GitHub 令牌管理及智能调度
3、扫描结果信息丰富,支持批量操作
4、任务配置灵活,可单独配置任务扫描参数
5、支持白名单模式,主动忽略白名单仓库
运行环境
Linux
PHP >= 7.3.0
Composer
MySQL >= 5.7
Apache >= 2.4
系统界面
0x03 安装部署
码小六支持 Docker 部署与源码部署,这里介绍使用 Docker 部署~
Docker 镜像不含 MySQL 实例,请安装 MySQL、创建数据库并授权(安装 MySQL 步骤略)
# 创建镜像
git clone https://github.com/4x99/code6.git
cd code6 && docker build -t code6 .
# 启动容器(宿主机映射端口 666 与 MySQL 连接参数请根据情况修改,容器启动将自动连接 MySQL 并导入数据表)
docker run -d
-p 666:80
-e MYSQL_HOST=172.17.0.1
-e MYSQL_PORT=3306
-e MYSQL_DATABASE=code6
-e MYSQL_USERNAME=xxx
-e MYSQL_PASSWORD=xxxxxx
--name code6-server code6
# 进入容器创建用户
docker exec -it code6-server /bin/bash
php artisan code6:user-add <邮箱> <密码>
这样安装就完成了,此时便可以通过 http://<宿主机 IP>:666
访问系统~
0x04 设置令牌
进入系统的第一步需要到 [ 令牌配置 ] 模块配置 GitHub 令牌
如何申请令牌?
GitHub -> Settings -> Developer settings -> Personal access tokens -> Generate new token
直达地址:
https://github.com/settings/tokens/new
其他说明
1、建议至少配置 5 个令牌
2、不能用同一个 GitHub 账号创建多个令牌(这些令牌共享账号配额)
3、码小六在进行扫描任务时会自动检测更新令牌配额并进行调度
4、若令牌状态时而正常时而异常有可能是因为请求 GitHub 网络不通畅造成(可忽略)
0x05 设置任务
接下来可以到 [ 任务配置 ] 模块设置扫描任务啦!
关键字的选择
公司邮箱后缀、域名、项目标识是不错的选择,如果能在公司推行安全规范,在每个项目工程内放置唯一标识,并将此标识作为扫描关键字便能实现精准监控。
扫描结果存储
扫描结果存储入库目前支持以下选项:
1、记录文件的每个版本:即文件每次提交(包含关键字)会产生一条新的未审记录
2、一个文件只记录一次
3、一个仓库只记录一次
如果只关注项目维度选择“一个仓库只记录一次”即可,这样会大大减少需要审核的结果记录。
0x06 审核结果
状态说明
码小六的 [ 扫描结果 ] 模块显示了匹配到关键字的扫描记录,可以将这些记录设置为以下状态:
未审:未审核的记录
误报:已确认正常的记录
异常:已确认异常的记录
解决:异常且已处理的记录
结果处理
如果通过 GitHub 个人主页、代码或 Commit 记录中能找到仓库拥有者的联系方式,可以直接联系处理。如果联系不上,则只能通过 GitHub DMCA (数字千年版权法),写邮件给 GitHub 申请下架仓库(建议各在公司内建立相关预案以便能快速处理此类问题),帮助文档:
https://help.github.com/en/github/site-policy/guide-to-submitting-a-dmca-takedown-notice)
本文始发于微信公众号(信安之路):开源代码监控系统助力企业安全
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论