博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux 应用市场易受RCE和供应链攻击,多个0day未修复
阅读量:4113 次
发布时间:2019-05-25

本文共 4473 字,大约阅读时间需要 14 分钟。

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

编译:奇安信代码卫士

专栏·供应链安全

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

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

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

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

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

推荐阅读

原文链接

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

题图:Pixabay License

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

奇安信代码卫士 (codesafe)

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

产品线。

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

你可能感兴趣的文章
机器学习-----K近邻算法
查看>>
HBASE安装和简单测试
查看>>
关于程序员的59条搞笑但却真实无比的编程语录
查看>>
tomcat 使用心得(问题)-eclipse 启动tomcat 后 浏览器访问404 --eclipse复制工程显示原来的工程名
查看>>
搞笑--一篇有趣的文章编译自一篇西班牙博客。有一位美丽的公主,被关押在一个城堡中最高的塔上,一条凶恶的巨龙看守着她,需要有一位勇士营救她…
查看>>
非常不错 Hadoop 的HDFS (Hadoop集群(第8期)_HDFS初探之旅)
查看>>
Tomcat启动错误,端口占用
查看>>
安卓模拟器请求本地资源,不修改hosts
查看>>
laravel 修改api返回默认的异常处理
查看>>
高德坐标转换百度坐标 javascript
查看>>
tp5封装通用的修改某列值
查看>>
laravel控制器与模型名称不统一
查看>>
vue登录拦截
查看>>
npm配置淘宝镜像仓库以及electron镜像
查看>>
linux设置开机自启动脚本的最佳方式
查看>>
VUE SPA 单页面应用 微信oauth网页授权
查看>>
phpstorm 集成 xdebug 进行调试
查看>>
npm和node升级的正确方式
查看>>
laravel事务
查看>>
springcloud 连续请求 500
查看>>