01、简介
在企业上云的过程中,AK/SK泄露导致的数据泄露事件屡见不鲜。在企业混合云架构下,公有云和私有云都存在大量的AccessKey,如何有效地检测可能的AK/SK泄露事件,一直困扰着企业的安全人员。
本文提供了一种比较容易实现的思路,完成AK/SK泄露检测能力的构建,实现类似于阿里云云安全中心AK泄露检测的功能,检测GitHub平台公开源代码中是否包含企业所使用的AK/SK敏感信息。
02、实现思路
收集企业内部(公有云+私有云)所有的AccessKeyId作为关键特征,借助Github API 的代码搜索能力,通过定时任务检测关键特征,以发现可能的AK/SK泄露事件。
在AK检测工具的技术实现上主要需要考虑两点,接口调用频率和告警方式的选择。
(1)接口调用频率
这里需要特别注意的是:从2023年4月10日开始,GitHub.com上的代码搜索将有与其他搜索类型不同的速率限制,每分钟 10 个请求,并且所有代码搜索请求都需要身份验证。
接口调用频率的限制,决定了这是一个慢速检测的过程,需要我们选择合适的接口调用频率,而一旦触发限制请求会失败,需要有请求失败重发机制。
另外,从用户代码上传到Github到检测发现也是需要时间,例如,我在GitHub上新建一个仓库,并上传了包含accessKey的app.js文件,调用Github API接口搜索accessKeyId,需要45分钟左右才能搜索到关键特征。
(2)告警方式
一旦检测发现异常事件,需要有告警机制来及时响应处理。邮件告警是一种比较简便的方式,通过调用SMTP服务自动发送邮件告警。另外,考虑对分散的工具进行平台式整合,将检测到AK泄露信息通过syslog发送到SIEM平台,进行统一的安全监控和事件响应。
基于以上需求,开源的GitHub代码泄露监控工具有些已经好几年没更新了,有些则并不符合自己的需求,于是我便决定根据自己的想法,动手撸一个AK/SK泄露检测的工具。
03、实现效果
(1)AK泄露检测工具运行效果,每十秒搜索一次,请求失败后30秒自动重发机制。
(2)邮件告警,检测到可疑的AK泄露事件邮件立即告警。
(3)SIEM集成,通过Syslog投递日志到SIEM,制定告警规则统一监控和事件响应。
04、思路扩展
AK/SK泄露,账号密码、密钥等配置文件都有泄露的风险,关键是如何提取特征,比如:AccessKeyId是一种特征,smtp+user+@xxxx.com是另一种组合特征,可以很精准地定位到可能的企业邮箱泄露。
除了Github、Gitee,技术博客也是泄露事件的源头,如果可以利用平台的搜索能力来找到可能的泄露关键信息,可能是一种比较轻巧的方案,当然这个也取决于平台的开放程度了。
以上,便是从AK/SK泄露案例引发的思考以及技术检测方案,欢迎补充和指正。