它们属于我们之中:在Windows Zoom中探索漏洞和恶意代码

谁将此“葡萄干”添加到Zoom中?


最近,人们经常听到以下言论:

“我们/我不使用Zoom进行机密对话”



但是,如果Zoom会话的隐私以外的其他人关心他设备上数据的完整性该怎么办?而且并非徒劳,因为事实证明,这是有原因的。不仅缩放会议数据受到威胁,而且会议参与者在其计算机上保存的所有内容的完整性和机密性也受到威胁。

因此,我花了两个晚上(总共约5到6个小时)来剖析Zoom for Windows(版本4.6.11(20559.0413))。我只从事静态分析,没有实时观察应用程序。但这对我来说足够了。本文介绍了我发现的所有内容。但是我敢肯定,这只是冰山一角。想象一下,有足够的时间和预算的安全分析师可以挖掘出什么…………我特意寻找了那些可用于向第三方泄露机密信息的漏洞(例如,Facebook上的信息泄漏)。

我进行了非常肤浅的研究,没有详细介绍。我是在业余时间这样做的,现在我不再打算这样做了。我设定了一个明确的目标-从安全性以及对Zoom应用程序中包含的软件是否支持的角度评估代码的质量(在使用大量第三方库时尤其必要)。

古老的32位应用程序


认真吗 但为什么?!从Windows 7开始,Microsoft增加了对64位应用程序的支持以及对64位处理器的各种安全性增强。这是11年前的2009年。Windows 7本身早已过时(自2020年1月14日起,不再支持此操作系统)。但是,没有,Zoom在2020年仍然只发布32位Windows应用程序。

zData.dll


zData.dll使用具有漏洞的组件。不推荐使用的OpenSSL 1.0.2库(日期为2018年3月27日)以其漏洞无法解决而闻名

自2019年12月以来,关于OpenSSL 1.0.2的工作已停止。它的开发人员是这样写的

“根据当前和将来的版本,OpenSSL项目做出了以下决定:

  • OpenSSL的下一版本将是3.0.0。
  • 直到2023-09-11(LTS)为止,将支持1.1.1版。
  • 不再支持1.0.2版。现在提供增强的付费支持。
  • 不再支持1.1.0、1.0.1、1.0.0和0.9.8版本。”

或者在这里



合并SQL语句


  • CWE-89:不正确地中和SQL命令的特殊元素(SQL注入)

在zData.dll中,后端用于在加密的SQLite数据库中存储各种会话和配置数据。在某些情况下,代码中的SQL语句似乎被简单地连接起来,如下所示:

示例1:



示例2:



根据+ =运算符的实现,zData.dll可能会创建SQL注入漏洞,从而可能导致信息泄露。或在Zoom最终用户设备上执行任意代码。

哦,对不起...但这是偶然的,这不是加密的SQLite数据库的密码解密的密钥吗?



实际上,我不确定:-)但是,数据库的加密原则上不会干扰对存储在其中的机密数据的访问。Zoom似乎正在使用SQLite数据库存储历史记录,日志,并可能还存储敏感数据,例如密码和/或加密密钥。我没有深入使用SQLite作为数据容器;我把这个乐趣留给了更多好奇的读者。

Zzhost.dll


缓冲区溢出威胁


在查看二进制导入表时,我遇到了对sprintf()的调用。但是您知道sprintf()是一个潜在的危险函数,如果您使用它,编译器会发出警告。这样的警告似乎并没有打扰Zoom开发人员。

  • CWE-120:复制缓冲区的内容而无需先检查输入数据的大小(在日志记录功能中)
  • CWE-676:使用潜在危险功能(sprintf)



若要成功利用此漏洞,必须控制源缓冲区的内容。我没有尝试自己做。但是,由于这是一个日志记录(即日志记录)功能,因此从理论上讲,攻击者可能会影响原始缓冲区的内容。再一次,我本人也没有检查这是否确实可行。但是,即使出现这样的机会并忽略有关使用功能的危险的警告这一事实也是非常糟糕的做法。开发人员!不要那样做!

zCrashReport.exe


保存Windows注册表项


Windows注册表包含非常重要的信息-特别是当我们通过具有特权权限的进程访问它时。

我发现了这一点:



``转储注册表项''对我来说似乎是一种恶意功能,因此我试图找出它是否真的保存了Windows注册表的项和值。是的,是的,我在代码中找到了相应的片段:



Crash Reporter中的屏幕截图


zCrashReport.dll为我们提供了以下功能:



在crashReport.exe中,Windows API函数用于捕获屏幕和窗口。



您是否认为Zoom将捕获的数据从屏幕发送到其服务器?如果是这样,则可以将其视为恶意代码。

空主机


有漏洞的组件


Airhost.exe使用libcurl 7.36.0(于2014年3月26日发布),发现了 52个漏洞。好吧,curl又包含libssh2,许多漏洞指出了




这些漏洞:幸运的是,这些漏洞并没有对Zoom用户特别构成威胁。但是,如果您根本不关心代码,为什么还要使用过时且易受攻击的库?使用最新版本比猜测是否发现下一个漏洞会影响您的应用程序容易,是吗?

硬键加密/解密


Airhost.exe使用该常数作为对称加密密钥:SHA256输出行“ 0123425234234fsdfsdr3242” 用于通过OpenSSL加密/解密AES-256。



并将“ 3423423432325249”行用作初始化向量IV。



漏洞zWebService.dll和tp.dll


zWebService.dll和tp.dll使用libcurl 7.55.1。即使此库不如libcurl 7.36.0(在airhost.exe中使用的库)一样旧,但仍有些过时。如果最终用户安全性对开发人员真正重要,则他们将检查以下漏洞列表



漏洞turbojpeg.dll


Turbojpeg.dll使用libjpeg-turbo 2.0.0(内部版本20190715)。以下是远程代码执行类turbojpeg / libjpeg-turbo 中的漏洞列表



下一步是什么?


在这一点上,我停止深入研究Windows版Zoom。对于那些想要继续的人,我很高兴通过接力棒:

Zoom 4.6.11(20559.0413)可执行文件的sha256校验和


All Articles