Slack 承认泄露了三个月的 PlatoBlockchain 数据智能哈希密码。 垂直搜索。 人工智能。

Slack 承认泄露散列密码三个月

流行的协作工具 Slack(不要与世界上运行时间最长的 Linux 发行版 Slackware 的昵称混淆)刚刚遇到了网络安全问题。

根据一篇名为 关于 Slack 密码重置的通知,该公司承认它无意中过度共享个人数据 “当用户为其工作区创建或撤销共享邀请链接时。”

从 2022 年 04 月 17 日到 2022 年 07 月 17 日(我们假设两个日期都包括在内),Slack 表示发送给此类邀请收件人的数据包括……

……等等……

...的 发件人的哈希密码.

出了什么问题?

Slack 的安全公告并没有很清楚地解释违规行为,只是说 “[t]他的散列密码对任何 Slack 客户都是不可见的; 发现它需要主动监控来自 Slack 服务器的加密网络流量。”

我们猜测这翻译如下:

“大多数收件人不会注意到他们收到的数据包含任何散列密码信息,因为这些信息虽然包含在发送的网络数据包中,但从未故意向他们显示。 而且由于数据是通过 TLS 连接发送的,因此窃听者将无法在此过程中嗅出它,因为它在到达连接的另一端之前不会被解密。”

这是个好消息。

但网络数据包通常包含收件人通常从未使用或看到的数据。

HTTP 标头就是一个很好的例子,因为它们是对您的浏览器的说明,而不是在您正在查看的网页中显示的数据。

无论如何,与用户无关或不可见的数据通常最终都会出现在日志中,尤其是在防火墙日志中,它可以被无限期地保存。

这就是坏消息。

盐、哈希和拉伸…

根据 Slack 的说法,泄露的数据不仅仅是 哈希,但 盐的 同样,这意味着在应用散列函数之前,首先将每个用户的密码与该用户唯一的随机数据混合在一起。

哈希本质上是“不可逆”的数学函数,在一个方向上很容易计算,但在另一个方向上则不然。

例如,很容易计算:

  SHA256("DUCK") = 7FB376..DEAD4B3AF008

但从 7FB376..DEAD4B3AF008DUCK 是工作 前锋 从字典中每个可能的单词中,看看是否有任何一个与您尝试匹配的值相匹配:

  SHA256("AARDVARK") = 5A9394..467731D0526A [X] SHA256("AARON") = C4DDDE..12E4CFE7B4FD [X] SHA256("ABACUS") = BEDDD8..1FE4DE25AAD7 [X]。 . . 3400 跳过 SHA256("BABBLE") = 70E837..CEAD4B1FA777 [X] SHA256("BADGER") = 946D0D..7B3073C1C094 [X] SHA256("BAGPIPE") = 359DBE..BE193FCCB111 [X]。 . . 3200 跳过 SHA256("CABAL") = D78CF4..85BE02967565 [X] SHA256("CACHE") = C118F9..22F3269E7B32 [X] SHA256("CAGOULE") = 5EA530..5A26C5B56DCF [X] 。 . . 5400 跳过 SHA256("DAB") = BBCC8E..E8B98CAB5128 [X] SHA256("DAFFODIL") = 75121D..D6401AB24A98 [X] SHA256("DANGER") = 0BD727..4C86037BB065 [X] 。 . . 3500 跳过 SHA256("DUCK") =  7FB376..DEAD4B3AF008 [找到!]

并且通过包含每个用户的盐,它不需要保密,只对每个用户唯一,您可以确保即使两个用户选择相同的密码,他们最终也不会得到相同的密码哈希。

你可以在这里看到加盐的效果,当我们对这个词进行哈希处理时 DUCK 具有三个不同的前缀:

  SHA256("RANDOM1-DUCK") = E355DB..349E669BB9A2 SHA256("RANDOM2-DUCK") = 13D538..FEA0DC6DBB5C <-- 仅更改一个输入字节会产生截然不同的哈希 SHA256("ARXXQ3H-DUCK") = 52AD92。 .544208A19449

这也意味着攻击者无法创建预先计算的可能哈希列表,或创建部分哈希计算表,称为 彩虹表,可以加速哈希检查。 (他们需要一个全新的哈希表,或一组独特的彩虹表,用于每种可能的盐。)

换句话说,不能轻易破解散列和加盐密码以恢复原始输入,尤其是在原始密码复杂且随机选择的情况下。

Slack 没有说的是他们是否会 拉伸 密码也散列,如果是,如何。

伸展 是一个行话术语,表示一遍又一遍地重复密码散列过程,例如 100,000 次,以延长针对已知密码散列尝试一堆字典单词所需的时间。

如果将 100,000 个字典单词通过简单的盐和哈希处理需要一秒钟,那么知道密码哈希的攻击者可以每分钟尝试 6 万个不同的字典单词和派生词,或者每三个小时进行超过 XNUMX 亿次猜测.

另一方面,如果盐和哈希计算被延长到每次花费一秒钟,那么当您尝试登录时额外的一秒钟延迟对您来说几乎不会或根本没有烦恼……

......但会将攻击者减少到每小时仅 3600 次尝试,从而使他们获得足够时间猜测除了最明显的密码之外的任何内容的可能性大大降低。

几种备受推崇的盐哈希和拉伸算法是已知的,特别是 PBKDF2, bcrypt, scryptArgon2,所有这些都可以调整以增加尝试个人密码猜测所需的时间,以便 降低生存能力 所谓的字典和蛮力攻击。

A 字典攻击 意味着您只尝试可能的密码,例如您能想到的每个单词 aardvarkzymurgy,然后放弃。 一个 蛮力攻击 意味着尝试所有可能的输入,即使是奇怪和不可发音的输入,来自 AAA..AAAAZZZ..ZZZZ (或来自 0000..000000FFFF..FFFFFF 如果您以十六进制逐字节的方式思考)。

怎么办呢?

松弛说关于 1 名用户中有 200 名 (0.5%,大概基于在危险期间生成了多少共享邀请链接的记录),并且它将迫使这些用户重置他们的密码。

一些进一步的建议:

  • 如果您是 Slack 用户,即使公司没有通知您这样做,您也可以重置密码。 当一家公司承认其密码数据库不小心泄露了哈希值时,您不妨假设您的密码数据库受到了影响,即使该公司认为没有受到影响。一旦您更改了密码,旧的哈希值对攻击者来说就变得毫无用处。
  • 如果您不使用密码管理器,请考虑购买一个。 密码管理器有助于 选择正确的密码,从而确保您的密码在此类事件中可能被破解的密码列表中非常非常低。 攻击者通常无法进行真正的蛮力攻击,因为有太多可能的密码可供尝试。 因此,他们首先尝试最有可能的密码,例如单词或明显的单词和数字组合,随着攻击的进行,密码会变得更长、更复杂。 密码管理器可以像记住猫的名字一样轻松记住 20 个字符的随机密码。
  • 如果可以,请打开 2FA。 2FA,或 双因素认证, 意味着您不仅需要密码才能登录,还需要一个每次更改的一次性密码。 这些代码通常发送到您的手机(或由您的手机生成),并且每个代码仅在几分钟内有效。 这意味着,即使网络骗子确实破解了您的密码,他们也不足以让他们接管您的帐户。
  • 自己处理密码时,请选择有信誉的盐哈希和拉伸算法。. 万一您的密码数据库遭到破坏,您将能够向您的客户提供您所使用的算法和安全设置的准确详细信息。 这将帮助消息灵通的用户自己判断他们被盗的哈希值在迄今为止攻击者可用的时间内被破解的可能性有多大。

时间戳记:

更多来自 裸体安全