一些开发人员使用最流行的有关自动化软件的构建和测试工具还没有在设计中考虑到安全性,这个情况相当于打开大门让攻击者破坏企业网络。
这些所谓的持续集成(CI)工具,使开发人员能够在一个中央存储库中更改代码的时候自动创造软件的构建。创造这些软件的构建,是用来做质量控制的,并且是在预定义规则的基础上,在持续集成的从机上做出的一个与持续集成主服务器的协调。
如果黑客设法访问持续集成的主服务器,他们就可以窃取专有源代码,也将有能力在所有机器上执行命令,像持续集成的从动装置、安全研究者和渗透测试器一样运转。尼基尔·米塔尔周五在阿姆斯特丹的黑客欧洲安全会议上表示: “这种访问可以用于横向移动以访问更多的机器”。
事实上,米塔尔说,到目前为止他从来没有见过这样一个渗透测试,在这个测试中未经授权的访问持续集成工具并不会影响整个网络域的管理权限。
这是因为大多数的持续集成工具是不安全的默认配置,并且特定的用户角色允许PowerShell命令和带有系统权限的脚本的执行。域管理员的标记可以在一个持续集成从计上的运行过程中被找到的机率是很高的。
米塔尔测试了三种源代码开放的持续集成工具,分别被称为詹金斯、CruiseControl和Go,还测试了两个被叫做TeamCity 和Hudson的专有的持续集成工具。他发现默认的不安全配置和可被利用的功能存在于每一个持续集成工具中。
他演示了一些攻击可能导致在底层的计算机上执行命令,反向壳体的打开,和敏感数据被盗。其中这些敏感数据包括数据库和Git凭据,SSH密钥和一些其他数据。
研究人员发现,很多持续集成服务器的配置管理实例是直接从互联网访问的,甚至不要求身份验证。
他说在十大软件开发公司以外,世界上至少有5例此类服务暴露出来。
观察所有被测试的持续集成工具所出现的常见问题,米塔尔发现:在默认配置下的最低安全性缺少有强力保护的安全控件、由非管理用户来运行操作系统的命令和脚本的能力、如果代理人来运行主服务器移除各项安全防范措施的能力、不安全的凭证SSH密钥和未经验证的远程访问。
为了保护这些系统,研究人员建议,没有构建执行员应该永远在主持续集成服务器上运行。这样做的话限制了用户权限,他们可以配置生成步骤、固定管理面板,而不是暴露持续集成工具到互联网上,除非绝对必要,也可以不给匿名用户提供读取权限,并且防止用户使用自己的用户名作为密码。
文章原文链接:https://www.anquanke.com/post/id/82926