bekwiner/cve-2026-47777

GitHub: bekwiner/cve-2026-47777

该项目披露了 Mastodon Featured Collections 联邦流水线中因授权验证缺失而导致的高危授权绕过漏洞(CVE-2026-47777),包含根因分析、PoC 及修复方案。

Stars: 1 | Forks: 0

# CVE-2026-47777 — Mastodon Featured Collections 授权绕过 ## 概述 我负责任地披露了一个影响 Mastodon 实验性 **Featured Collections** 联邦流水线的**高危授权绕过**漏洞。 **CVE ID:** **CVE-2026-47777** ### 受影响组件 - `ActivityPub::VerifyFeaturedItemService` ### 漏洞弱点 - **CWE-345** — 数据真实性验证不充分 - **CWE-863** — 授权机制不正确 ### CVSS v3.1 | 分数 | 向量 | |-------|--------| | **7.5(高危)** | `CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N` | # 漏洞摘要 **Featured Collections** 验证流水线接受了伪造的 `FeatureAuthorization` 对象,而没有验证该授权是否确实属于被推荐(featured)的账户。 验证逻辑仅确保了: - 授权存在; - 它源自预期的域名; - 它包含了预期的 ActivityPub 字段。 然而,它**没有验证**: ``` FeatureAuthorization.interactionTarget ``` 是否与正在插入到 Collection 中的账户相匹配。 因此,恶意的联邦 Mastodon 实例可以伪造授权文档,并虚假地表明任意远程用户已同意出现在精选的 Featured Collections 中。 这导致了影响联邦完整性的**授权绕过**问题。 # 根本原因 该漏洞是由以下组件内部缺失的**身份绑定**引起的: ``` ActivityPub::VerifyFeaturedItemService ``` 该服务未能将: ``` CollectionItem.object_uri ``` 与 ``` FeatureAuthorization.interactionTarget ``` 进行比较。 由于缺少此验证,授权对象可能会被重用于不相关的受害者账户。 # 安全影响 攻击者可以: - 伪造 `FeatureAuthorization` 文档 - 绕过用户同意验证 - 将任意远程账户插入 Featured Collections - 创建虚假的背书 - 发布具有误导性的精选集合 - 伪造用户同意 - 在联邦实例中助长骚扰和滥用声誉的行为 机密性**未**受到影响。 # 技术细节 缺失的验证实际上是: ``` return if @collection_item.object_uri != value_or_id(@authorization['interactionTarget']) ``` 如果没有此身份检查,由攻击者控制的域生成的授权文档就可能会被接受,并用于不相关的用户。 # 研究方法 该漏洞通过多种方法进行了独立验证: - 人工源代码审查 - ActivityPub 协议分析 - 静态代码分析 - Ruby 测试环境 - 定制的 Python 验证工具 - 与现有的 Mastodon 验证服务进行交叉比对 定制的 Python 验证工具测试了 Mastodon 解析器接受的每一种受支持的 JSON-LD `@context` 变体。 分析证实,该漏洞源于**缺失授权绑定**,而非 JSON-LD 解析问题。 # 概念验证 (PoC) 利用流程如下: 1. 攻击者控制一个联邦 Mastodon 实例。 2. 发布一个伪造的 `FeatureAuthorization` 对象。 3. 该授权引用了攻击者控制的资源。 4. 将来自另一个实例的受害者账户插入到 Collection 中。 5. Mastodon 接受该伪造的授权,因为对象身份从未被验证过。 ### 结果 受害者账户看起来就像是已经同意被推荐(featured),尽管它从未授予过授权。 # 修复 该问题已通过在以下两者之间引入明确的身份验证得到解决: - 推荐对象 (`CollectionItem.object_uri`) - 授权目标 (`FeatureAuthorization.interactionTarget`) 此验证会在接受授权之前执行。 # 时间线 | 日期 | 事件 | |------|-------| | 2026 | 研究完成 | | 2026 | 提交负责任的披露 | | 2026 | 复现漏洞 | | 2026 | 分配 CVE (**CVE-2026-47777**) | | 2026 | 发布补丁 (**Mastodon 4.6.0-beta.1**) | # 参考 - **CVE:** https://www.cve.org/CVERecord?id=CVE-2026-47777 - **GHSA:** https://github.com/mastodon/mastodon/security/advisories/GHSA-vg36-gxjg-2v46 - **补丁:** https://github.com/mastodon/mastodon/commit/22203f8aeb03e8f14dc62e253e83db39825a5bcf # 致谢 特别感谢 **Mastodon 安全团队**审查报告、验证问题、分配 **CVE-2026-47777**,并通过负责任的披露流程实施了协调的安全修复。 ## 作者 **安全研究员:** Bekzod 本次负责任的披露是根据协调漏洞披露实践进行的。
标签:ActivityPub, Mastodon, Web安全, 授权绕过, 漏洞分析, 联邦协议安全, 蓝队分析, 路径探测, 逆向工具