有关MongoDB尚未解决的安全隐患是什么?在补丁可用之前,企业可以采取哪些措施以缓解这些威胁?
Matthew Pascucci:最近,网上有关MongoDB配置错误的攻击正在加剧。攻击者删除原始数据库并以备份件索要赎金,滥用这些MongoDB实例的身份验证和远程访问。
这些及其他MongoDB安全误配置和漏洞与补丁管理并不完全相关,较贴近配置管理领域。企业可采取措施来改善MongoDB的安全性,并保护数据库免受攻击。
这里的主要问题在于MongoDB的某些版本默认配置非常随意。在这种情况下,责任在于安装数据库软件的管理员,是因为他们没有恰当的管理造成的。
在我看来,默认情况下所有软件都应该被锁定,且应该仅在需要时启用某些功能。如果应用程序在默认情况下不执行此操作,并留有记录,那么责任归咎于管理员。由于较早版本的MongoDB的默认配置较随意,因此数据库管理员应该从验证一些事开始着手。
改善MongoDB安全性的第一步是确定运行数据库的服务器是否需要有任何入站连接。很多时候,这些数据库是远程安装的,需要远程管理员的访问。MongoDB的默认端口为27017,如果不是只绑定到127.0.0.1,并且防火墙没有被锁定,则攻击者能够远程访问数据库。
确保只打开了正确的端口,如无必要限制可以访问系统、并从互联网上删除所有访问的人员权限。另外,如果某些实例不得不通过互联网打开以降低可见性,考虑使用VPN连接的可能性。
其次,确保验证和运行数据库的用户身份有效。以前的一个问题是默认配置允许未经身份验证的用户通过互联网访问数据库。强烈建议企业采取某种基于角色的访问控制来限制特定用户无法访问的数据库部分。
此外,运行数据库的用户帐户不应对系统的其余部分拥有完整的管理员权限。将权限直接限制在应用程序中,可以抵御应用程序中可能出现的其他漏洞(如SQL注入)。
第三步是验证数据库中的数据在传输和存储过程中都被加密。有一种叫做WiredTiger的本地加密可以在特定的MongoDB版本中使用,有助于保护数据库中的数据。这不会有助于勒索软件攻击中发生的盗窃问题,但会让被盗数据被使用。如果企业需要远程访问数据库,则应通过TLS来实现以确保传输中的通信安全。
最后,日志记录和审计、漏洞扫描、配置和补丁管理都是很好的做法,可以缓解相关安全问题。如果没有对MongoDB实例或者真正的系统进行适当管理,可能会导致企业的安全风险升高,以致发生数据泄漏问题。