查看原文
其他

Linux 应用市场易受RCE和供应链攻击,多个0day未修复

FABIAN BRÄUNLEIN 代码卫士 2022-04-06

 聚焦源代码安全,网罗国内外最新资讯!

编译:奇安信代码卫士


专栏·供应链安全

数字化时代,软件无处不在。软件如同社会中的“虚拟人”,已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为当今社会的根本性、基础性问题。


随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。近年来,针对软件供应链的安全攻击事件一直呈快速增长态势,造成的危害也越来越严重。


为此,我们推出“供应链安全”栏目。本栏目汇聚供应链安全资讯,分析供应链安全风险,提供缓解建议,为供应链安全保驾护航。


注:以往发布的部分供应链安全相关内容,请见文末“推荐阅读”部分。


本文作者说明了受 RCE 和供应链影响的 Linux 应用市场,全文编译如下。


概要


  • 基于 Pling 平台的 Linux 市场易受可蠕虫 XSS 漏洞影响,可能会引发供应链攻击

  • 原生的 PlingStore 应用程序受一个 RCE 漏洞影响;当该 app 运行时,任意网站均可触发该漏洞

  • 由于无法联系到Pling 团队本文中提到的多个漏洞均未修复,目的是告警用户

  • KDE Discover 和 Gnome Shell Extension 团队快速修复了我们报告的其它低危漏洞


KDE Discover


今年年初,我们分析了流行的桌面应用程序如何处理由用户提供的 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

PlingStore RCE


所有基于 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 Shell 扩展 XSS


作为 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 劫持该平台上的账户,而且任何可下载资产可能会被攻陷(最好在问题修复前,登出账户且不要使用这些网站)。






推荐阅读
谷歌Linux基金会等联合推出开源软件签名服务 sigstore,提振软件供应链安全
详解ThroughTek P2P 供应链漏洞对数百万物联网设备的安全新风险
在线阅读版:《2021中国软件供应链安全分析报告》全文
奇安信专家:近八成软件存开源漏洞 供应链需全生命周期安全防护
详细分析PHP源代码后门事件及其供应链安全启示




原文链接

https://positive.security/blog/hacking-linux-marketplaces


题图:Pixabay License



本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。



奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的

产品线。

    觉得不错,就点个 “在看” 或 "” 吧~



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存