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

CVE-2026-102581

CVE-2026-102581 Cross-Site Scripting in Moodle
📅 PUBLISHED: 2026-09-30 00:00 UTC 🔄 UPDATED: 2026-10-03 23:54 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent sources confirm 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.20%
👁️
0.20% probability
5.0× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1059.007
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Affected: Moodle — upgrade to patched release
CVSS VECTOR BREAKDOWN 4.6
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: R User Interaction Required
S: U Scope Unchanged
C: L Confidentiality Low
I: L Integrity Low
A: N Availability None
4.6
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-102581 is a stored cross-site scripting (XSS) vulnerability in Moodle caused by insufficient output escaping in the templates used to render forum posts. An authenticated attacker with low privileges can persist a malicious payload in forum content that executes in the browser of any other user who views the affected post. Because exploitation requires victim interaction and targets a scoped session context, the CVSS base score is 4.6, but the persistence and social nature of forum content make reliable mass victimization feasible on exposed learning platforms.

⚡ 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

The vulnerability class is stored (persistent) cross-site scripting, mapped to CWE-79. The NVD description states that the defect originates from insufficient output escaping in templates used to display forum posts. In Moodle's architecture, forum posts are user-supplied content rendered back to other site users through server-side templates. When a template emits stored user input without contextually correct HTML encoding, any HTML/JavaScript metacharacters contained in the original post are interpreted by the browser rather than displayed as inert text.

The core mechanics of this class are well understood:

  1. Storage phase — A low-privileged, authenticated user submits forum content containing markup such as script tags or event-handler attributes. Because the input is persisted in the database, the payload is not transient.
  2. Escaping failure — The rendering template fails to apply consistent output encoding when the stored content is written into the HTML response. This differs from reflected XSS: no crafted link or social engineering of the victim's request is required beyond viewing the post.
  3. Execution phase — When another user opens the affected forum thread, the server returns a page in which the injected markup is treated as part of the document, and the browser executes it in the origin of the Moodle site.

Three properties of this specific case materially shape risk:

  • Persistence. The payload survives in the forum database and re-executes for every viewer until it is removed, giving the attacker repeated opportunities at no additional cost.
  • Low privilege barrier. The CVSS vector PR:L indicates any authenticated account able to post to a forum suffices. On many Moodle instances, self-registration or guest-to-student provisioning is straightforward, so the practical barrier is low.
  • Victim interaction required. UI:R reflects that the victim must open or view the affected post. This is normally a trivial action on an active course forum and is the principal reason the base score remains moderate rather than high.

The score components are internally consistent with a scoped, two-party-impact flaw: S:U (the vulnerable component and impacted component are the application itself), C:L (limited read of data accessible to the victim's session, such as page content or CSRF-relevant tokens), I:L (limited modification through actions the victim could perform), and A:N (no availability impact). No file-path, function-name, or template-name specifics are available from the supplied intelligence, and none are asserted here; the analysis is confined to the vulnerability class and the described attack surface (forum post rendering templates).

Scope note on version data: No affected version range, OSV package mapping, fixed version, or vendor advisory was provided by the tracked sources. The set of affected Moodle releases therefore cannot be enumerated from available data and should be treated as unknown until Moodle publishes an advisory or commit reference.


Exploitation Scenarios

No public proof-of-concept, Nuclei template, or exploit code exists for CVE-2026-102581 as of this assessment. The attack chain below is inferred strictly from the vulnerability class (stored XSS via unescaped template output) and the NVD description; no implementation-specific details are fabricated.

Step 1 — Reconnaissance and target identification. The attacker identifies an internet-facing (or internally reachable) Moodle deployment and confirms the presence of forums where they can create posts. Generic fingerprinting is sufficient; no CVE-specific probe is required. Because the flaw is a stored XSS in a normal application feature rather than a version-detectable endpoint, discovery is largely opportunistic.

Step 2 — Triggering the flaw class. Using a low-privileged authenticated account, the attacker creates or replies to a forum post and embeds injection content in a field that is persisted and later rendered by the vulnerable template. The essential precondition is that the attacker can write into forum content and that this content is displayed back to other users without proper output escaping. Per the NVD description, the flaw is exactly this insufficient escaping during post display.

Step 3 — Payload and execution. On any subsequent render of the affected post, the injected content is interpreted by the victim's browser as executable document content, in the security origin of the Moodle site. The precise payload syntax is not described in the available intelligence; at the class level, the standard objective is arbitrary JavaScript execution in the victim's authenticated browser context (for example, session/CSRF token abuse or silent actions as the victim). No specific function names, URLs, or parameters are asserted here because none are provided in the source data.

Step 4 — Post-exploitation impact. Because execution occurs in the Moodle origin with the victim's authenticated session, realistic consequences include acting as the victim within the application, reading data the victim can read, and using the victim's browser to attack other users on the same instance (self-propagating stored XSS). Privileged targets — instructors, course managers, or site administrators who monitor forums — raise the severity of what the hijacked session can reach. The CVSS confidentiality and integrity impacts are limited (C:L/I:L), and there is no availability impact.

Weaponization caveat. The consistency of the attack depends on reaching each victim through a rendered post; no evidence of automated, in-the-wild exploitation was available at the time of writing.


Impact Assessment

Business impact. A stored XSS in a widely used learning management system can degrade trust in the platform's integrity, enable session abuse against staff and students, and, in the worst case, be leveraged against administrative accounts that view forum content. On multi-tenant or publicly exposed Moodle instances, the blast radius scales with the number of users who view the poisoned post, since the payload re-executes for each viewer without further attacker effort.

Affected systems. Any Moodle deployment that (a) hosts forums and (b) has not received a fix for this template-escaping defect. Precise version bounds are not available from the supplied data and must be confirmed against the vendor advisory once published.

CVSS analysis (as supplied). Base score 4.6 (Medium). Vector CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:L/A:N:

  • AV:N — reachable over the network.
  • AC:L — no special conditions beyond posting and viewing.
  • PR:L — requires a low-privileged authenticated account.
  • UI:R — the victim must view the affected post.
  • S:U — impact stays within the same security scope.
  • C:L / I:L / A:N — limited confidentiality and integrity effects, no availability effect.

The exploitability subscores (AV:N, AC:L, PR:L, UI:R) are the dominant contributors. The scope and impact constraints keep the score in the Medium band, but the persistent, multi-victim nature of stored XSS means real-world aggregate impact can exceed what a single score implies.

EPSS. No EPSS score is available from FIRST.org at the time of writing; no value is estimated here. CISA KEV status: not listed.


Detection Guidance

The rules below are grounded in the vulnerability class (stored XSS rendered from application responses) and avoid fabricating Moodle-specific internals that were not provided. Analysts should tune field names, indexes, and paths to their environment.

Sigma Rule

title: Potential Stored XSS Payload in Moodle Forum Post Submission
id: 3f9b1c2e-6a4d-4c8b-9a1e-moodle102581
status: experimental
description: Detects submission or rendering of forum content containing common XSS execution primitives consistent with CVE-2026-102581 (insufficient output escaping in forum post templates).
references:
  - https://nvd.nist.gov/vuln/detail/CVE-2026-102581
author: Threat Intelligence
date: 2026/01/01
logsource:
  category: webserver
  product: moodle
detection:
  selection_method:
    cs_method: 'POST'
  selection_path:
    cs_uri_query|contains:
      - '/mod/forum/'
  selection_payload:
    cs_body|contains:
      - '<script'
      - 'javascript:'
      - 'onerror='
      - 'onload='
      - 'onmouseover='
      - '<svg'
      - '<iframe'
  condition: selection_method and selection_path and selection_payload
falsepositives:
  - Security scanning or fuzzing of the platform
  - Legitimate code-snippet posts in technical courses
level: medium
tags:
  - attack.t1059.007
  - cwe.79

YARA Rule

rule CVE_2026_102581_Stored_XSS_Forum_Content
{
    meta:
        description = "Detects XSS execution primitives in stored Moodle forum content related to CVE-2026-102581"
        author = "Threat Intelligence"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-102581"
        date = "2026-01-01"
        cwe = "CWE-79"

    strings:
        $s1 = "<script" nocase
        $s2 = "javascript:" nocase
        $s3 = "onerror=" nocase
        $s4 = "onload=" nocase
        $s5 = "onmouseover=" nocase
        $s6 = "<svg" nocase
        $s7 = "<iframe" nocase

    condition:
        any of ($s*)
}

Suricata IDS Rule

alert http any any -> any any (msg:"CVE-2026-102581 Potential Stored XSS in Moodle Forum Post"; flow:established,to_server; http.method; content:"POST"; http.uri; content:"/mod/forum/"; http.request_body; content:"<script"; nocase; http.request_body; content:"</script>"; nocase; distance:0; classtype:web-application-attack; reference:cve,2026-102581; reference:url,nvd.nist.gov/vuln/detail/CVE-2026-102581; sid:2026102581; rev:1;)

Elastic Detection

sequence by source.ip with maxspan=5m
  [ network where http.request.method == "POST" and
      http.request.uri contains "/mod/forum/" ]
  [ network where http.request.method == "POST" and
      http.request.body contains "<script" ]

Splunk SPL Query

index=web sourcetype=moodle:access OR sourcetype=access_combined
method=POST uri="*mod/forum*"
| eval body=lower(coalesce(form_data, request_body, ""))
| where match(body, "(?i)(<script|javascript:|onerror=|onload=|onmouseover=|<svg|<iframe)")
| table _time, src_ip, user, uri, body
| sort - _time

Wazuh OSSEC Rule

<group name="moodle,web,xss,">
  <rule id="102581" level="10">
    <decoded_as>web-accesslog</decoded_as>
    <match>mod/forum</match>
    <regex type="pcre2">(?i)(&lt;script|javascript:|onerror=|onload=|onmouseover=|&lt;svg|&lt;iframe)</regex>
    <description>CVE-2026-102581 possible stored XSS payload submitted to Moodle forum</description>
    <mitre>
      <id>T1059.007</id>
    </mitre>
    <group>cve_2026_102581,</group>
  </rule>
</group>

Mitigation & Patch Guidance

Patch confidence: 0/4 — UNPATCHED. No patch evidence exists from any tracked source. No vendor fix, no fixed version, and no workarounds were provided in the available intelligence.

  1. Immediate mitigations

    • Restrict forum posting privileges where feasible and monitor forum content for injected markup.
    • Deploy the detection rules above at the web server, WAF, and network layers to flag XSS execution primitives in forum submissions and responses.
    • Enable a Web Application Firewall with rules that block inline script and event-handler attributes in form submissions to forum endpoints; treat this as compensating, not corrective.
    • Review Moodle accounts for self-registration abuse, since the flaw only requires a low-privileged authenticated account.
    • Isolate, if necessary, then delete or remediate any forum posts identified as carrying injected content.
  2. Patch / upgrade steps

    • No fixed version is available. Monitor the Moodle security advisory feed and the CVE-2026-102581 NVD entry for a vendor patch reference.
    • Once a patched release or commit is published, validate it against your current version and apply through your normal change-management process.
    • After patching, confirm that forum rendering escapes output correctly and re-scan stored forum content for residual payloads that could still fire for cached or unpatched viewers.
  3. Long-term hardening

    • Enforce context-aware output encoding across all user-generated content templates, prioritizing forum and discussion rendering paths, and add automated template-escape checks in CI.
    • Apply a Content Security Policy that disallows inline script, as defense-in-depth against any residual XSS.
    • Reduce the low-privilege posture: require approval or moderation for first-time posters and limit which roles can publish rich content.
    • Keep Moodle core and plugins on a supported release with prompt security updates, and subscribe to the project's security announcements.

References

  1. NVD — CVE-2026-102581: https://nvd.nist.gov/vuln/detail/CVE-2026-102581
  2. MITRE CWE-79 — Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting'): https://cwe.mitre.org/data/definitions/79.html
  3. MITRE ATT&CK T1059.007 — Command and Scripting Interpreter: JavaScript: https://attack.mitre.org/techniques/T1059/007/
  4. Moodle security announcements (track for the vendor advisory and fixed version): https://moodle.org/security/
  5. FIRST.org EPSS (no score available for this CVE at the time of writing): https://www.first.org/epss/

No threat actor campaign, exploit-in-the-wild evidence, public PoC, or CISA KEV listing was identified for CVE-2026-102581 in the available intelligence.

👁️ 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.

product:"Moodle"
title:"Moodle"

💣 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-102581/ · 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.