插件已将你黑掉

我刚重建了一个 Discourse 论坛,在浏览器中加载时,弹出了以下消息:

你被一个插件黑了!作者 w3shi(Hackerone)-S.Lakshmi Vignesh(RCE-POC)

我的天……这是怎么回事?我使用的插件之一被盗用了?

3 个赞

您是否使用了 migrate password 插件?或者 discoursehosting 仓库中的其他插件?

看起来这个论坛也受到了影响 Am I hacked? or not - Forum Management - Suggestions - DxO Forum

2 个赞

是的,它在列表中。也是 discoursehosting 中的唯一一个。

我记得它需要激活才能允许“旧”用户登录,对吗?

但现在的问题是安装是否被入侵,或者只是显示此消息。为安全起见,网站目前已关闭。

除了这个插件,以下是我正在使用的列表:

只需删除任何提及 discoursehosting 的内容

9 个赞

Google Translate of the French forum post:

A pseudo-security researcher retrieved an old Git repository for a plugin used by the forum and hijacked it to simply display this message.

The repository in question (GitHub - discoursehosting/discourse-migratepassword: A touch of security) has been inspected and no malicious code is present (it’s simply a proof of concept).

This repository had actually changed its URL (it is now available at GitHub - communiteq/discourse-migratepassword: Support migrated password hashes) and the user simply recreated the discoursehosting/discourse-migratepassword repository, which previously redirected to communiteq/discourse-migratepassword, to place unrelated code there. We were using the old URL, which is why we were affected.

如果这是真的,好吧……我已将插件的 URL 更改为 communiteq,目前正在重建。但我必须对此进行更多研究(因为我不是程序员,我无法 100% 确定)。

5 个赞

摘要

这是 Github 中一个名为“Repojacking”的漏洞利用类。

我们建议所有人检查他们的 Github 插件 URL,并将 discoursehosting 的每一个实例重命名为 communiteq

背景:

我们在 2019 年不得不将公司从 Discoursehosting 重命名为 Communiteq。
如果发生这种情况,Github 会自动将指向 Github 存储库的 URL 重定向到其新位置,直到有人创建同名的存储库。此时,新存储库将优先。

Github 过去会将此类存储库标记为“已停用”,并禁止创建同名存储库。

之前的漏洞利用在此进行了描述。显然,该修复程序已不再有效。

我们已提交 Github 滥用报告,并将尽一切可能尝试移除此存储库。

16 个赞

目前,被泄露的插件仅显示一条消息,并在 /tmp 中留下一个无害的文件。
所以还没有发生坏事——目前还没有。在重新构建之前更改插件 URL 很重要。

7 个赞

哇,这很容易让最终用户上当,这也是不使用 discourse.org 官方托管的主要缺点之一。

如果

angusmcleod (Angus McLeod) · GitHubmerefield (Robert) · GitHub

账户不复存在

那么第一个子路径就会暴露出来,因此我的 app.yml 中会有一个克隆命令供重建执行。

3 个赞

为了减轻对标准安装用户可能产生的影响,我们添加了代码来检测 github.com/discoursehosting/ 并中止任何重建/升级。

错误将显示为:

---
错误:配置文件 containers/app.yml 包含对受损 GitHub 组织:github.com/discoursehosting 的引用
请从您的配置文件中删除对此组织的任何引用。
有关更多信息,请参阅 https://meta.discourse.org/t/374703/6
---
31 个赞

谢谢你,大卫!

13 个赞

您好 Discourse 社区,

对于我因插件存储库上的行为造成的干扰,我致以诚挚的歉意。在试图强调一个安全问题时,我犯了严重的错误,违反了行为准则。

今后,我将确保我的行为符合负责任的披露惯例,并感谢有机会从中学习。

再次,我为造成的干扰深感抱歉。

@w3shi

20 个赞

感谢您的道歉。

接下来不那么负责任的是,当您放弃该句柄时,没有私下联系我或 CDCK,因为在过去的三个小时里,其他人可能已经看到了您的帖子并注册了它。

我现在已经重新获得了对旧 Github 句柄的控制权。感谢您最终做了正确的事情,并第五次指出 Github 不再保护重定向(上次是第四次:“这一发现标志着已确定了第四种执行 Repojacking 的替代方法”)

我建议您联系 Github 并领取您的赏金!

12 个赞

对于由此造成的所有不便,我深表歉意!感谢您的理解@RGJ!

12 个赞

欢迎来到社区,感谢您修复好一切。

9 个赞

基本上,你应该假设没有什么安全,这同样行不通。

就在几天前,人们发现一些 ESLint Prettier 包的 NPM 账户的开发者之一遭到了入侵,他们发布了一些流行包的新受损版本:

这些包随后被其他包引用,因为许多人声称你应该始终更新到最新版本。

看到这个帖子后,我建议了一个功能,在更新插件/主题组件时引入签名验证:Plugin and theme component signing

这并不能阻止受损的密钥,但至少能让供应链的_一部分_更值得信赖。最终,仍然有可能引入受损的第三方库。附加依赖项并不是真正可见的。

4 个赞

我不确定这是否仍然有效。我有一个插件指向了被泄露的 github 地址,重建期间的错误消息只是说它无法拉取存储库,并附带了一些关于 gem 版本或其他信息的详细说明。(由于后续构建过程中其他噪音太多,我无法粘贴确切信息,因为它在我之前的滚动记录中太靠后了。)

看起来该 URL/存储库现在根本不存在了,这很好(至少在其他人重新创建它之前),但错误消息本可以节省大量时间。

1 个赞

Indeed, @RGJ 现已重新获得 github 组织控制权,因此我们已移除临时错误消息。

5 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.