/

CVE-2026-55103

Severity:

HIGH RISK

(8.6)

Improper Authentication (CWE-345) in Discourse ActivityPub

CVE-2026-55103

Deferred

Vulnerability type

Category:

Improper Authentication

CWE:

CWE-345, CWE-863

Impact:

Unauthorized modification of federated content

Severity:

HIGH RISK

(8.6)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

A missing identity and ownership verification flaw in Discourse ActivityPub can allow a remote attacker to act on federated posts without the required permissions. Depending on the affected operation, an attacker may edit, delete, or reply to posts owned by other actors.

A missing identity and ownership verification flaw in Discourse ActivityPub can allow a remote attacker to act on federated posts without the required permissions. Depending on the affected operation, an attacker may edit, delete, or reply to posts owned by other actors.

Affected context

The vulnerability occurs in Discourse installations with ActivityPub federation enabled when inbound signed requests are processed without sufficiently correlating the authenticated request actor with the ActivityPub actor and the referenced federated post. Risk is greatest where remote federated content can reach post-management operations before identity and ownership checks are fully enforced.

The vulnerability occurs in Discourse installations with ActivityPub federation enabled when inbound signed requests are processed without sufficiently correlating the authenticated request actor with the ActivityPub actor and the referenced federated post. Risk is greatest where remote federated content can reach post-management operations before identity and ownership checks are fully enforced.

Exploit preconditions

  • Attack surface: Inbound ActivityPub request-processing endpoints
  • Required access: The ability to send requests to the publicly reachable federation interface
  • Trigger point: Processing an inbound signed request that targets a federated post
  • Why exploitation is possible: The application does not adequately verify that the authenticated signing actor is the ActivityPub actor and owns the referenced post before allowing the requested operation
  • Attack surface: Inbound ActivityPub request-processing endpoints
  • Required access: The ability to send requests to the publicly reachable federation interface
  • Trigger point: Processing an inbound signed request that targets a federated post
  • Why exploitation is possible: The application does not adequately verify that the authenticated signing actor is the ActivityPub actor and owns the referenced post before allowing the requested operation

Why this happens

The underlying bug is an authentication and authorization correlation failure. Request authentication establishes an identity, but the application does not reliably bind that identity to the ActivityPub actor and the target post's owner before performing a state-changing action. This behavior maps primarily to CWE-345, Insufficient Verification of Data Authenticity, and is also consistent with CWE-863, Incorrect Authorization, because ownership and permission checks do not sufficiently constrain the operation.

The underlying bug is an authentication and authorization correlation failure. Request authentication establishes an identity, but the application does not reliably bind that identity to the ActivityPub actor and the target post's owner before performing a state-changing action. This behavior maps primarily to CWE-345, Insufficient Verification of Data Authenticity, and is also consistent with CWE-863, Incorrect Authorization, because ownership and permission checks do not sufficiently constrain the operation.

Potential impact

  • An attacker may edit federated posts without authorization.
  • An attacker could delete content owned by another federated actor.
  • An attacker may create unauthorized replies or alter discussion history.
  • Federated content integrity and trust could be reduced.
  • The issue can cause cross-tenant or cross-community data manipulation.
  • An attacker may edit federated posts without authorization.
  • An attacker could delete content owned by another federated actor.
  • An attacker may create unauthorized replies or alter discussion history.
  • Federated content integrity and trust could be reduced.
  • The issue can cause cross-tenant or cross-community data manipulation.

General mitigation guidance

Mitigation generally focuses on binding every state-changing ActivityPub

operation to a verified actor and the resource owner.

Common defensive patterns include:

  • Verify that the authenticated signing identity matches the ActivityPub actor associated with the request.
  • Confirm that the authenticated actor owns the referenced post or has an explicitly granted capability for the operation.
  • Apply authorization checks immediately before edits, deletions, and replies.
  • Reject ambiguous, mismatched, or unverifiable actor and resource identifiers by default.
  • Keep federation operations within least-privilege boundaries and preserve audit records for rejected and accepted changes.

Mitigation generally focuses on binding every state-changing ActivityPub

operation to a verified actor and the resource owner.

Common defensive patterns include:

  • Verify that the authenticated signing identity matches the ActivityPub actor associated with the request.
  • Confirm that the authenticated actor owns the referenced post or has an explicitly granted capability for the operation.
  • Apply authorization checks immediately before edits, deletions, and replies.
  • Reject ambiguous, mismatched, or unverifiable actor and resource identifiers by default.
  • Keep federation operations within least-privilege boundaries and preserve audit records for rejected and accepted changes.

How teams detect issues like this

Organizations can look for this class of issue through:

  • Static analysis and code review checks for state-changing handlers that authenticate requests without validating resource ownership.
  • Review of federation code for mismatches between request principals, ActivityPub actors, and target resource owners.
  • Tests that use valid signatures with deliberately mismatched actors and resources.
  • Policy enforcement requiring explicit authorization checks before federated mutations.
  • Runtime monitoring for unusual cross-actor edits, deletions, or replies and repeated authorization failures.

Automated security review tools may help identify missing authorization flows, but focused integration tests are also important.

Organizations can look for this class of issue through:

  • Static analysis and code review checks for state-changing handlers that authenticate requests without validating resource ownership.
  • Review of federation code for mismatches between request principals, ActivityPub actors, and target resource owners.
  • Tests that use valid signatures with deliberately mismatched actors and resources.
  • Policy enforcement requiring explicit authorization checks before federated mutations.
  • Runtime monitoring for unusual cross-actor edits, deletions, or replies and repeated authorization failures.

Automated security review tools may help identify missing authorization flows, but focused integration tests are also important.

Sources

SourceLink
github.comgithub.com/discourse/discourse-activity-pub/commit/1c8518b0f2abdf31cbea3e0b242f74d8994a9ba5
github.comgithub.com/discourse/discourse-activity-pub/security/advisories/GHSA-jw39-rch6-mhwf

Frequently asked

questions

Yes. The affected attack surface is inbound ActivityPub processing, so a

remote attacker may be able to trigger the issue by sending crafted

federation requests when ActivityPub is exposed and enabled.

Not necessarily. The relevant access is the ability to communicate with the

federation interface and present a request that reaches the vulnerable

processing path. Deployment-specific federation controls may affect scope.

Bind the authenticated request identity to the ActivityPub actor, verify that

actor owns the referenced post, and perform those checks before any mutation.

Use centralized authorization checks, deny mismatched actor-resource

relationships by default, and test every federated state-changing operation

with cross-actor and cross-resource authorization cases.

Yes. The affected attack surface is inbound ActivityPub processing, so a

remote attacker may be able to trigger the issue by sending crafted

federation requests when ActivityPub is exposed and enabled.

Not necessarily. The relevant access is the ability to communicate with the

federation interface and present a request that reaches the vulnerable

processing path. Deployment-specific federation controls may affect scope.

Bind the authenticated request identity to the ActivityPub actor, verify that

actor owns the referenced post, and perform those checks before any mutation.

Use centralized authorization checks, deny mismatched actor-resource

relationships by default, and test every federated state-changing operation

with cross-actor and cross-resource authorization cases.

Find out what's already
exploitable in your codebase.