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-2026-101914

CVE-2026-101914: Authorization Bypass via Case-Insensitive Path Matching in @grpc/grpc-js-xds

Amit Schendel
Amit Schendel
Senior Security Researcher

Sep 28, 2026·6 min read·3 visits

Executive Summary (TL;DR)

A logical error in the @grpc/grpc-js xDS path matcher applies a prefix match instead of an exact match when case-insensitive comparison is enabled. This allows clients to bypass RBAC policies and access restricted service endpoints that share a prefix with authorized endpoints.

An authorization bypass vulnerability exists in the @grpc/grpc-js Node.js package (specifically within the xDS plugin wrapper @grpc/grpc-js-xds) due to a logical error in its Role-Based Access Control (RBAC) path matching component. When case-insensitive path matching is enabled, the matching logic performs a prefix comparison using the startsWith method instead of a strict equality comparison. This logic flaw allows unauthenticated or low-privilege clients with access to a shorter path to gain unauthorized access to longer, more privileged method names that share the same prefix.

Vulnerability Overview

The @grpc/grpc-js library is a pure JavaScript implementation of the gRPC protocol for Node.js. In microservices architectures, authorization is frequently managed via xDS-based Role-Based Access Control (RBAC) policies, which are parsed and enforced by the @grpc/grpc-js-xds plugin. This component is responsible for examining incoming remote procedure calls (RPCs) and ensuring that clients possess the correct permissions to execute requested methods.

Within this architecture, exact path matching represents a critical mechanism for limiting access to specific gRPC endpoints. Paths are defined hierarchically in the format /ServiceName/MethodName. The vulnerability lies in the logical verification of these paths when processing rules that specify case-insensitive matching.

The attack surface is exposed to any network client capable of sending gRPC requests to an endpoint that relies on the @grpc/grpc-js-xds component for RBAC. Exploitation does not require authentication to the target service if the underlying RBAC rule relies on case-insensitive exact matching to grant permissions.

Root Cause Analysis

The root cause of this vulnerability is a logical flaw classified as CWE-187 (Partial String Comparison) and CWE-863 (Incorrect Authorization). In @grpc/grpc-js-xds, the exact path matching logic is implemented within the PathExactValueMatcher class inside packages/grpc-js-xds/src/matcher.ts. This class handles evaluations of incoming RPC paths against configured authorization policies.

When a policy demands an exact match, the evaluator is designed to perform a strict string comparison. However, the implementation branches based on whether the matching rule is case-sensitive. If caseInsensitive is false, the engine correctly performs a strict equality comparison using the identity operator.

When caseInsensitive is true, the engine attempts to normalize the strings using the JavaScript toLowerCase() method. Instead of applying a strict equality check to the normalized strings, the code invokes the startsWith() method. This implementation error changes the behavior from an exact match to a prefix match, validating any incoming path that begins with the target value defined in the policy.

Code Analysis

An analysis of the vulnerable codebase in packages/grpc-js-xds/src/matcher.ts reveals the precise code path responsible for the comparison error. The implementation of the apply method in PathExactValueMatcher was written as follows before the patch:

export class PathExactValueMatcher {
  // ...
  apply(value: string) {
    if (this.caseInsensitive) {
      // VULNERABLE: Performs a prefix check instead of a strict equality check
      return value.toLowerCase().startsWith(this.targetValue.toLowerCase());
    } else {
      // CORRECT: Performs a strict equality check
      return value === this.targetValue;
    }
  }
}

Because of the startsWith() call, an incoming string value such as /myService.Service/MethodSecret matches a policy path of /myService.Service/Method because the prefix matches perfectly. The security patch resolves this discrepancy by replacing the prefix evaluation with a strict equality comparison of the lowercased strings:

export class PathExactValueMatcher {
  // ...
  apply(value: string) {
    if (this.caseInsensitive) {
      // FIXED: Performs case-insensitive strict equality check
      return value.toLowerCase() === this.targetValue.toLowerCase();
    } else {
      return value === this.targetValue;
    }
  }
}

The fix is complete and robust against basic prefix-matching bypass vectors. However, developers should be aware that JavaScript toLowerCase() does not account for complex Unicode case folding. While standard gRPC paths are limited to ASCII, any implementations utilizing non-ASCII characters in route configurations could theoretically experience normalization discrepancies.

Exploitation Methodology

Exploitation of CVE-2026-101914 requires specific configuration prerequisites on the target gRPC server. The target server must employ xDS-based RBAC policies, contain at least one rule using case_insensitive: true for an exact path matcher, and host service endpoints where one method name serves as a prefix to another more restrictive method.

Consider a deployment where a low-privilege client is authorized to access the /Service/Check method. The server also hosts a highly privileged administrative method named /Service/CheckAdmin. The RBAC policy uses case-insensitive exact matching to authorize access to /Service/Check.

An attacker sends a gRPC request targeting /Service/CheckAdmin. The RBAC engine intercepting the request evaluates the path against the policy. Because of the bug, the evaluation /service/checkadmin.startsWith(/service/check) returns true. The server then executes /Service/CheckAdmin, granting the attacker unauthorized access to administrative functionality.

Impact Assessment

The overall security impact of this vulnerability is calculated at a CVSS 3.1 Base Score of 6.5 (Medium). The attack vector is Network, and complexity is rated as High due to the specific naming and policy configurations required to trigger the exploit.

When successfully exploited, the integrity of the application is severely compromised because attackers can perform actions they are not authorized to execute. The confidentiality impact is rated as Low because the primary outcome is unauthorized function execution, though this execution may leak state or data. The availability impact is rated as None because the logical flaw does not directly cause application crashes or resource depletion.

This vulnerability is particularly significant in microservices environments that utilize a single gRPC server interface to handle both public and internal endpoints. Bypassing service mesh security boundaries at the gRPC transport layer allows attackers to bypass lateral movement protections and access backend administrative controls.

Remediation and Mitigation

To fully remediate CVE-2026-101914, administrators and developers must update their @grpc/grpc-js and @grpc/grpc-js-xds dependencies to patched versions. The official fixes are backported and released in multiple release streams.

For systems running on the 1.13.x release line, the package must be upgraded to version 1.13.1 or higher. For systems running on the 1.14.x release line, the package must be upgraded to version 1.14.1 or higher.

If upgrading dependencies is not immediately viable, the vulnerability can be mitigated by disabling case-insensitive matching in the xDS control plane configurations. Setting case_insensitive to false in RBAC policies ensures the engine executes the strict equality code branch. Additionally, services can be refactored to eliminate naming overlaps where one method name is a prefix of another.

Official Patches

gRPC Node RepositoryFix exact path matching prefix error patch

Fix Analysis (3)

Technical Appendix

CVSS Score
6.5/ 10
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:H/A:N

Affected Systems

Node.js applications running pure JavaScript gRPC deploymentsSystems utilizing xDS-based RBAC policies with case-insensitive matching enabled in @grpc/grpc-js-xds

Affected Versions Detail

Product
Affected Versions
Fixed Version
@grpc/grpc-js
gRPC
< 1.13.11.13.1
@grpc/grpc-js
gRPC
>= 1.14.0, < 1.14.11.14.1
AttributeDetail
CWE IDCWE-187
Attack VectorNetwork
CVSS v3.1 Score6.5
Confidentiality ImpactLow
Integrity ImpactHigh
Exploit StatusPoC available
KEV StatusNot listed

MITRE ATT&CK Mapping

T1068Exploitation for Privilege Escalation
Privilege Escalation
CWE-187
Partial String Comparison

The software performs a string comparison that only evaluates a portion of the strings, such as checking if one string starts with another, instead of verifying the entire contents of both strings.

Vulnerability Timeline

Vulnerability patched in master and release branches by maintainers
2026-08-17
GitHub Security Advisory GHSA-88h9-xgvx-hvf2 published and CVE-2026-101914 assigned
2026-09-28

References & Sources

  • [1]GitHub Security Advisory GHSA-88h9-xgvx-hvf2
  • [2]CVE-2026-101914 Mitre Record
  • [3]Release tag for version 1.13.1
  • [4]Release tag for version 1.14.1

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

•7 minutes ago•CVE-2026-83557
5.6

CVE-2026-83557: Polymorphic Deserialization Bypass in FasterXML jackson-databind via java.lang.Comparable

An incomplete denylist vulnerability in FasterXML jackson-databind's DefaultBaseTypeLimitingValidator allows unauthenticated remote attackers to bypass polymorphic type limitations. By declaring properties of type java.lang.Comparable, attackers can instantiate arbitrary Comparable subclasses on the classpath, leading to path traversal, local file access, or application-specific state manipulation.

Alon Barad
Alon Barad
0 views•6 min read
•about 6 hours ago•CVE-2026-61834
4.3

CVE-2026-61834: Prototype Pollution and Mutation of Inherited Built-in Method Objects in scim-patch

A vulnerability in the scim-patch library allows authenticated users to pollute the global JavaScript execution environment. By transmitting a SCIM PATCH operation targeting inherited built-in methods, such as toString, valueOf, or hasOwnProperty, attackers bypass blocklist filters and mutate global prototype objects. This flaw occurs due to the library relying on standard prototype lookup and the 'in' operator during path-resolution and assignment, resolving to shared native functions instead of treating them as missing own-properties.

Alon Barad
Alon Barad
6 views•6 min read
•about 7 hours ago•GHSA-456V-XQ2P-R4CJ
7.8

GHSA-456V-XQ2P-R4CJ: OS Command Injection in code-ollama grep_search Tool

An OS command injection vulnerability in the grep_search tool of the code-ollama package allows remote code execution. This vulnerability is triggered when a local client executes the CLI against a malicious or compromised Ollama server. Due to grep_search being classified as a read-only tool, the CLI executes it automatically in Plan mode without human-in-the-loop validation, leading to zero-interaction local system compromise.

Amit Schendel
Amit Schendel
7 views•5 min read
•about 7 hours ago•CVE-2026-76460
10.0

CVE-2026-76460: Cisco Identity Services Engine Authentication Bypass Vulnerability

On September 16, 2026, Cisco disclosed a critical authentication bypass vulnerability affecting Cisco Identity Services Engine (ISE) and Cisco ISE Passive Identity Connector (ISE-PIC). This vulnerability allows unauthenticated, remote attackers to bypass the administrative interface controls and execute privileged API requests. Due to active exploitation in the wild, the Cybersecurity and Infrastructure Security Agency (CISA) added this vulnerability to the Known Exploited Vulnerabilities (KEV) Catalog with an immediate remediation deadline.

Alon Barad
Alon Barad
16 views•4 min read
•3 days ago•CVE-2026-53493
6.9

CVE-2026-53493: Uncontrolled Resource Consumption in containerd Image-Pull Descriptor Graph Resolution

containerd is an open-source container runtime. Prior to versions 1.7.36, 2.0.13, 2.2.9, 2.3.6, and 2.4.1, a crafted OCI index graph can force very high CPU/memory usage during PullImage (before container start), causing long ContainerCreating stalls and, at larger sizes, node/runtime instability. The vulnerability occurs because containerd's image-pull descriptor graph resolution handlers processed OCI image indices and manifests recursively without enforcing boundaries on traversal depth or breadth, and without maintaining a global visited registry to count duplicate references.

Alon Barad
Alon Barad
35 views•6 min read
•3 days ago•GHSA-62MM-XWMV-CRHG
7.5

GHSA-62MM-XWMV-CRHG: Unauthenticated Path Traversal in Khoj Static File Serving Endpoint

An unauthenticated path traversal vulnerability exists in the Khoj AI assistant platform via the static file serving endpoint `/home/{file_path:path}`. Due to improper path sanitization when handling user input with Python's pathlib module, a remote attacker can read arbitrary files from the server's filesystem.

Alon Barad
Alon Barad
13 views•5 min read