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-105795

CVE-2026-105795: Unvalidated Custom Extension Path Traversal in Microsoft Kiota

Alon Barad
Alon Barad
Software Engineer

Oct 7, 2026·6 min read·0 visits

Executive Summary (TL;DR)

Microsoft Kiota versions 1.25.1 to < 1.35.0 fail to validate the `oauth_card_path` parameter in custom OpenAPI extensions. An attacker can supply a malicious OpenAPI document to generate a compromised plugin manifest containing directory traversal segments, absolute paths, or external URIs, causing downstream execution hosts to access unauthorized files or external servers.

CVE-2026-105795 (GHSA-6gw6-rv2g-25mg) is a critical path traversal vulnerability in Microsoft Kiota, an OpenAPI-based HTTP client and plugin manifest generator. In affected versions (1.25.1 to < 1.35.0), Kiota propagates the unvalidated `x-ai-capabilities.response_semantics.oauth_card_path` vendor extension directly into generated API plugin manifests, leading to potential path traversal exploitation by downstream consumers.

Vulnerability Overview

Microsoft Kiota is an OpenAPI-based client and plugin generator designed to compile OpenAPI descriptions into reusable software libraries and plugin manifests. Among its functions is the generation of declarative API plugin manifests, which downstream hosts like Microsoft Copilot or Teams resolve to run plugins dynamically. The attack surface centers on Kiota's parser when processing custom OpenAPI extensions starting with the prefix x-ai-capabilities.

During the manifest construction process, Kiota attempts to extract declarative configuration metadata. Specifically, it parses the response_semantics mapping, which includes an optional field known as oauth_card_path. This field points to adaptive cards or OAuth flow configurations used by the plugin runtime during authorization phases.

In vulnerable versions of Kiota, the generator accepts and serializes this property without running security checks or path normalization. The security boundary is breached because the code generation engine implicitly trusts the OpenAPI specification, compiling traversal sequences or external resources directly into the manifest. Downstream integration engines then ingest these manifests and can be forced to break containment boundaries, exposing local files or contacting remote servers.

Root Cause Analysis

The root cause of this vulnerability lies in the lack of input validation and serialization logic inside src/Kiota.Builder/Plugins/PluginsGenerationService.cs. Prior to version 1.35.0, the PluginsGenerationService extracted the OauthCardPath string from parsed OpenAPI documents and directly assigned it to the generated object instance.

No checks were performed to see if the value contained directory traversal sequences (such as ..), absolute directory pathways (such as /etc/ or C:\), or network URIs (such as http:// or \\UNC\). Because Kiota acts as an intermediate compiler, it does not access the file paths during compilation. This design decision caused developers to overlook the security implications of storing raw paths in the output.

When Kiota outputs the generated plugin manifest JSON, the unvalidated path is embedded as an official configuration attribute. The responsibility of resolving this path is shifted to the downstream execution host. When the host environment parses the generated manifest and executes file lookup actions relative to the plugin directory, it processes the malicious traversal sequence.

Code Analysis and Patch Walkthrough

The vulnerability was mitigated in version 1.35.0 via Pull Request #8055, applying a security check before property serialization. The patch introduces a helper validation method, ExtensionResponseSemanticsStaticTemplate.IsSafeFileReference, to ensure path references do not violate containment boundaries.

Below is the comparison of the vulnerable codebase against the patched version in src/Kiota.Builder/Plugins/PluginsGenerationService.cs:

// VULNERABLE CODE (Kiota < 1.35.0)
// The raw string was assigned directly to the output object without sanitization
responseSemantics.OAuthCardPath = capabilities.ResponseSemantics.OauthCardPath;
// PATCHED CODE (Kiota >= 1.35.0)
// The generation engine now validates the presence of oauthCardPath
if (capabilities.ResponseSemantics.OauthCardPath is { } oauthCardPath)
{
    // Check if the path points outside the manifest directory or contains URIs
    if (ExtensionResponseSemanticsStaticTemplate.IsSafeFileReference(oauthCardPath))
    {
        responseSemantics.OAuthCardPath = oauthCardPath;
    }
    else
    {
        // Unsafe references are dropped, and a warning is emitted to logs
        LogUnsafeOAuthCardPathFileReference(logger, oauthCardPath);
    }
}

The validation routine IsSafeFileReference ensures the value does not contain absolute structures, Windows UNC paths, or parent directory markers. The implementation of LogUnsafeOAuthCardPathFileReference registers a warning stating that oauth_card_path must be a relative path that does not point outside the manifest package structure.

Exploitation Methodology

To exploit this vulnerability, an attacker must supply a compromised OpenAPI document to a user compiling an API plugin manifest with Kiota. This can happen through shared repository specifications, public API catalogs, or social engineering.

An attacker crafts an OpenAPI spec containing a path traversal sequence in the oauth_card_path property of the x-ai-capabilities extension. Below is a structural example of a malicious specification:

openapi: 3.0.0
info:
  title: Traversal Exploit Specification
  version: 1.0
paths:
  /api/v1/auth:
    get:
      operationId: triggerAuth
      x-ai-capabilities:
        response_semantics:
          data_path: $.data
          oauth_card_path: '../../../../../../etc/passwd'
      responses:
        '200':
          description: Success

When a developer processes this document using a vulnerable version of Kiota (e.g., kiota generate --plugin openapi), Kiota writes the value directly to the output. The resulting manifest file contains the payload:

{
  "capabilities": {
    "response_semantics": {
      "data_path": "$.data",
      "oauth_card_path": "../../../../../../etc/passwd"
    }
  }
}

If the generated manifest is loaded into a downstream environment that executes file lookups relative to the plugin root without enforcing canonical path boundaries, the host reads and exposes the targeted system file.

Downstream Security Impact

The impact of CVE-2026-105795 depends heavily on the privilege level and configuration of the downstream host processing the generated manifest. In an insecure environment, an attacker can achieve local file disclosure or force unauthorized network interactions.

Under POSIX-compliant systems, directory traversal payloads can target files like /etc/passwd or application configuration files. On Windows-based systems, attackers can target registry configurations or system files using absolute path syntax or drive-letter prefixes. If a Windows host processes a UNC path payload (e.g., \\attacker-server\share\card.json), the host may attempt an SMB connection, leaking NetNTLM credentials to an external server.

Furthermore, if the host environment accepts URI schemes, an attacker could supply an HTTP or HTTPS link, leading to Server-Side Request Forgery (SSRF). This would allow the downstream service to fetch card configurations from arbitrary internet hosts, potentially executing secondary payloads.

Remediation and Defensive Engineering

Remediation of CVE-2026-105795 requires updating the Kiota builder toolchain and implementing defensive validation policies. Organizations utilizing Kiota must upgrade their CLI tools and NuGet dependencies to version 1.35.0 or higher.

To update the Kiota CLI globally, execute the following dotnet command:

dotnet tool update -g Microsoft.OpenApi.Kiota

For projects consuming Kiota as a C# library, edit your .csproj file to ensure that dependencies for Microsoft.OpenApi.Kiota and Microsoft.OpenApi.Kiota.Builder are set to 1.35.0 or greater.

In addition, downstream host systems must implement defense-in-depth measures. Run-time environments should never trust paths declared in manifest files. Runtimes must canonicalize all paths using platform-specific APIs and verify that the target path resides strictly within the sandboxed application directory before initiating file-read operations.

Official Patches

MicrosoftPull Request #8055 introducing safe static template checking logic.

Fix Analysis (1)

Technical Appendix

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

Affected Systems

Microsoft Kiota CLIMicrosoft.OpenApi.Kiota NuGet PackageMicrosoft.OpenApi.Kiota.Builder NuGet Package

Affected Versions Detail

Product
Affected Versions
Fixed Version
Microsoft Kiota CLI
Microsoft
>= 1.25.1, < 1.35.01.35.0
Microsoft.OpenApi.Kiota
Microsoft
>= 1.25.1, < 1.35.01.35.0
Microsoft.OpenApi.Kiota.Builder
Microsoft
>= 1.25.1, < 1.35.01.35.0
AttributeDetail
CWE IDCWE-22
Attack VectorNetwork
CVSS v3.1 Score3.1
EPSS ScoreNot Registered
ImpactLow Integrity Impact, Downstream File Disclosure risk
Exploit StatusProof-of-Concept
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1083File and Directory Discovery
Discovery
T1005Data from Local System
Collection
CWE-22
Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

The application uses external input to construct a pathname that is intended to identify a file or directory that is located under a restricted parent directory, but the application does not properly neutralize special elements within the pathname.

Known Exploits & Detection

GitHub Security AdvisoryInformation regarding replication of path traversal payloads within standard test vectors.

Vulnerability Timeline

Remediation patch submitted via Pull Request #8055.
2026-08-14
Vulnerability publicly disclosed and patch published within Kiota v1.35.0.
2026-10-06

References & Sources

  • [1]Official Microsoft Kiota Security Advisory
  • [2]Fix Commit (fc0f219)
  • [3]Kiota Version 1.35.0 Release Details
  • [4]NVD CVE-2026-105795 Record

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 2 hours ago•CVE-2026-105805
6.9

CVE-2026-105805: Sorting-Based Side-Channel Information Disclosure in Payload CMS

CVE-2026-105805 is an authorization bypass and information disclosure vulnerability in Payload CMS. Before version 3.88.0, user-controlled sorting was executed at the database level before field-level access control rules and data redaction were applied. This allowed unauthorized users to reconstruct restricted field values through a sorting side-channel.

Alon Barad
Alon Barad
3 views•6 min read
•about 3 hours ago•CVE-2026-105847
7.1

CVE-2026-105847: Information Disclosure via Polymorphic Join Queries in Payload CMS

Payload CMS is subject to an information disclosure vulnerability where users with query permissions can bypass field-level access controls. By leveraging polymorphic join filters, an attacker can perform blind-inference queries to retrieve restricted or hidden fields such as password reset tokens.

Amit Schendel
Amit Schendel
3 views•6 min read
•about 4 hours ago•CVE-2026-105846
6.1

CVE-2026-105846: Open Redirect in Payload CMS via Control Character Bypass

An open redirect vulnerability exists in Payload CMS within its Next.js-based authentication routing components. The sanitization utility fails to properly account for control characters and ambiguous encodings, allowing unauthenticated attackers to redirect users to external malicious domains after successful authentication.

Alon Barad
Alon Barad
4 views•6 min read
•about 5 hours ago•CVE-2026-105845
9.8

CVE-2026-105845: SQL Injection and Access Control Bypass in Payload CMS Adapters via Case-Sensitivity Flaws and Sorting

A critical SQL Injection and access control bypass vulnerability was identified in Payload CMS database adapters (SQLite and PostgreSQL using Drizzle ORM internally). The vulnerability arises from case-sensitive logical operator checks during path validation and unvalidated sort queries. This allows remote attackers to bypass access control rules, execute unauthorized queries, and retrieve sensitive data through blind SQL injection side channels.

Alon Barad
Alon Barad
6 views•7 min read
•about 6 hours ago•CVE-2026-105844
9.3

CVE-2026-105844: Remote Code Execution via Prototype Pollution in @payloadcms/plugin-import-export

A critical prototype pollution vulnerability in the import-export plugin of Payload CMS allows unauthenticated remote attackers to bypass access controls and achieve remote code execution.

Alon Barad
Alon Barad
4 views•6 min read
•about 7 hours ago•CVE-2026-105806
8.6

CVE-2026-105806: Privilege Escalation and Missing Authorization in @payloadcms/plugin-mcp

CVE-2026-105806 is an improper access control vulnerability within the Model Context Protocol (MCP) plugin for Payload CMS. Authenticated users with low privileges can manipulate API key creation and mapping to associate keys with arbitrary users, including administrators. This allows total session takeovers and privilege escalation via MCP-authenticated API requests.

Alon Barad
Alon Barad
10 views•5 min read