S3 Ep105:WONTFIX! “不是安全漏洞”的 MS Office 加密失败 [音频 + 文本]

源节点: 1726750

“不符合安全服务标准”是什么意思?

单击并拖动下面的声波以跳到任何一点。你也可以 直接听 在 Soundcloud 上。

与道格·阿莫斯和保罗·达克林。 前奏和后奏音乐 伊迪丝·马奇.

你可以听我们的 的SoundCloud, 苹果播客, Google播客, Spotify, 以及任何可以找到好的播客的地方。 或者只是放下 我们的 RSS 提要的 URL 进入你最喜欢的播客。


阅读成绩单

道格。  令人叹为观止的漏洞、可解密的加密和大量补丁。

所有这些都在 Naked Security 播客上。

[音乐调制解调器]

欢迎大家收听播客。

我是道格·阿莫斯; 他是保罗·达克林。

保罗,先生,你今天好吗?


鸭。  道格……我知道,因为你提前告诉我,接下来会发生什么 科技史上的本周,太棒了!


道格。  OK!

本周,18 年 1958 月 XNUMX 日,一台示波器和一台模拟风阻的计算机与定制的铝制控制器配对,游戏 两人网球 诞生了。

在布鲁克海文国家实验室为期三天的展览中展示,两人网球非常受欢迎,尤其是在高中生中。

如果你正在听这个,你必须去维基百科查找“Tennis for Two”。

那里有一段视频,介绍的是 1958 年建造的东西……

…我想你会同意我的观点,保罗,这太不可思议了。


鸭。  我会*喜欢*今天玩!

而且,就像 Asteroids and Battle Zone,以及 1980 年代那些特别令人难忘的游戏……

…因为它是示波器:矢量图形!

没有像素化,没有差异,取决于一条线是 90 度、30 度还是 45 度。

还有来自控制器中继电器的声音反馈……太棒了!

令人难以置信的是,这是 1958 年。

回到以前 科技史上的本周,它正处于晶体管革命的风口浪尖。

显然,计算的一半是热电子阀(真空管)和继电器的混合物。

显示电路都是基于晶体管的,道格

因此,它融合了所有技术:继电器、阀门和晶体管,都在一款开创性的视频游戏中。


道格。  很酷。

在维基百科上查看: 两人网球.

现在让我们继续我们的第一个故事。

保罗,我知道你很擅长写一首伟大的诗……

…我写了一首很短的诗来介绍这个第一个故事,如果你愿意的话。


鸭。  那么这将是两条线,是吗? [笑]


道格。  它有点像这样。

适用于 Mac 的缩放/不获取 劫持.

[很长的沉默]

完诗。


鸭。  哦,对不起!

我以为这就是标题,你现在要写这首诗了。


道格。  所以,就是这首诗。


鸭。  确定。

[没有情感]可爱的,道格。


道格。  [讽刺]谢谢。


鸭。  押韵很壮观!

但并非所有诗歌都必须押韵……


道格。  确实如此。


鸭。  我们就叫它自由诗吧?


道格。  好的,请。


鸭。  不幸的是,这是 Zoom for Mac 的免费后门。

[感到内疚] 对不起,这不是一个很好的转场,道格。

[笑] 你踩着别人的地盘,你经常做不到……


道格。  不,很好!

这周我在尝试诗歌; 你正在尝试segues。

我们必须时不时地走出我们的舒适区。


鸭。  我假设这是要在最终构建完成时编译出来的代码,但不小心被留在了里面。

它仅适用于 Zoom for Mac 版本,并且已被修补,因此请确保您是最新的。

基本上,在某些情况下,当视频流启动或相机被应用程序本身激活时,它会不经意地认为您可能想要调试程序。

因为,嘿,也许你是一个开发者! [笑]

显然,这不应该发生在发布版本中。

这意味着在本地网络接口上有一个 TCP 调试端口处于打开状态。

这意味着任何可以将数据包传递到该端口的人,可能是任何其他本地连接的用户,所以它不需要是管理员,甚至不需要你……甚至是访客用户,这就足够了。

因此,在您的计算机上安装了某种代理恶意软件的攻击者可以从外部接收数据包并将其注入本地接口,基本上可以向程序的内部发出命令。

调试接口允许的典型事情包括:转储一些内存; 提取秘密; 改变程序的行为; 无需通过通常的界面即可调整配置设置,因此用户看不到它; 在不告诉任何人的情况下捕获所有音频,不弹出录音警告; 所有那种东西。

好消息是 Zoom 自己找到了它,而且他们很快就修复了它。

但这是一个很好的提醒,正如我们经常说的那样,[笑]“杯子和嘴唇之间有很多滑倒。”


道格。  好的,非常好。

让我们留在补丁火车上,然后驶入下一站。

而这个故事……也许最近的补丁星期二这个故事中最有趣的部分是 微软*没有*包括什么?


鸭。  不幸的是,每个人都可能期待这些补丁——我们在最近的播客中推测,“嗯,看起来微软会让我们再等一周,直到补丁星期二,而不是带外”提前发布”是最近记忆中的那两个交易所零日。

什么被称为 E00F,或 交易所双零日漏洞 用我的术语来说,或者 代理非Shell 因为它在 Twittersphere 中可能有点令人困惑。

所以这就是本月补丁星期二的重头戏:这两个错误并没有得到修复。

所以我们不知道什么时候会发生。

您需要确保已应用任何缓解措施。

正如我认为我们之前所说的那样,Microsoft 不断发现他们之前提出的缓解措施......好吧,也许他们还不够好,他们不断改变调子并调整故事。

所以,如果你有疑问,你可以回到nakedsecurity.sophos.com,搜索短语 代理非Shell (一个字),然后去阅读我们要说的内容。

并且您还可以链接到最新版本的微软补救措施……

......因为,在补丁星期二的所有内容中,这是最有趣的,正如你所说:因为它不存在。


道格。  好的,现在让我们换档 非常令人沮丧的故事.

对于一家网络安全如此糟糕以至于他们甚至没有注意到自己被破坏的大公司来说,这是一个耳光!


鸭。  是的,这是一个大多数人都知道的品牌 SHEIN(“she-in”),写成一个单词,全部大写。 (在违规发生时,该公司被称为 Zoetop。)

它们就是所谓的“快时尚”。

你知道,他们把它堆得高高的,卖得很便宜,而且他们的设计从哪里来也不是没有争议的。

而且,作为在线零售商,您可能会期望他们掌握在线零售网络安全细节。

但是,正如你所说,他们没有!

美国纽约州总检察长办公室决定,它对作为此次违规行为受害者之一的纽约居民所受到的对待方式感到不满。

所以他们对这家公司采取了法律行动……这绝对是一连串的失误、错误和最终的掩盖——总之,道格拉斯,不诚实。

他们有这个他们没有注意到的违规行为。

至少在过去,这种情况过去常常令人失望:公司不会意识到他们被破坏了,直到信用卡处理商或银行联系他们并说:“你知道吗,我们有很多本月客户对欺诈的投诉。”

“当我们回顾他们所谓的 CPP 时, 共同购买点,每个受害者似乎都向其购买过东西的唯一一个商人就是你。 我们认为泄漏来自你。”

在这种情况下,情况更糟。

显然,另一个支付处理商走过来说:“哦,顺便说一下,我们发现了一整批信用卡号出售,是从你们那里偷来的。”

因此,他们有明确的证据表明存在大量违规或一点一点的违规。


道格。  这么说来,这家公司知道了,肯定是赶紧去整顿的吧?


鸭。  好吧,这取决于你如何…… [笑] 我不应该笑,道格,一如既往。

这取决于您所说的“纠正”是什么意思。


道格。  [笑]哦,天哪!


鸭。  因此,他们似乎*确实*处理了这个问题……事实上,他们确实很好地掩盖了其中的某些部分。

显然。

似乎他们突然决定,“糟糕,我们最好符合 PCI DSS”。

显然他们不是,因为他们显然一直在保留调试日志,其中包含失败交易的信用卡详细信息……所有你不应该写入磁盘的东西,他们正在写入。

然后他们意识到这已经发生了,但他们无法在自己的网络中找到将这些数据放在哪里!

因此,显然他们知道他们不符合 PCI DSS。

他们着手使自己符合 PCI DSS,显然,这是他们在 2019 年实现的目标。(违规发生在 2018 年。)

但是当他们被告知他们必须接受审计时,法医调查......

…根据纽约总检察长的说法,他们是故意妨碍调查员的。

他们基本上允许调查人员在*修复、焊接、抛光后*看到系统,然后他们说,“哦,不,你看不到备份”,这对我来说听起来很调皮.


道格。  嗯。


鸭。  他们向客户披露违规行为的方式也引起了纽约州的强烈不满。

特别是,很明显,39,000,000 名用户的详细信息以某种方式被窃取,包括非常弱的散列密码:两位数的盐和一轮 MD5。

1998年还不够好,更别说2018年了!

所以他们知道这么多用户有问题,但显然他们只是联系了这6,000,000万实际使用过他们的账户并下过订单的用户。

然后他们说,“好吧,我们至少联系了所有这些人。”

*然后*事实证明,他们实际上并没有真正联系到所有 6,000,000 亿用户!

他们刚刚联系了 XNUMX 万碰巧住在加拿大、美国或欧洲的人。

所以,如果你来自世界上任何其他地方,那就倒霉了!

正如你可以想象的那样,当局和监管机构对此并不满意。

而且,我必须承认……令我惊讶的是,道格,他们被罚款 1.9 万美元。

哪一个,对于这么大的公司……


道格。  没错!


鸭。  ......并犯了如此严重的错误,然后对所发生的事情不完全体面和诚实,并被纽约总检察长斥责谎报违规行为?

我有点想象他们可能会遭受更严重的命运。

也许甚至包括一些不能通过拿出一些钱来偿还的东西。

哦,他们做的另一件事是,当很明显有些用户的密码存在风险时……因为它们是两位数的盐,所以它们很容易被破解,这意味着你可以构建 100 个预先计算的字典…


道格。  这很常见吗?

只是一个两位数的盐似乎真的很低!


鸭。  不,您通常需要 128 位(16 字节),甚至 32 字节。

粗略地说,无论如何它对破解速度没有显着影响,因为(取决于散列的块大小)你只是在混合中添加了两个额外的数字。

因此,即使哈希的实际计算需要更长的时间。

早在 2016 年,人们使用运行“hashcat”程序的 200 个 GPU 的计算机,我认为每秒可以执行 5 亿次 MDXNUMX。

当年! (这个数量现在大约高出五到十倍。)

非常非常可破解。

但与其实际联系人们并说,“你的密码有风险,因为我们泄露了哈希值,而且它不是一个很好的密码,你应该改变它”,[笑声]他们只是说......

......他们是非常狡猾的话,不是吗?


道格。  “您的密码安全级别较低,可能存在风险。 请更改您的登录密码。”

然后他们将其更改为:“您的密码已超过 365 天未更新。 为了您的安全,请立即更新。”


鸭。  是的,“您的密码安全级别低……”


道格。  “因为我们!”


鸭。  这不只是光顾,是吗?

在我看来,那是在或超过边界归咎于受害者。

无论如何,在我看来,这对那些不想做正确事情的公司来说并不是一个非常强烈的激励。


道格。  好的,请在评论中发出声音,我们想听听您的想法!

那篇文章叫做: 时尚品牌 SHEIN 因谎报数据泄露被罚款 1.9 万美元.

以及另一个令人沮丧的故事……

..,另一天,另一个关于处理不受信任的输入的警示故事!


鸭。  啊,我知道那会是什么,道格。

这就是 Apache 公共文本 错误,不是吗?


道格。  它是!


鸭。  需要明确的是,这不是 Apache Web 服务器。

Apache 是一个拥有大量产品和免费工具的软件基金会……它们确实非常有用,而且它们是开源的,而且它们很棒。

但是我们已经在他们生态系统的 Java 部分(Apache Web 服务器 httpd 不是用 Java 编写的,所以让我们暂时忽略它——不要将 Apache 与 Apache Web Server 混为一谈)……

…在去年,我们在 Apache 的 Java 库中遇到了三个类似的问题。

我们有 臭名昭著 Log4Shell 错误 在所谓的 Log4J(Java 日志记录)库中。

然后我们有一个类似的错误,它是什么?... Apache 公共配置,这是一个用于管理各种配置文件的工具包,比如 INI 文件和 XML 文件,所有这些都以标准化的方式进行。

现在在一个更低级别的库中,称为 Apache 公共文本.

Java中的错误通常被称为“字符串插值”。

其他语言的程序员……如果你使用 PowerShell 或 Bash 之类的东西,你会知道它是“字符串替换”。

在这里,您可以神奇地将充满字符的句子变成一种小程序。

如果你曾经使用过 Bash shell,你就会知道,如果你输入命令 echo USER,它将回显或打印出字符串 USER 你会在屏幕上看到 USER。

但是如果你运行命令 echo $USER, 那么这并不意味着在 USER 后面回显一个美元符号。

它的意思是,“用当前登录用户的名字替换那个神奇的字符串,然后打印出来。”

所以在我的电脑上,如果你 echo USER, 你得到 USER,但是如果你 echo $USER,你明白了 duck 代替。

并且一些 Java 字符串替换比这走得更远、远得多...... 修复 Log4Shell 在圣诞节 2021 会记得!

您可以将各种聪明的小程序嵌入到字符串中,然后使用此字符串处理库进行处理。

所以有一个显而易见的:读取用户名,你把 ${env: (对于“阅读环境”) user}…你使用波浪形的括号。

这是美元符号; 波浪形括号; 一些魔法命令; 波浪形的括号是神奇的部分。

不幸的是,在这个库中,魔术命令的默认可用性不受控制,例如: ${url:...},它允许您欺骗字符串处理库在 Internet 上访问、下载某些内容并打印出它从该 Web 服务器返回的内容而不是字符串 ${url:...}.

所以虽然这不是完全的代码注入,因为它只是原始的 HTML,它仍然意味着你可以将各种垃圾和奇怪而奇妙的不受信任的东西放入人们的日志文件或他们的网页中。

${dns:...},这意味着您可以欺骗某人的服务器,这可能是网络内的业务逻辑服务器......

…您可以欺骗它对命名服务器进行 DNS 查找。

如果您拥有该域,作为骗子,那么您也拥有并操作与该域相关的 DNS 服务器。

那么,当 DNS 查询发生时,你猜怎么着?

该查找在您的服务器上终止,并可能帮助您绘制出某人业务网络的内部结构……不仅仅是他们的网络服务器,而是网络中更深层次的东西。

最后,也是最令人担忧的,至少在旧版本的 Java 中,有…… [笑] 你知道这里会发生什么,Doug!

命令 ${script:...}.

“嘿,让我为你提供一些 JavaScript 并为我运行它。”

你可能在想,“什么?! 等等,这是Java中的一个错误。 JavaScript 和它有什么关系?”

好吧,直到最近……请记住,许多企业仍在使用旧的、仍然受支持的 Java 开发工具包版本。

直到最近,Java……[笑](再说一遍,我不应该笑)……Java 开发工具包在其内部包含一个完整的、可用的 JavaScript 引擎,用 Java 编写。

现在,除了四个字母“Java”之外,Java 和 JavaScript 之间没有任何关系,但你可以把 ${script:javascript:...}并运行您选择的代码。

而且,令人讨厌的是,您可以在 Java 运行时中的 JavaScript 引擎中做的一件事就是告诉 JavaScript 引擎,“嘿,我想通过 Java 运行这个东西。”

因此,您可以让 Java 调用 *into* JavaScript,而 JavaScript 本质上可以调用 *out* 到 Java。

然后,从 Java 中,你可以说,“嘿,运行这个系统命令。”

如果你去 Naked Security 文章,你会看到我使用可疑命令 [COUGHS APOLOGETICALLY] 弹出计算,Doug!

一个 HP RPN 计算器,当然,因为它是我做的计算器弹出......


道格。  一定是的,是的!


鸭。  …这个是HP-10​​XNUMX。

所以虽然风险不如 和 Log4Shell 一样好,如果你使用这个库,你不能真正排除它。

我们在 Naked Security 文章中提供了一些关于如何确定您是否拥有 Commons Text 库的说明……而且您可能拥有它,就像许多人使用 Log4J 所做的那样,但没有意识到它,因为它可能是随应用程序一起提供的。

我们还有一些示例代码,您可以使用它们来测试您实施的任何缓解措施是否有效。


道格。  好的,请前往 Naked Security。

那篇文章叫做: Apache Commons Text 中的危险漏洞——又像 Log4Shell.

最后我们提出一个问题:“当加密的消息只是有点加密时会发生什么?”


鸭。  啊,我猜你指的是芬兰公司 WithSecure 的网络安全研究人员最近提交的官方错误报告……

…关于 Microsoft Office 中提供的内置加密,或者更准确地说,是一种称为 Office 365 消息加密或 OME 的功能。

在应用程序中内置这样的小功能非常方便。


道格。  是的,听起来简单又方便!


鸭。  是的,除了……哦,亲爱的!

似乎这一切的原因都归结为向后兼容性,Doug……

......微软希望这个功能可以一直使用到仍在使用 Office 2010 的人身上,Office XNUMX 内置了相当老式的解密能力。

基本上,这个加密文件的 OME 过程似乎使用了 AES,这是最新和最伟大的 NIST 标准化加密算法。

但它在错误的所谓加密模式下使用了 AES。

它使用所谓的欧洲央行,或 电子密码本 模式。

这就是您引用原始 AES 的简单方式。

AES 一次加密 16 个字节……顺便说一下,无论您使用 AES-16、AES-128 还是 AES-192,它都会加密 256 个字节。

不要混淆块大小和密钥大小——块大小,每次你在加密引擎上转动曲柄时被搅动和加密的字节数,总是 128 bis 或 16 字节。

无论如何,在电子密码本模式下,您只需输入 16 个字节的输入,在给定的加密密钥下转动曲柄一次,然后获取原始和未经处理的输出。

问题在于,每次您在文档中获得相同的输入时,都以相同的 16 字节边界对齐……

…您在输出中得到完全相同的数据。

因此,输入中的模式会在输出中显示出来,就像它们在 凯撒 密码或 维吉内尔 密码:

现在,这并不意味着您可以破解密码,因为您仍在处理一次 128 位宽的块。

电子密码本模式的问题正是因为它将模式从明文泄漏到密文中。

当您知道特定输入字符串以某种方式加密时,已知明文攻击是可能的,并且对于文档中的重复文本(如标题或公司名称),这些模式会得到反映。

尽管这被报告为微软的一个错误,但显然该公司已决定不修复它,因为它“不符合安全修复的标准”。

原因似乎是,“好吧,我们会对仍在使用 Office 2010 的人造成伤害。”


道格。  钱币!


鸭。  没错!


道格。  在那张纸条上,我们有本周关于这个故事的读者评论。

Naked Security Reader Bill 部分评论:

这让我想起了布莱切利公园密码破译员在二战期间使用的“婴儿床”。 纳粹经常以相同的结尾短语结束消息,因此密码破译者可以从这组加密字符的结尾中回溯,知道它们可能代表什么。 令人失望的是,80 年后,我们似乎在重蹈覆辙。


鸭。  80年!

是的,确实令人失望。

我的理解是盟军密码破解者可以使用的其他婴儿床,特别是纳粹加密文本,也处理了文件的*开头*。

我相信这是德国天气报告的事情……他们遵循了一种宗教格式,以确保他们准确地提供天气报告。

你可以想象,在一场涉及夜间空中轰炸的战争中,天气报告是非常重要的事情!

似乎它们遵循了一种非常非常严格的模式,有时可能被用作你可能称之为加密“松动器”的东西,或者你可以用来首先闯入的楔子。

正如比尔指出的那样……这正是为什么 AES 或任何密码在电子密码本模式下不能满足加密整个文档的原因!


道格。  好的,谢谢你把它寄过来,比尔。

如果您想提交有趣的故事、评论或问题,我们很乐意在播客上阅读。

您可以发送电子邮件至tips@sophos.com,您可以评论我们的任何一篇文章,或者您可以在社交媒体上联系我们:@nakedsecurity。

这就是我们今天的节目; 非常感谢您的聆听。

对于 Paul Ducklin,我是 Doug Aamoth,提醒您下次……


两个都。  保持安全!


时间戳记:

更多来自 裸体安全