
私は、Mastodon の実験的な おすすめコレクション フェデレーションパイプラインに影響を与える 高重要度の認可バイパス 脆弱性を責任ある形で開示しました。
CVE ID: CVE-2026-47777
ActivityPub::VerifyFeaturedItemService| スコア | ベクトル |
|---|---|
| 7.5(高) | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N |
おすすめコレクション の検証パイプラインは、認可が実際に掲載対象のアカウントに属していることを確認せずに、偽造された FeatureAuthorization オブジェクトを受け入れていました。
検証ロジックは次のことだけを確認していました:
しかし、次の点は 検証していませんでした:
FeatureAuthorization.interactionTarget
が、コレクションに挿入されるアカウントと一致するかどうか。
その結果、悪意のあるフェデレーション Mastodon インスタンスが認可ドキュメントを偽造し、任意のリモートユーザーがキュレーションされたおすすめコレクションへの掲載に同意したかのように偽って示すことができました。
これにより、フェデレーションの完全性に影響を与える 認可バイパス が発生しました。
この脆弱性は、以下の中の アイデンティティバインディング の欠如によって引き起こされました:
ActivityPub::VerifyFeaturedItemService
このサービスは、次の値同士の比較に失敗していました:
CollectionItem.object_uri
と
FeatureAuthorization.interactionTarget
この検証が欠けていたため、認可オブジェクトが無関係の被害者アカウントに対して再利用される可能性がありました。
攻撃者は以下のことが可能でした:
FeatureAuthorization ドキュメントを偽造する影響: フェデレーションの完全性(完全性のみ)
機密性には 影響がありません。
欠落していた検証は事実上、次のようなものでした:
return if @collection_item.object_uri != value_or_id(@authorization['interactionTarget'])
このアイデンティティチェックがないため、攻撃者が制御するドメインによって生成された認可ドキュメントが、無関係のユーザーに対して受け入れられる可能性がありました。
この脆弱性は、複数のアプローチを使用して独立に検証されました:
カスタム Python 検証ハーネスは、Mastodon のパーサーが受け入れるサポート対象のすべての JSON-LD @context バリエーションをテストしました。
分析により、この脆弱性は JSON-LD パースではなく 認可バインディングの欠如 に起因することが確認されました。
エクスプロイトのワークフローは次のとおりです:
FeatureAuthorization オブジェクトが公開されます。被害者アカウントは、一切認可を与えていないにもかかわらず、掲載に同意したかのように表示されます。
この問題は、認可を受け入れる前に、以下との間で明示的なアイデンティティ検証を導入することで解決されました:
CollectionItem.object_uri)FeatureAuthorization.interactionTarget)レポートのレビュー、問題の検証、CVE-2026-47777 の採番、および責任ある開示を通じた調整済みセキュリティ修正の実装を行ってくださった Mastodon セキュリティチーム に特別な感謝を捧げます。
セキュリティ研究者: Bekzod
責任ある開示は、協調的脆弱性開示の慣行に従って実施されました。
| 日付 | イベント |
|---|
| 2026 | 調査完了 |
| 2026 | 責任ある開示を提出 |
| 2026 | 脆弱性を再現 |
| 2026 | CVE 採番(CVE-2026-47777) |
| 2026 | パッチリリース(Mastodon 4.6.0-beta.1) |