☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 8.2 🐛 CWE-80
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2024-23841

CVE-2024-23841 XSS in apollo-client-nextjs
📅 PUBLISHED: 2024-01-30 17:14 UTC 🔄 UPDATED: 2026-09-23 20:15 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent sources confirm 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.39%
👁️
0.39% probability
9.6× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Patch available — upgrade to latest release
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
8.2
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-23841 is a Cross-Site Scripting (XSS) vulnerability in the @apollo/experimental-apollo-client-nextjs NPM package, which provides Apollo Client support for the Next.js App Router. An attacker can exploit this by injecting malicious input (e.g., via a crafted link) or by having a GraphQL server return malicious data (e.g., from a compromised database). The vulnerability is rated with a CVSS score of 8.2 (High) and affects all versions prior to 0.7.0. The EPSS score is 0.0%, indicating low exploitation likelihood at this time, but the risk remains significant due to the potential for data theft and session hijacking.

⚡ 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

Supply Chain & Package Security

This vulnerability resides in an NPM package (@apollo/experimental-apollo-client-nextjs). Organizations using this package in their Next.js applications are at risk. The attack vector includes both direct user interaction (e.g., clicking a malicious link) and indirect supply chain compromise (e.g., a malicious GraphQL server response). To mitigate supply chain risk, ensure all dependencies are pinned to patched versions and regularly audit for known vulnerabilities using tools like npm audit or Snyk.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:N
  • Base Score: 8.2 (High)
  • Attack Vector: Network (AV:N)
  • Attack Complexity: Low (AC:L)
  • Privileges Required: None (PR:N)
  • User Interaction: Required (UI:R) – victim must click a link or visit a page
  • Scope: Changed (S:C) – vulnerable component impacts resources beyond its security scope
  • Confidentiality Impact: High (C:H) – potential for data theft
  • Integrity Impact: Low (I:L) – limited ability to modify data
  • Availability Impact: None (A:N)

Threat Level: High. Although EPSS is 0.0%, the vulnerability is in a widely-used library and can be triggered via user interaction or server-side data injection.

Deep Dive & Mechanics

The vulnerability stems from improper sanitization of user-controlled data when rendering GraphQL responses in the Next.js App Router. The @apollo/experimental-apollo-client-nextjs package fails to escape or validate data before inserting it into the DOM, allowing an attacker to execute arbitrary JavaScript in the context of the victim's browser.

Attack Scenarios:

  1. Direct Injection: An attacker crafts a URL with malicious query parameters that are reflected in the page without sanitization.
  2. Server-Side Injection: An attacker compromises a GraphQL server (or injects malicious data into a database) that returns payloads in responses. When the client renders these responses, the XSS triggers.

The vulnerability is classified under CWE-79 (Improper Neutralization of Input During Web Page Generation). The fix in version 0.7.0 likely involves proper encoding of output or using React's built-in XSS protections (e.g., dangerouslySetInnerHTML avoidance).

Vulnerable vs. Patched Code

Vulnerable Code (pre-0.7.0):

// Example of unsafe rendering
function UserProfile({ data }) {
  return <div>{data.user.bio}</div>; // No sanitization
}

Patched Code (0.7.0+):

// Example of safe rendering
import DOMPurify from 'dompurify';
function UserProfile({ data }) {
  const sanitizedBio = DOMPurify.sanitize(data.user.bio);
  return <div>{sanitizedBio}</div>; // Sanitized
}

The patch ensures that any user-controlled data is sanitized before being rendered, preventing script injection.

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • A Next.js application using @apollo/experimental-apollo-client-nextjs version < 0.7.0.
  • Ability to inject malicious input (e.g., via URL parameter or GraphQL query).

Exploit Payload Example:

<script>alert('XSS')</script>

Step-by-Step:

  1. Identify a vulnerable endpoint that renders user input (e.g., a search field or user profile).
  2. Inject the payload via URL: https://vulnerable-app.com/search?q=<script>alert('XSS')</script>
  3. Alternatively, if you control a GraphQL server, return a response with malicious data in a field that is rendered unsanitized.

Note: No public exploit code is available at this time.

Blue Team (Detection & Defense)

Detection:

  • Monitor for unusual URL parameters containing <script> tags or event handlers (e.g., onerror, onload).
  • Use Web Application Firewalls (WAF) to block common XSS patterns.
  • Implement Content Security Policy (CSP) headers to restrict script execution.

Defense:

  • Immediately upgrade to version 0.7.0 or later.
  • Sanitize all user inputs and GraphQL responses using libraries like DOMPurify.
  • Conduct code reviews to ensure no dangerouslySetInnerHTML usage without sanitization.

Indicators of Compromise (IOCs)

  • Network: HTTP requests containing <script> tags in query parameters or POST bodies.
  • Logs: JavaScript errors or unexpected alert() calls in browser console.
  • File: Presence of @apollo/experimental-apollo-client-nextjs version < 0.7.0 in package.json.
  • Behavior: Unauthorized data exfiltration via fetch() or XMLHttpRequest to attacker-controlled domains.

Detection Engineering

YARA Rule

rule CVE_2024_23841_XSS {
    meta:
        description = "Detects vulnerable @apollo/experimental-apollo-client-nextjs package"
        author = "Valters IT"
        date = "2024-01-01"
        reference = "CVE-2024-23841"
    strings:
        $package = "@apollo/experimental-apollo-client-nextjs"
        $version = /"version":\s*"0\.[0-6]\.\d+"/
    condition:
        $package and $version
}

Sigma Rule

title: CVE-2024-23841 XSS Attempt
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects potential XSS attempts targeting @apollo/experimental-apollo-client-nextjs
logsource:
    category: webserver
    product: apache
detection:
    selection:
        c-uri|contains:
            - '<script>'
            - 'onerror='
            - 'onload='
    condition: selection
falsepositives:
    - Legitimate use of script tags in documentation
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2024-23841 XSS Attempt"; flow:to_server,established; content:"<script>"; http_uri; classtype:web-application-attack; sid:1000001; rev:1;)

Remediation & Mitigation

  1. Immediate: Upgrade to @apollo/experimental-apollo-client-nextjs version 0.7.0 or later.
  2. Short-term: Implement Content Security Policy (CSP) headers to restrict script execution.
  3. Long-term: Adopt secure coding practices, including input validation and output encoding. Use static analysis tools to detect XSS vulnerabilities.
  4. Monitoring: Deploy WAF rules to block common XSS payloads and monitor logs for suspicious activity.

Valters IT Signature:
This report was generated by Valters IT DevSecOps AI. For questions, contact security@valters-it.com.

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