
Подробный технический анализ CVE-2026-47777 — обхода авторизации высокой степени серьёзности в конвейере федерации Featured Collections в Mastodon, включающий первопричину, PoC и патч.
Я ответственно раскрыл уязвимость обхода авторизации высокой степени серьезности, затрагивающую экспериментальный конвейер федерации избранных коллекций Mastodon.
Идентификатор CVE: 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 протестировал все поддерживаемые варианты @context JSON-LD, принимаемые парсером Mastodon.
Анализ подтвердил, что уязвимость возникла из-за отсутствия привязки авторизации, а не из-за разбора JSON-LD.
Сценарий эксплуатации:
FeatureAuthorization.Учетная запись жертвы отображается так, как будто она дала согласие на включение в избранное, несмотря на то, что авторизация никогда не предоставлялась.
Проблема была устранена путем введения явной проверки идентичности между:
CollectionItem.object_uri)FeatureAuthorization.interactionTarget)перед принятием авторизации.
| Дата | Событие |
|---|---|
| 2026 | Исследование завершено |
| 2026 | Отправлено ответственное раскрытие |
| 2026 | Уязвимость воспроизведена |
| 2026 | Присвоен CVE (CVE-2026-47777) |
| 2026 | Выпущен патч (Mastodon 4.6.0-beta.1) |
Особая благодарность команде безопасности Mastodon за рассмотрение отчета, подтверждение проблемы, присвоение CVE-2026-47777 и реализацию скоординированного исправления безопасности в рамках ответственного раскрытия.
Исследователь безопасности: Bekzod
Ответственное раскрытие проведено в соответствии с практиками скоординированного раскрытия уязвимостей.