CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2024-37155

CVE-2024-37155: Security Bypass in OpenCTI GraphQL Introspection via Whitespace and Control Character Manipulation

Amit Schendel
Amit Schendel
Senior Security Researcher

Jun 22, 2026·5 min read·50 visits

Executive Summary (TL;DR)

A flaw in OpenCTI's custom validation plugin allows unauthenticated attackers to bypass GraphQL schema introspection restrictions by modifying whitespaces and control characters, exposing the full database schema.

OpenCTI versions prior to 6.1.9 fail to properly restrict GraphQL schema introspection queries due to a weak pattern-matching implementation. An unauthenticated attacker can bypass the introspection block list by stripping whitespace and carriage returns, enabling complete reconnaissance of the GraphQL schema.

Vulnerability Overview

OpenCTI is an open-source cyber threat intelligence platform that utilizes a GraphQL API backend to manage and query threat data and observables. By default, GraphQL APIs expose a feature known as schema introspection, which allows clients to query information about the API's schema itself. Because this can expose internal data structures and sensitive API capabilities, organizations frequently restrict introspection to authenticated administrators.

To enforce this restriction, OpenCTI implemented a custom validation mechanism named secureIntrospectionPlugin within its Apollo Server initialization. This plugin intercepts incoming HTTP POST requests directed at the /graphql endpoint and inspects the raw query payload. If it detects signatures associated with introspection, it rejects the request for unauthenticated users.

However, prior to version 6.1.9, this validation relied on a naive string blacklist. This report analyzes how attackers can easily bypass this filter using formatting tricks, the security implications of such leaks, and the technical drawbacks of the vendor's patch.

Root Cause Analysis

The root cause of CVE-2024-37155 lies in a fundamental mismatch between how the validation plugin matches text and how the GraphQL parser interprets it. The secureIntrospectionPlugin attempted to block introspection by searching for specific string sequences like __schema { or __schema(. This regex-like string-inclusion check assumes that all clients format their requests using standard white spacing and indentation rules.

In contrast, the GraphQL specification defines a grammar where white space, carriage returns, and line feeds function merely as separators and are largely ignored during the lexical analysis phase. Consequently, a query string that omits spaces entirely, such as __schema{, is syntactically valid and executes perfectly on the backend parser. The custom validation plugin, however, fails to match this string because it lacks the expected space character.

Furthermore, an attacker can insert alternative control characters or inline comments to disrupt the static string verification. For example, injecting a line break, a carriage return (\r\n), or an inline comment like # comment between the type definition and the opening bracket will completely bypass the block list. The validation layer reads these as non-matching strings, whereas the downstream Apollo Server strips them and processes the introspection command successfully.

Code Analysis & Patch Evaluation

In the vulnerable codebase of OpenCTI, the secureIntrospectionPlugin was declared in opencti-graphql/src/graphql/graphql.js. The plugin defined introspectionPatterns as an array of four specific string sequences: ['__schema {', '__schema(', '__type {', '__type(']. The application then evaluated incoming requests using introspectionPatterns.some((pattern) => request.query.includes(pattern)).

The patch committed in f87d96918c63b0c3d3ebfbea6c789d48e2f56ad5 attempted to correct this by modifying the pattern matching array to check for the raw strings directly: ['__schema', '__type'].some((pattern) => request.query.includes(pattern)). While this eliminates the whitespace bypass vector, it introduces a risk of false positives. Legitimate queries containing these substrings as arguments or values will be incorrectly blocked.

There is also a structural fragility in this implementation. The plugin directly accesses request.query.includes(). If Automatic Persisted Queries (APQ) are enabled, the client transmits only a SHA-256 hash instead of the raw query body. In this scenario, request.query is evaluated as undefined, causing the node process to throw a TypeError and crash, resulting in a potential Denial of Service vulnerability.

Exploitation Methodology

Exploitation of this vulnerability requires no authentication and can be performed with standard command-line tools. An attacker begins by sending a baseline introspection request formatted with standard spacing. The server intercepts this query and returns a 403 ForbiddenAccess error indicating that the request is not authorized.

To execute the bypass, the attacker reformats the request payload to strip all whitespace between the GraphQL keywords and their arguments. For example, replacing the standard sequence __schema { with __schema{ prevents the custom validator from triggering. The request bypasses the validation plugin entirely and reaches the schema interpreter.

The GraphQL parser successfully resolves this compressed string and executes the introspection query. The server then responds with a complete JSON representation of the schema. This exposes all available types, queries, mutations, and fields to the unauthenticated client.

Security Impact Assessment

The primary impact of a schema introspection bypass is comprehensive information disclosure. By dumping the GraphQL schema, an unauthenticated attacker maps out the entire data model of the OpenCTI deployment. This includes hidden administrative fields, experimental queries, and the structural relationships of threat intelligence data.

Additionally, exposure of the schema highlights specific mutation points. This allows attackers to identify potential input parameters and design targeted exploitation payloads for other vulnerabilities, such as injection points or privilege escalation pathways. The leaked metadata significantly reduces the effort required to conduct sophisticated, multi-stage attacks against the application.

From an operational perspective, repeated execution of complex introspection queries can exhaust server CPU and memory resources. Attackers can weaponize these large, nested queries to orchestrate application-layer Denial of Service attacks. Given these factors, the CVSS base score is calculated at 6.5, reflecting partial confidentiality and availability impacts.

Remediation & Detection Guidance

The primary remediation strategy is upgrading the OpenCTI platform to version 6.1.9 or later. This replaces the flawed string validation array with a more inclusive filter. To ensure absolute protection, organizations should verify that the backend configuration has PLAYGROUND_ENABLED set to false in production environments.

A more robust programmatical solution is to avoid custom string-matching validation plugins entirely. Instead, developers should rely on native Abstract Syntax Tree (AST) validation rules. Implementing the NoSchemaIntrospectionCustomRule provided by the standard graphql package ensures that introspection requests are blocked safely regardless of request formatting or whitespace encoding.

For immediate network-level mitigation, Web Application Firewalls (WAF) can be configured to inspect payloads destined for /graphql. Rules should match the regular expressions __schema or __type on any unauthenticated requests. Security Operations Centers should also monitor application logs for unhandled TypeError exceptions associated with the GraphQL plugin.

Official Patches

OpenCTI-PlatformGitHub Security Advisory GHSA-4mvw-j8r9-xcgc

Fix Analysis (1)

Technical Appendix

CVSS Score
6.5/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:L
EPSS Probability
0.44%
Top 65% most exploited

Affected Systems

OpenCTI Platform (backend GraphQL service)

Affected Versions Detail

Product
Affected Versions
Fixed Version
opencti
Citeum
< 6.1.96.1.9
AttributeDetail
CWE IDCWE-284
Attack VectorNetwork
CVSS v3.1 Score6.5
EPSS Score0.00442
ImpactPartial Confidentiality, Partial Availability
Exploit Statuspoc
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1592Gather Victim Host Information
Reconnaissance
T1082System Information Discovery
Discovery
CWE-284
Improper Access Control

Improper Access Control occurs when software does not restrict or incorrectly restricts access to a resource from an unauthorized actor.

Vulnerability Timeline

Code patch committed to OpenCTI GitHub repository
2024-06-06
GitHub Security Advisory GHSA-4mvw-j8r9-xcgc published
2024-11-18
CVE-2024-37155 assigned and published to NVD
2024-11-18

References & Sources

  • [1]Vulnerable Source File in OpenCTI Repository
  • [2]OpenCTI Official Commit Fix
  • [3]CVE-2024-37155 Record on CVE.org
  • [4]NVD Vulnerability Details
  • [5]Wiz Vulnerability Database Overview

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 1 hour ago•GHSA-H4MF-4V27-HGGJ
7.4

GHSA-H4MF-4V27-HGGJ: WebDAV Credential Disclosure via Same-Host HTTPS-to-HTTP Redirect in rclone

A protocol downgrade vulnerability in rclone's WebDAV backend allows sensitive credentials, cookies, and authentication headers to be transmitted in cleartext. This occurs when a remote server redirects an HTTPS request to a plaintext HTTP URL on the same host, which the Go HTTP client default behavior permits without checking the protocol transport layer. This report provides a detailed technical analysis of the root cause, exploit mechanics, patch diff, and remediation strategies.

Amit Schendel
Amit Schendel
1 views•7 min read
•about 2 hours ago•CVE-2026-71312
8.0

CVE-2026-71312: OS Command Injection via Unicode Smart Quote Shell Bypass in rclone SFTP Backend

An incomplete sanitization vulnerability exists in rclone's SFTP backend before version 1.75.0 when performing server-side hashing operations on Windows hosts. Due to PowerShell treating Unicode smart quotes as equivalent to ASCII single quotes, malicious file paths can escape command string delimiters and execute arbitrary commands on the remote system.

Amit Schendel
Amit Schendel
2 views•9 min read
•about 3 hours ago•CVE-2026-59733
8.8

CVE-2026-59733: Path Traversal and Authorization Bypass in Rclone serve restic

A critical path traversal and authorization bypass vulnerability exists in the rclone serve restic command when multi-user isolation is enabled using the --private-repos flag. Due to a middleware desynchronization flaw, authenticated users can access, modify, or delete backup repositories belonging to other tenants.

Alon Barad
Alon Barad
2 views•5 min read
•about 4 hours ago•GHSA-GX4C-2HQX-CW2R
3.1

GHSA-gx4c-2hqx-cw2r: Cleartext Transmission of Sensitive AWS STS Tokens in rclone S3 Backend via Scheme Downgrade Redirects

A logic vulnerability in the rclone S3 backend implementation allows an unauthenticated adjacent-network attacker to intercept temporary AWS STS credentials. During HTTP redirection handling, the application fails to verify whether a protocol scheme change occurred (such as transitioning from HTTPS to HTTP). If a secure request is redirected to an unencrypted endpoint on the same host, rclone continues to forward the highly sensitive X-Amz-Security-Token header in cleartext.

Amit Schendel
Amit Schendel
3 views•6 min read
•about 5 hours ago•CVE-2025-15366
5.9

CVE-2025-15366: Protocol Command Injection in Python CPython imaplib Standard Library

CVE-2025-15366 is a command injection vulnerability in Python's standard imaplib module, occurring due to the improper neutralization of carriage returns (\r), line feeds (\n), and null bytes (\x00). When an application passes user-controlled input into standard IMAP library calls, an attacker can break out of the line-oriented protocol context and execute arbitrary IMAP directives with the privileges of the authenticated session.

Amit Schendel
Amit Schendel
9 views•7 min read
•about 5 hours ago•CVE-2026-59732
5.0

CVE-2026-59732: Path Traversal (Zip Slip) Vulnerability in rclone archive extract

A path traversal vulnerability (Zip Slip variant) exists in rclone's archive extract functionality before version 1.74.4. The command fails to sanitize relative directory components in archive headers, allowing files to be written outside the target directory or cloud prefix. This issue can result in arbitrary file writes or cloud object overwrites depending on the permissions of the credentials used. Nick Craig-Wood authored the patch on June 29, 2026, which was released in version 1.74.4 on July 14, 2026. This vulnerability is assigned CVE-2026-59732 and is cataloged as GHSA-4vr5-p2gc-h23p. This report provides a detailed root cause analysis, code-level diff, and remediation steps.

Amit Schendel
Amit Schendel
3 views•8 min read