Linux 应用市场易受RCE和供应链攻击,多个0day未修复
编译:奇安信代码卫士
数字化时代,软件无处不在。软件如同社会中的“虚拟人”,已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为当今社会的根本性、基础性问题。
随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。近年来,针对软件供应链的安全攻击事件一直呈快速增长态势,造成的危害也越来越严重。
为此,我们推出“供应链安全”栏目。本栏目汇聚供应链安全资讯,分析供应链安全风险,提供缓解建议,为供应链安全保驾护航。
注:以往发布的部分供应链安全相关内容,请见文末“推荐阅读”部分。
基于 Pling 平台的 Linux 市场易受可蠕虫 XSS 漏洞影响,可能会引发供应链攻击
原生的 PlingStore 应用程序受一个 RCE 漏洞影响;当该 app 运行时,任意网站均可触发该漏洞
由于无法联系到Pling 团队本文中提到的多个漏洞均未修复,目的是告警用户
KDE Discover 和 Gnome Shell Extension 团队快速修复了我们报告的其它低危漏洞
今年年初,我们分析了流行的桌面应用程序如何处理由用户提供的 URI 并从多个URI 中找到多个代码执行漏洞。我检查的其中一个应用程序是 KDE Discover App Store,它以不安全的方式处理了不可信的 URI(CVE-2021-28117)。
在这个过程中我找到了其它 FOSS 市场中的多个其它严重漏洞。
截至目前,可能用于在基于 Pling 市场上发动供应链攻击的可蠕虫 XSS 以及可影响 PlingStore 应用程序用户的路过式 RCE 仍然是可利用的。
影响多个市场的可蠕虫 XSS
KDE Discover 从 https://store.kde.org 检索并展示数据。在创建自己的清单(listing)以测试 Discover 的 URI 处理时,我偶然发现设计上很像 XSS的字段:
虽然一个简单的XSS payload 不起作用,但足以先添加一个嵌入式框架然后在另一行添加一个恶意 JavaScript payload:
(在 HTML 代码部分添加 XSS payload)
(访问恶意清单,触发 XSS)
这个存储型 XSS 可用于修改活跃清单,或者在其它用户上下文中在 Pling 商店中发布新的清单,从而导致可蠕虫 XSS。除了典型的 XSS 危害外,还可使用执行如下两个步骤的 JavaScript payload 实施供应链攻击 XSS 蠕虫:
1、上传软件新(后门)版本
2、 将受害者清单的元数据更改为包含该恶意 payload
耐人寻味的是,KED Store 仅仅是基于 Pling 平台的众多商店之一,它们不仅共享这个漏洞,而且还共享用户账户和会话数据。
如下是互联且易受攻击的基于 Pling 的 FOSS App Store清单:
appimagehub.com
store.kde.org
gnome-look.org
xfce-look.org
pling.com
所有基于 Pling 的应用商店都在推广使用原生的 PlingStore app。该 app 是 Electron 应用程序,能够展示不同网站并支持点击一次的 app 轻松安装。
该 XSS 也可在 PlingStore 内触发,而且在和 Electron 沙箱绕过结合时可能提升至 RCE。
然而,由于 PlingStore 可安装其它应用程序,因此它具有在操作系统级别执行代码的内置机制。结果显示,当 PlingStore 在后台打开时,任意网站均可利用该机制运行任意原生代码。
设计上的 RCE
启动 PlingStore app 时,它还会启动 WebSocket 本地服务器 ocs-manager,监听来自 PlingStore app 的信息。ocs-manager 执行多个函数,PlingStore app 可调用这些函数来检索信息或触发多种操作。
组合如下三个函数调用,就可以执行任意代码:
1、调用 ItemHandler::getItem:从任意 URL 下载 AppImage 作为类型 bin
2、调用 ConfigHandler::getAppConfigInstallTypes,泄露完整的 bin 目录路径(默认在 home 目录,因此取决于用户名)
3、调用 SystemHandler::openUrl,参数 AppImage 路径(执行对AppImage 文件的特殊处理以执行文件而非通过默认应用程序启动)
在 PlingStore app 内触发 XSS 时,该 payload 能够建立与 WebSocket 本地服务器的连接并发送信息以执行任意原生代码(通过下载并执行 .AppImage 文件)。
从任意浏览器进行利用
浏览器不对 WebSocket 连接执行同源策略。因此,很有必要验证源服务器段或对 WebSocket 连接实现额外的认证。对于 ocs-manager 而言,事实并非如此,这意味着任意浏览器中的任意网站均可启动对 WebSocket 服务器的连接,而 ocs-manager 将愉快地接受发过来的任意命令。
利用演示视频如下:
当PlingStore 在后台运行时,通过任意浏览器访问恶意网站就会触发利用。该 PoC payload 下载 AppImage 文件启动 xmessage,其中自定义字符串为参数,以此演示任意代码执行。
遗憾的是,我无法通过任何联系地址和通信渠道(如电话或论坛帖子)联系到 Pling/OpenDesktop/hive01 GmbH 的任何人。因此我无法得到关于这些漏洞的证实或修复它们。我发布这篇文章的目的是和告警用户以及该平台的总体维护状况(实际上我还报告了另外一个漏洞,不过不会直接影响用户)。
时间线
2021-02-24:通过向contact@opendesktop.org发送邮件,首次披露
2021-02-26:创建了一条论坛帖子(现已被锁定),尝试联系所属公司/CEO,并向@goerke-partner.com 发送邮件
2021-03-03:邮件跟进
2021-03-03:向security@kde.org 披露问题,立即获得回复
2021-03-08:KDE Discover 漏洞补丁发布,向 Pling 团队联系人发送了其它问题
2021-03-10:KDE Discover 补丁和安全公告发布
2021-03-16:Pling邮件跟进
2021-04-12:Pling 邮件跟进并尝试通过聊天联系
2021-04-28:通过 KDE Discover 团队联系到 Pling 团队
2021-04-28:邮件发送给新的联系人,提到如果无法和团队获得联系则会公开漏洞
2021-05-27:跟进新联系人
2021-06-18:向所有之前联系过的人员宣布将公开漏洞
2021-06-22:漏洞公开
作为 Gnome 用户,我发现另外一个市场并未连接至 Plingiverse(https://extensions.gnome.org)。该扩展商店同时通过浏览器扩展(Chrome 和 Firefox)以及原生的 “connector” 应用程序提供原生集成。这次,来源已验证,阻止其它网站和原生连接器通信。
chrome.runtime.onMessageExternal.addListener(function (request, sender, sendResponse) {
if (sender.url.startsWith(EXTENSIONS_WEBSITE)) // EXTENSIONS_WEBSITE = "https://extensions.gnome.org/"
}
然而,通过 https://extensions.gnome.org 上的 XSS,可通过该检查收集信息、启用扩展或触发新扩展的安装。
将一个 javascript:URI 指定为 “Extension Homepage” 即可找到基础的 XSS(只需点击):
和基于 Pling 的应用商店不同,Gnome Extension 提交经过了审计。虽然这可能会提升质量并捕捉到恶意扩展,但也意味着已登录审计人员(可能拥有高权限)将会查看带有恶意 payload 的审计页面。除此之外,审计页面本身在提交之后会立即公开,链接可被发送给其它潜在受害者。
和 Pling XSS 类似,它可用于劫持用户/审计人员账户实施供应链攻击(为已发布扩展做后门),或者通过向 Gnome Shell Integration 浏览器扩展发送命令来直接攻击受害者计算机。
该漏洞已在2021年2月24日报告给 Gnome,且在24小时内修复。
应用市场位于两个世界的相交处:
1、用户提供的内容,多数通过web技术展现给用户
2、 管理并安装原生应用程序
虽然第1点被认为是高度不受信任的,且被严重沙箱化。但 App Store 集成创建了通向第2点的桥梁,第2点要求更高级别的信任。
本文说明的多个漏洞表明和这类市场相关联的额外风险。在这种环境下,即使是相对微小的漏洞(如来源检查缺失)都可能造成严重后果(易受攻击应用程序在后台运行,任意浏览器即可造成路过式 RCE)。这类应用程序的开发人员必须严格审计以确保安全性。
对于以上提到的 Pling 市场用户而言,建议:
不要运行 PlingStore Electron 应用程序(最好删除 AppImage),直至 RCE 被修复。
注意 appimagehub.com/store.kde.org/gnome-look.org/xfce-look.org/pling.com 上的任意清单均可通过 XSS 劫持该平台上的账户,而且任何可下载资产可能会被攻陷(最好在问题修复前,登出账户且不要使用这些网站)。
详解ThroughTek P2P 供应链漏洞对数百万物联网设备的安全新风险
在线阅读版:《2021中国软件供应链安全分析报告》全文
奇安信专家:近八成软件存开源漏洞 供应链需全生命周期安全防护
详细分析PHP源代码后门事件及其供应链安全启示
https://positive.security/blog/hacking-linux-marketplaces
题图:Pixabay License
本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的
产品线。