☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 6.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N 🐛 CWE-79
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-73038

CVE-2026-73038 Cross-Site Scripting in Thomas Eichmann
📅 PUBLISHED: 2026-08-13 00:00 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.19%
👁️
0.19% probability
4.8× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1203
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 6.1
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: R User Interaction Required
S: C Scope Changed
C: L Confidentiality Low
I: L Integrity Low
A: N Availability None
6.1
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-73038 is a stored cross-site scripting (XSS) vulnerability in NodeBB, an open-source forum platform, affecting all versions prior to 4.15.0. The flaw exists in the renderEmoji function, which fails to escape the tag.icon.url and tag.name attributes when rendering emoji tags, allowing remote attackers to inject arbitrary HTML and JavaScript into stored post content via crafted ActivityPub Create/Note objects. Successful exploitation executes attacker-controlled code in the browsers of every user who views the affected post, enabling session hijacking, account takeover, and tampering with forum content.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Technical Analysis

NodeBB is a widely deployed community forum platform that supports federation using the ActivityPub protocol. In federated deployments, remote instances exchange post content — typically ActivityPub Create activities wrapping Note objects — without requiring the recipient to create an account or authenticate for ingestion. This inbound-federation trust model substantially widens the attack surface, because any user of any federated instance can deliver content to the target platform.

The vulnerability is localized to the renderEmoji function. When NodeBB renders post content, emoji tags are processed and converted into HTML. According to the NVD description, the rendering path fails to escape two attributes of the emoji tag: tag.icon.url and tag.name. These attributes are part of the ActivityPub object model and are attacker-controllable via inbound federation. Because the values are interpolated into the rendered output without context-appropriate output encoding, an attacker can break out of the intended attribute or text context and inject arbitrary HTML elements and JavaScript. The resulting payload is stored as part of the post content, which is the defining characteristic of stored/persistent XSS (CWE-79).

The attack does not require authenticated access to the target instance. The malicious object is delivered over the network via the federation protocol (AV:N, PR:N), and no credentials or prior privileges are necessary. User interaction is required only in the sense that a victim must open or view the poisoned post (UI:R). The CVSS scope is changed (S:C) because the injected script executes in the browser's origin context for the NodeBB application — the same trust domain that holds the victim's session — rather than in the server-side process. The confidentiality and integrity impact are rated low (C:L/I:L): the impact is typically limited to session theft, data exposure, and content modification within the application, rather than direct server or database compromise.

The assigned CVSS score is 6.1 (Medium). The EPSS score of 0.00194 places this CVE in the 9.4th percentile of exploited-CVE likelihood, and it is not currently listed in CISA's Known Exploited Vulnerabilities catalog. The patch status is marked CLAIMED with confidence 2/4: a single source (OSV) reports that NodeBB 4.15.0 addresses the issue, but this is not independently corroborated by a vendor advisory at the time of writing. The NVD description is sparse on implementation details beyond the affected function and attributes, so no further function names, file paths, or endpoint specifics are available; the analysis presented here is therefore anchored at the vulnerability-class level where specific details are absent.

Exploitation Scenarios

No public PoC, Nuclei template, or exploit code was available at the time of writing. The attack chain below is inferred strictly from the NVD description and the known mechanics of the stored XSS vulnerability class; the exact payload syntax is not confirmed.

  1. Reconnaissance and target identification. The attacker identifies NodeBB instances running version 4.15.0 or earlier. Public-facing forums can be located with internet-wide search engines using platform fingerprints such as "Powered by NodeBB" banners, default document titles, or characteristic HTTP response headers. The attacker additionally determines whether the target instance accepts inbound ActivityPub federation; only federated instances are reachable through the delivery vector described in the advisory.

  2. Crafting and delivery of the malicious object. The attacker constructs an ActivityPub Create activity containing a Note object whose emoji tags are malformed. The tag.icon.url and tag.name fields are populated with values designed to escape their rendering context — for example, quoted payloads that terminate an HTML attribute early and introduce event-handler attributes or script elements. The object is then federated to the target NodeBB instance. Because ingestion of inbound federation content requires no authenticated access to the target (PR:N), the malicious note is accepted, recorded, and stored as part of the post body.

  3. Trigger and code execution. When any user — including forum administrators — views the stored post, the server invokes the renderEmoji function to render the emoji tags. Since tag.icon.url and tag.name are not escaped, the injected HTML is emitted into the post response and parsed by the victim's browser. Arbitrary JavaScript executes in the security context of the NodeBB application origin, which holds the victim's active session.

  4. Post-exploitation impact. The injected script can read session cookies and CSRF tokens, exfiltrate them to an attacker-controlled server, and issue authenticated requests on behalf of the victim. Depending on the victim's privileges, the attacker can publish or edit posts, send direct messages, alter forum settings, or perform moderation actions. Because the payload is stored, every subsequent page view re-triggers execution, effectively amplifying the reach to the entire community that accesses the poisoned thread.

Impact Assessment

The primary business impact of CVE-2026-73038 is compromise of user trust and integrity of community content in NodeBB deployments. Stored XSS of this nature is particularly damaging for forum platforms because the injected payload is served to every visitor of the affected post without any additional attacker interaction. For enterprises that operate NodeBB as a customer-support, community-engagement, or internal-collaboration platform, the compromise chain can lead to session hijacking of support agents and administrators, account takeover, and abuse of privileged functionality.

Affected systems are all NodeBB instances prior to 4.15.0 that have ActivityPub federation enabled. Instances running without federation are not reachable through the ActivityPub delivery vector described in the advisory and would require a separate, unknown delivery mechanism; this materially reduces their exposure. The blast radius within an affected deployment is broad: the payload persists in the post and is delivered to all viewers, and the requirement for user interaction is satisfied simply by normal forum browsing.

The CVSS subscores support this assessment: the network attack vector and low attack complexity indicate trivial exploitation conditions; the changed scope (S:C) indicates that the injected script operates in a security context distinct from the vulnerable server component; and the low confidentiality and integrity scores reflect that the typical outcome is application-level data theft and manipulation rather than infrastructure-level compromise. The low EPSS score and absence from CISA KEV indicate that, as of this report, the vulnerability has not been observed in broad exploitation campaigns, but the public disclosure of the CVE and its stored-XSS nature make weaponization likely in the near term.

Detection Guidance

The detection rules below are designed to identify evidence of crafted ActivityPub emoji payloads in transit or in web-server logs. Because of the sparse technical detail in the advisory, the rules focus on content signatures (federation content-type, emoji tag structures, and script/event-handler payloads) rather than specific endpoint paths.

Sigma Rule

title: NodeBB Stored XSS via Crafted ActivityPub Emoji Tags (CVE-2026-73038)
id: bde1f74a-9c30-4e7f-8d5a-2f8c9a1b6e02
status: experimental
description: Detects inbound ActivityPub objects containing emoji tag structures with embedded script or event-handler payloads, targeting NodeBB before 4.15.0.
logsource:
  category: webserver
  product: generic
detection:
  selection_activitypub_content:
    http.content_type|contains:
      - "application/activity+json"
      - "application/ld+json"
  selection_payload:
    http.body|contains|all:
      - "emoji"
      - "tag"
  selection_malicious:
    http.body|contains|any:
      - "<script"
      - "javascript:"
      - "onerror="
      - "onload="
      - "data:text/html"
  condition: selection_activitypub_content and selection_payload and selection_malicious
falsepositives:
  - Legitimate federated posts that discuss XSS or emoji rendering in chat
  - Security researchers testing their own instances
level: medium
tags:
  - attack.t1203
  - attack.t1059.007
  - cve.2026-73038

YARA Rule

rule CVE_2026_73038_NodeBB_Emoji_XSS
{
    meta:
        description = "Detects ActivityPub payloads with unescaped emoji tag attributes targeting NodeBB < 4.15.0"
        author = "Valters IT Threat Intelligence"
        reference = "CVE-2026-73038"
        cve = "2026-73038"
        date = "2026-02-01"
        score = 61
    strings:
        $activity = "Create" ascii wide
        $note = "Note" ascii wide
        $emoji = "emoji" ascii wide
        $url_attr = "\"icon\"" ascii wide
        $name_attr = "\"name\"" ascii wide
        $script = "<script" ascii wide
        $js_uri = "javascript:" ascii wide
        $handler = "onerror=" ascii wide
        $data_uri = "data:text/html" ascii wide
    condition:
        uint16(0) == 0x7B7B or uint16(0) == 0x5B7B and
        any of ($activity, $note) and
        $emoji and
        any of ($url_attr, $name_attr) and
        any of ($script, $js_uri, $handler, $data_uri)
}

Suricata IDS Rule

alert http any any -> any any (
    msg:"CVE-2026-73038 NodeBB Stored XSS via Crafted ActivityPub Emoji Tag";
    content:"application/activity+json"; http.content_type;
    content:"emoji"; http.request_body;
    pcre:"/[\"'](?:tag\.icon\.url|tag\.name)[\"'][^}]{0,200}(?:javascript:|<script|onerror=|onload=|data:text\/html)/i";
    reference:cve,2026-73038;
    classtype:web-application-attack;
    sid:2026073038; rev:1;
)

Elastic Detection

network where event.category == "network" and network.direction == "ingress"
  and http.request.content_type in ("application/activity+json", "application/ld+json")
  and http.request.body.text != null
  and http.request.body.text like~ "*emoji*"
  and (
    http.request.body.text like~ "*<script*"
    or http.request.body.text like~ "*javascript:*"
    or http.request.body.text like~ "*onerror=*"
    or http.request.body.text like~ "*onload=*"
  )

Splunk SPL Query

index=web* OR index=proxy*
  (http_content_type="*application/activity+json*" OR Content-Type="*application/activity+json*")
  AND (payload="*emoji*" OR body="*emoji*")
  AND (payload="*<script*" OR body="*<script*" OR payload="*javascript:*" OR payload="*onerror=*")
| stats count min(_time) as first_seen max(_time) as last_seen by src_ip, dest_host, uri, src_category
| where count > 0
| sort - count
| table first_seen, last_seen, src_ip, dest_host, uri, count

Wazuh OSSEC Rule

<group name="nodebb,web,xss,cve-2026-73038,">
  <rule id="100730" level="12">
    <if_sid>31100</if_sid>
    <match>application/activity+json|application/ld+json</match>
    <match>emoji</match>
    <regex on="url">(<script|javascript:|onerror=|onload=|data:text/html)</regex>
    <description>CVE-2026-73038: Possible stored XSS payload in ActivityPub emoji tag delivered to NodeBB</description>
    <group>attack.t1203,</group>
  </rule>
</group>

Mitigation & Patch Guidance

Patch confidence is 2/4 (CLAIMED): a single source (OSV) states that NodeBB 4.15.0 fixes the vulnerability, but the patch is not independently confirmed and no vendor advisory was located at the time of writing. Administrators should treat the upgrade as the primary remediation while verifying its provenance.

  1. Immediate mitigations. If federation is not business-critical, disable inbound ActivityPub federation on NodeBB instances until the patch is confirmed deployed. This eliminates the known delivery vector. If federation must remain enabled, place a web application firewall or reverse proxy in front of the instance and filter inbound requests carrying JSON content types for the payload signatures used in the detection rules above. Additionally, deploy a restrictive Content Security Policy (CSP) without unsafe-inline to reduce the impact of script injection; note that CSP is a compensating control and does not prevent the vulnerability itself.

  2. Patch and upgrade steps. Upgrade all NodeBB instances to version 4.15.0 or later. Because the patch is only single-source claimed, verify the fix in the official NodeBB release notes or changelog before deployment, and confirm the running version after the upgrade. Test the upgrade in a staging environment that mirrors the production federation configuration, then apply to production with a rollback plan. Re-scan the instance for XSS indicators and confirm that no malicious posts were stored prior to patching; if found, remove or sanitize them.

  3. Long-term hardening. Adopt framework-level auto-escaping for all server-side rendering paths that handle federated or user-supplied data, and perform a security review of the renderEmoji code path and any other functions that process ActivityPub object attributes. Harden cookies with HttpOnly, Secure, and SameSite attributes to reduce session-theft impact. At the network layer, restrict inbound ActivityPub traffic to known trusted federated peers if the platform's threat model allows it. Monitor CISA KEV and vendor security advisories for updates to the exploitation status of CVE-2026-73038.

References

No vendor advisory, researcher publication, or threat-actor campaign referencing CVE-2026-73038 was identified during analysis. No exploit-in-the-wild evidence was observed, consistent with the low EPSS score and the absence of the CVE from CISA KEV and public exploit databases.

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

http.title:"NodeBB"
http.html:"Powered by NodeBB"
http.component:"nodebb"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-73038/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.