隐私管理在保持必要信息的安全和远离攻击者方面起着重要的作用,本文我们就将讨论什么是隐私以及如何安全地存储它们。
隐私管理之所以重要,是因为密码泄露可能导致严重的数据泄露,随着越来越多的工作数据被保存在云端,身份验证的安全就愈发重要了。
隐私管理在保持必要信息的安全和远离攻击者方面起着重要的作用,良好保密的隐私,如密码和其他身份验证凭证,在理想情况下允许正确的人员访问重要资产,并将组织受到攻击的可能性降至最低。然而,隐私也可能是一把双刃剑,尤其是当隐私并没有像组织愿意相信的那样隐藏得很好时。
隐私是什么?
在本文中,术语“隐私”涉及用于访问需要身份验证的系统的敏感信息,这包括登录凭证,如用户名、电子邮件地址和密码,以及访问令牌和私钥。SolarWinds的漏洞提供了一个很好的例子,说明了隐私是多么脆弱,因为攻击涉及使用弱密码。
密码强度
密码强度可以通过其长度和所使用字母的大小来衡量。使用这些值,我们可以计算暴力攻击所需的最大猜测数。理论上,最大猜测次数定义为xy, x表示字母中的字符数,y表示密码中使用的字母数,其结果将是成百上千亿种可能的组合。
然而,这种计算也有例外。当使用字典里的普通单词时,密码就更容易被猜出来了。一般来说,当密码从一个更丰富的字母中使用更多的随机字符时,它会变得更安全。此外,每次重复使用密码都会降低安全性。
破解给定长度的密码所需的最大暴力尝试次数
不幸的是,长而强的密码需要记住一长串随机字符,这对用户来说自然是一个挑战,特别是考虑到多个帐户时。
攻击者使用的密码字典的示例
即使用户记住了一个冗长的密码,到处使用它的倾向也会削弱它的强度。密码重用是另一个安全风险。在出现漏洞的情况下,重用的密码会危及其他服务,从而导致更大的影响。
虽然强大的密码仍然很重要,但我们不得不质疑,这些类型的隐私是否是我们唯一可靠的方式来保护访问关键任务资产和系统。密码验证方法是登录的唯一方法吗?
替代密码
幸运的是,有替代密码的方法。例如,使用非对称加密和私钥进行身份验证已经成为安全Shell (SSH)服务的标准,这极大地限制了隐私被暴力猜测的风险,并强制要求适当的隐私存储。
虽然这种方法仍然需要一个令牌来验证用户身份,但它对人类记忆的依赖要小得多。例如,我们还可以使用vault,它将存储凭证并提供生成隐私的工具。这些工具还可以防止创建弱密码和密码重用。
虽然它避免了使用独立密码的缺陷,但在集中式存储解决方案中保存隐私会带来所有凭证和密码在一次入侵中被破坏的风险,并强调了将此类存储视为vault的必要性。确保对这个vault的访问是至关重要的,强烈建议使用生物识别或多因素认证(MFA)授权作为额外的安全措施。
MFA本身显著降低了被盗的几率,即使账户的凭证已经暴露,因为它需要通过移动应用程序进行另一种身份验证。用户的手机和他们的隐私被暴露的概率显著降低。
如何处理隐私
到期的隐私
如果你一直使用电脑,你可能在一段时间后被迫更改密码。虽然有些人认为这是一种不便,但让隐私过期有一个很好的理由。隐私可以在一段时间后被破解,它们的有效期越长,一些攻击者就越有可能成功地找到方法窃取并泄漏数据。
隐私存储的类型
现在让我们来谈谈存储隐私的不同方式。正如我们前面提到的,隐私存储应该被当作虚拟vault来处理,因此也就安全了,因为破解它将允许攻击者访问密码和与它们相关的账户。
工作流程中必须相互通信的系统数量正在增加。它们必须安全地这样做,并且必须首先对来自其用户的每个请求进行身份验证。如果用户不想每次都输入凭证,或者仅仅记住凭证是不现实的,那么必须存储凭证。
有多种方式可以存储凭证:
- 明文:最不安全的类型,其中对文件的读访问将允许对系统的访问。
- 哈希:主要用于服务器存储隐私指纹的类型,防止入侵者获得明文密码。在这种方式中,研究人员强调在加密算法之上使用盐值或另一个哈希层,以使潜在的攻击者更难解密。
- Encoded:另一种形式的明文,例如base64编码的凭证,因为有不可读的字符。
- 加密:凭证使用另一个密码加密,减少了未经授权的泄漏的可能性和影响。如果不先知道另一个隐私,一个能看到加密文件的人将无法解密文件并获得所需的凭证。
从以上这四种类型中,很容易推断出哪一种是最有利和最安全的存储隐私。然而,除了这四种类型之外,当存储凭证时,组织还必须考虑其他可能影响其计划的因素。
其他需要考虑的申请
处理隐私存储的一种方法是使用一个外部应用程序,比如vault。Vault 是秘密访问私密信息的工具,可以帮你管理一些私密的信息,比如 API 密钥,密码,验证等等。Vault 提供一个统一的接口来访问所有隐私信息,同时提供严格的访问控制和记录详细的审计日志。vault的主要优势在于它以加密的形式存储隐私的方式,以及它能够从一个地方更改隐私,并在不更改代码的情况下将更改反映到多个应用程序。
但是,对vault的访问令牌必须存储在设备上或动态获取。在后一种情况中,通过MFA确认的动态访问令牌是最合适的。因此,MFA不是所有情况下的最佳选择,特别是对于高度自动化的系统。
明文加密的问题
并不是每个隐私存储应用程序在默认情况下都以加密形式存储凭证,文档应该验证存储的隐私是否加密,还应该检查它们,以防止利用错误配置问题。
在某些情况下,以明文存储隐私被认为是一个漏洞。一般来说,明文是一种不安全且糟糕的设计决策,应该重新考虑。我们后面关于DevOps和云问题的很多讨论也是围绕明文展开的。
Kubernetes Secrets存储的示例,默认存储未加密
高度信任
最后,即使隐私信息以加密的形式存储,组织仍然需要在其人员之间实现和维持一定程度的信任,这是因为某些人仍然需要知道或持有解密密钥。
各类组织都应知道,隐私必须只有少数人能接触到。这意味着只对有适当理由访问该存储或系统的用户或应用程序保持读取权限。对隐私进行加密会增加额外的安全性,攻击者不得不更加努力地破解凭证。
隐私传送
除了存储的隐私外,安全性对于必须配置和需要传输的服务也是必要的。需要强调的是,移动隐私信息是正常的,因此应该通过安全(即加密)通道进行说明和完成。
安全通道意味着使用默认安全的协议,例如SSH或HTTPS。使用基于纯文本的协议(如HTTP、SMTP、FTP)来传输隐私可以允许恶意攻击者拦截通信并利用泄漏的隐私。
应该提到的是,将隐私放入源代码管理(SCM)系统中也不是一个好主意,因为它给了不必要的更多的人访问权限。涉及公共存储库的案例给SCM增加了另一层危险。如果一个组织坚持使用SCM,他们应该使用加密隐私的工具(例如,git-secret),以防止将SCM用作供应链攻击的入口点的可能性。
隐私的影响
接下来将探讨在当今开发技术(即DevOps和云)的环境中使用不安全的隐私存储的含义。我们还简要描述了一个真实的场景,在这个场景中,攻击者在受感染设备中寻找凭证。
隐私和DevOps
今天,大多数人已经习惯于将开发和“本地”环境视为固有的安全性。例如以未加密的形式存储隐私、只设计在安全环境中运行的软件,以及默认情况下不加固安全特性。这为用户提供了额外的便利,因为它无需进行复杂的安全配置。然而,权衡的结果是,这些实践如何增加了发生安全事件的风险。我们已经看到了供应链攻击、VPN安全薄弱、VPN漏洞等的影响。
同样重要的是要注意,“本地”环境不再是本地的,因为我们看到越来越多的公司正在转向云计算。存储在使用硬件加密(HW)的设备上的明文隐私同时存储在连接到云的设备上。简而言之,无论是否在云中,以明文存储隐私都是不安全的。
举一个DevOps世界中的真实例子,Visual Studio Code直到最近才在其于2021年1月发布的版本1.5353中提供了对隐私存储的支持。在这次更新之前,没有官方的API可用来以更安全的方式存储隐私信息,因此,安全实现它是开发人员的责任。
一个以明文保存Twitter API隐私的扩展示例
在进行后续研究后,我们发现其他338个扩展也有同样的问题,明文存储隐私。这些第三方扩展包括对多个云服务提供商(csp)和SCM系统的绑定。
除了这些问题之外,攻击者关注的是凭证获取,这将使Visual Studio Code用户很容易成为此类攻击的目标。
隐私和云威胁
随着越来越多的公司开始采用云技术,攻击者正在不断发展他们的有效载荷,并对云服务凭证进行有针对性的搜索。重要的是要考虑如何通过使用不同的存储机制来增强安全性,特别是由于隐私信息通常以明文存储,因为用户认为拥有一个安全的环境是理所当然的。将隐私以明文形式暴露出来,会让攻击者更容易窃取它们。当在云中进行操作时,组织必须根据共享责任模型。即使在云中,他们使用的凭证的安全性仍然是他们的责任。
正如我们前面提到的,在所有参与保密工作的人员之间实现高度的信任也是必不可少的。云提供商总是引用共享责任模型,这尤其适用于解决用户错误配置的情况。这种共享责任的立场是必要的,因为没有软件是100%安全的。例如,之前的一篇博客文章介绍了攻击者在破坏一个实例后如何请求AWS元数据服务获取凭证或隐私信息。这突出了攻击者在破坏云实例以进一步攻击之后如何访问云实例上的凭证。
攻击后在AWS实例中获取凭证
此外,在一种更通用的方法中,CSP命令行工具在第一次配置时生成授权令牌,并将这些令牌以明文格式存储在文件中或作为系统变量。知道了这个功能,攻击者就可以开发恶意软件,在侵入一个实例后搜索这些凭证令牌。根据被盗凭证令牌的访问级别,攻击者可以继续进行攻击,并在内部传播更多的有效载荷。
获取多个CSP凭证
在分析中,一个行为引起了我们的注意,那就是攻击者是如何在攻击的不同点开始使用本机CSP工具,而不是开发自己的工具或使用攻击。在这种情况下,根据用户的配置,攻击者将具有与服务相同的授权。这种行为意味着他们正在学习本地工具的所有可能选项和参数,并滥用它们。图7显示了他们的脚本用本机工具文档注释了行,这使我们认为攻击者正在动态学习。在Lambda这样的内部环境中,本机工具的使用是预先授权的,因此如果攻击者成功地将工具上传到其中,他们将拥有与服务相同的权限。
攻击者使用本地工具从受害者那里获取进一步的数据,目的是横向传播
真实攻击场景
下面要讲的是一个真实的攻击场景,它强调了适当的隐私存储的重要性。我们已经看到攻击者在受感染的设备中寻找凭证,如果初始受感染的设备在其系统中存储了其他设备的凭证,则使用能够感染其他设备的恶意软件,不过前提是攻击者能够获得修改云服务的能力。
SSH凭证上的蠕虫行为示例
最近的一项调查还显示,攻击者正在适应最新的技术,并积极尝试利用基础设施作为代码(IaC)软件,如Ansible、Chef和SaltStack工具,以将其有效载荷分配给尽可能多的设备。
使用IaC工具感染管理下的基础设施
该视频展示了一个潜在的攻击者如何使用TeamTNT工具集的工具打破Docker容器。
保护隐私
到目前为止,组织必须认识到,隐私是如何在他们的把关角色中发挥更深层次的重要作用的。这就是为什么我们最好假设攻击者总是在寻找揭露这些隐私的方法,并做好相应的准备。
组织不应该假设存储在云中的数据已经免受风险的保护,要使用特定于云的安全解决方案来保护他们的云原生系统。
本文翻译自:
https://www.trendmicro.com/en_us/research/21/f/secure_secrets_managing_authentication_credentials.html