NodeBB - ActivityPub Author Spoofing via Unvalidated attributedTo Mapped to Local User
NodeBB does not bind the claimed author of an inbound ActivityPub object to the authenticated remote actor. The inbound middleware verifies the HTTP-signature actor and checks the origin of object.id, but never validates that attributedTo corresponds to the sender. In the object mock, attributedTo is used directly as a uid, and actors.assert silently ignores numeric identifiers (filtering them out without re-deriving the uid), so a federated remote actor can set attributedTo to a bare numeric value such as 1 and have the resulting post or private message created with that local uid as author, including the administrator account. This lets a remote attacker forge posts and direct messages attributed to arbitrary local users. Requires the ActivityPub/federation feature to be enabled.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-58593
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 2 Nov 2026, 20:03 UTC · Revision 1
Source evidence
NodeBB - ActivityPub Author Spoofing via Unvalidated attributedTo Mapped to Local User
core-osv · Original sourcePublished 1 Jul 2026, 19:27 UTC
NodeBB does not bind the claimed author of an inbound ActivityPub object to the authenticated remote actor. The inbound middleware verifies the HTTP-signature actor and checks the origin of object.id, but never validates that attributedTo corresponds to the sender. In the object mock, attributedTo is used directly as a uid, and actors.assert silently ignores numeric identifiers (filtering them out without re-deriving the uid), so a federated remote actor can set attributedTo to a bare numeric value such as 1 and have the resulting post or private message created with that local uid as author, including the administrator account. This lets a remote attacker forge posts and direct messages attributed to arbitrary local users. Requires the ActivityPub/federation feature to be enabled.
osv:CVE-2026-58593
Complete source record
{
"id": "edd2f6f5c12846932b28071b6baefb7e0e96a7b0f4a94a97a39b59b28d3728f5",
"url": "https://osv.dev/vulnerability/CVE-2026-58593",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "NodeBB - ActivityPub Author Spoofing via Unvalidated attributedTo Mapped to Local User",
"summary": "NodeBB does not bind the claimed author of an inbound ActivityPub object to the authenticated remote actor. The inbound middleware verifies the HTTP-signature actor and checks the origin of object.id, but never validates that attributedTo corresponds to the sender. In the object mock, attributedTo is used directly as a uid, and actors.assert silently ignores numeric identifiers (filtering them out without re-deriving the uid), so a federated remote actor can set attributedTo to a bare numeric value such as 1 and have the resulting post or private message created with that local uid as author, including the administrator account. This lets a remote attacker forge posts and direct messages attributed to arbitrary local users. Requires the ActivityPub/federation feature to be enabled.",
"evidence": "osv:CVE-2026-58593",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2026-58593",
"aliases": [
"CVE-2026-58593"
],
"metrics": [
{
"type": "CVSS_V4",
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/nodebb/nodebb",
"type": "GIT",
"events": [
{
"introduced": "c17e7102fb6abcc25d346efa2600fcbbbee9ab04"
},
{
"last_affected": "c17e7102fb6abcc25d346efa2600fcbbbee9ab04"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "4.13.2"
},
{
"last_affected": "4.13.2"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StandaloneSingleVersion"
},
{
"cpe": "cpe:2.3:a:nodebb:nodebb:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "0"
},
{
"last_affected": "4.13.2"
}
],
"source": "CPE_RANGE"
}
]
}
}
],
"versions": [
"4.13.2",
"v4.13.2"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-58593.json"
}
}
],
"modified": "2026-10-28T02:30:23.383695307Z",
"provider": "osv",
"references": [
"https://github.com/NodeBB/NodeBB/blob/v4.13.2/src/activitypub/mocks.js",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/58xxx/CVE-2026-58593.json",
"https://nvd.nist.gov/vuln/detail/CVE-2026-58593",
"https://www.vulncheck.com/advisories/nodebb-activitypub-author-spoofing-via-unvalidated-attributedto-mapped-to-local-user",
"https://github.com/bikini/exploitarium/tree/main/nodebb-activitypub-attributedto-local-uid-spoof-poc"
],
"provider_metadata": {
"cwe_ids": [
"CWE-290",
"CWE-345"
],
"cna_assigner": "VulnCheck",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/58xxx/CVE-2026-58593.json"
}
},
"related_cves": [
{
"value": "CVE-2026-58593",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 489556,
"published_at": "2026-07-01T19:27:23.367+00:00"
}