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安全, 授权绕过, 漏洞分析, 联邦协议安全, 蓝队分析, 路径探测, 逆向工具