安全运营团队通常都忙于处理恶意软件、网络钓鱼和DDoS攻击。但IT领域有块地方却是尽管有数据泄露、信誉损失、竞争优势丧失的风险,很多安全运营团队却都没有给予足够监管的。
GitHub是超级流行的源代码管理平台,公司和个人都在用GitHub存储和管理源代码,保持软件开发项目平稳进行。GitHub以其实用的功能和用户友好的界面攀上了全球最大代码仓库的位置,如今其上托管着超过8000万源代码库。Facebook、谷歌和微软的部分重要软件项目也用到了GitHub。
GitHub无疑是成功案例。为什么安全运营团队需要多加注意呢?
这是因为,GitHub如此流行,公司研发团队极有可能把一些项目也放到了GitHub上。但过去几年的事实已经证明,某些开发人员那漫不经心的GitHub使用习惯会产生严重的安全风险。即便开发人员遵循最佳实践,用Fortify一类的源代码分析工具检查过提交源码中是否存在安全漏洞,这些风险依然存在。
漫不经心的安全操作本身就足够危险。而在黑客死死盯上这个管理松散的系统时,风险就更大了。
为什么黑客会盯上GitHub
原因有很多:
1. 源代码
存储在GitHub上的软件是很有价值的知识产权。将这些代码复制下来有可能让其他公司甚至民族国家快速研发出派生应用,节省几年甚至几十年的研发时间,或者不付版权费就利用了别人的商业秘密。黑客还可以盗取源代码转卖到暗网。
2. 攻击方法
源代码可能为黑客提供攻击生产环境中软件的思路。盗取源代码能赋予他们时间去研究和查找漏洞,比通过渗透要简单得多。他们甚至可以在生产环境中运行代码并尝试攻击,不断精炼攻击,提升攻击速度、隐蔽性和有效性。
3. 登录凭证
提交到GitHub上的代码和支持文件有时候一不小心就包含了登录其他服务的凭证,比如登录AWS的。黑客获取到这些代码,也就获得了相关服务的访问权,有了盗取更多数据和中断运营的机会。
4. 未授权访问
开发人员通常都会有以个人邮箱账户登录公司代码库的权限。这些账户就是漏洞,尤其是在开发人员离职后。另外,开发人员手里的权限往往还是公司所有代码库的,而不仅仅是自己负责的项目的,这就留下了巨大的攻击界面。
5. 内部人威胁
主动监视的缺乏可使得恶意内部人易于隐藏异常行为。某个开发人员访问几十个代码库就是内部人威胁的征兆,而此类行为应被检测并标记。
2016年Uber托管在GitHub上的源码库被渗透时,黑客收获的赃物中有一部分就是登录凭证。攻击者不仅仅拿到了先进的知识产权;还挖到了内含700万Uber司机和5000万客户个人信息的AWS凭证。这些个人数据中包括了姓名、地址、驾照等等信息。
二、应对GitHub带来的安全威胁
幸运的是,安全运营团队可以采取一些实用措施来收紧公司GitHub代码库的安全。比如:
1. 清理登录凭证
提醒开发人员留心自己的GitHub登录凭证。项目的访问权限只对参与项目的开发人员开放。当开发人员脱离项目,凭证应被撤销。
2. 反复检查代码库设置
GitHub背后的软件——软件版本控制程序Git,原本是用来管理Linux内核开发的。无论Git还是GitHub,在开源项目中的应用都很广。一些开发人员,尤其是那些开源项目贡献者,基本将所有GitHub代码库都当成公共的,也不管项目是否真的开源。最好反复检查一下公司的GitHub配置,确保项目访问权是否超出了所需范围。
3. 公开代码中不混入秘密
提醒开发人员不要将登录凭证和其他高度敏感的信息混入了代码、GitHub项目介绍页或其他外部人可以访问的GitHub内容。自Uber数据泄露事件之后,GitHub就敦促开发人员小心对待此事,但来自安全运营团队的定期提醒永远不多余。
4. 监测GitHub上的可疑行为
哪些行为是可疑的?代码提交的激增、授权某人下载超大量源代码、不正常位置的登录、公司外部用户的登录或请求等等。
5. 收集GitHub日志
持续监视GitHub的最佳方式,是收集公司代码库GitHub数据的日志。从现在开始收集也为时不晚。
6. 对GitHub行为做个基线安全评估
可以用工具分析GitHub日志中报告的行为,定义出正常行为的基线,让未来的异常行为检测更加容易。
7. 自动化GitHub日志监视
你会想要持续监视GitHub行为以确保公司源代码安全,保证外部人没有渗透你的代码库。写脚本来自动化这一工作,或者找个预置了自动化的解决方案都可以。
软件代码是公司最有价值资产之一。将GitHub纳入公司安全运营团队常规威胁追捕工作不仅仅可以保护该有价值资产,还可以保住公司的信誉和竞争优势。