TeamViewer RPM repo为恶意软件包打开了大门

三个月前,我发现在Linux上的TeamViewer RPM自动更新的一个安全漏洞。该漏洞允许攻击-在中间人(AITM)颠覆安装和使用根权限执行任意软件的TeamViewer RPM包存储库。

第一件事,第一:的TeamViewer遵循最佳做法和库的元数yabo亚博体育下载据和软件包使用加密签名(GPG)。这些措施应该阻止任何人从任何存储库或任何包装的篡改。然而,它假定系统的TeamViewer的公共GPG密钥的副本。

不幸的是,作出的TeamViewer它如何分配它的GPG公钥的错误。这个错误让一个AITM时库更新,安装包和软件包更新用其自身的公钥。该漏洞甚至会提示用户接受一个新的关键,如果系统以前信任的的TeamViewer RPM存储不同的密钥。

的TeamViewer分布在其网站上的RPM软件包。要安装的TeamViewer,用户会下载这个包,通过安全连接。用户会认为它是安全的,安装的东西,来自于官方网站。的TeamViewer迹象所有RPM包,其GPG密钥。这可以被用来加密验证该包确实是由创建的TeamViewer。该包不是来自在这一点上已知的RPM库,虽然。典型的安装工具(GNOME软件,KDE发现,DNF,或YUM)不上侧装载包执行GPG-检查。

RPM包将TeamViewer和一个新的RPM存储库配置文件安装到系统中。存储库配置文件使典型的包管理和更新工具能够在系统的其余部分更新时自动从TeamViewer提取更新。然而,TeamViewer在RPM包中没有包含它的公共GPG密钥的副本。存储库配置文件包含以下选项:yabo亚博体育下载

gpgcheck = 1 gpgkey = HTTP://linux.teamviewer.com/pubkey/currentkey.asc baseURL时= HTTP://linux.teamviewer.com/yum/stable/main/binary-$basearch/

gpgcheck选择OPTS-中GPG从存储库下载任何包检查。该gpgkey选项告诉系统的按需检索所提供的地址GPG密钥。该GPG检索地址不使用加密和受ATIM操作。该选项还告诉系统尝试获取来自该地址更新的关键,如果它运行到在未来的关键问题(例如不匹配)。

该配置文件还缺少repo_gpgcheck选项。如果没有这个选项设置,仓库本身的完整性,不会进行验证。该库本身也通过还受到操纵ATIM未加密的连接访问。

这些弱点的结合大大简化了有效的开发。AITM可以修改包并对存储库进行任意更改。已安装的存储库配置文件要求对包进行签名。由于攻击者还控制密钥更新地址,所以他们可以简单地替换自己的密钥。

更新系统会提示用户信任任何新的GPG密钥。在这一点上,用户可以暂停升级过程并尝试手动验证他们是否带有关键是确实的TeamViewer的可信钥匙。不幸的是,用户更可能选择阻力最小的路径,并且只接受新密钥,以继续进行更新。

系统更新与全根系权限运行。该漏洞使攻击者具有完全的系统权限执行和持续安装软件的能力。被攻击的系统必须充分和无可挽回受损认为此漏洞已被利用了。

该RPM的TeamViewer库已经提供了HTTPS。用户可以手动修改使用HTTPS而不是HTTP库的配置文件。之后我做的TeamViewer意识到这个问题,它提供的更新,使HTTPS新的默认。这也使失踪repo_gpgcheck选项。

的TeamViewer固定版本本文中讨论的安全漏洞15.11.6发布。它在发布更新日志中没有提到修复。修复程序将在升级时自动部署,除非您已手动修改/etc/yum.repos.d/teamviewer.repo安装后文件。

我汇报了的TeamViewer版本15.8.3这个安全漏洞。的TeamViewer很快承认了问题,但它采取了该公司两年半一个月来修复它。所需的修复是微不足道的,但对15.9.5版本的更新日志(发布)建议的TeamViewer有一些其他的问题,它的RPM签名。

我没有证据表明这在野外被利用过。该漏洞仅影响TeamViewer RPM存储库,并不影响其APT包或存储库。Debian和它的衍生版本(比如Ubuntu)使用APT. Fedora、CentOS、OpenSUSE,而其他版本使用RPM。

为了避免这种疏忽影响其他项目,使用RPM存储库的软件更新工具应该引入额外的安全检查。为了这个目的,我已经发送了DNF的一个补丁,增加了当GPG密钥通过HTTP检索警告。