CVE-2026-73851
Kiota: Path traversal in generated plugin manifest static_template.file reference (percent-encoding bypass)
Kiota is an OpenAPI based HTTP Client code generator. Prior to 1.29.1 and 1.34.0, an attacker who controls or tampers with the OpenAPI description consumed by Kiota can supply a file reference that resolves outside the manifest package (e.g. ../../../../etc/passwd, an absolute path, or a file:// / http(s):// URI). When the generated manifest is deployed and consumed by an AI host, this can lead to inclusion or disclosure of files outside the intended package boundary. This vulnerability is fixed in 1.29.1 and 1.34.0.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Active
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
6.1
Kiota: Path traversal in generated plugin manifest static_template.file reference (percent-encoding bypass)
Kiota is an OpenAPI based HTTP Client code generator. Prior to 1.29.1 and 1.34.0, an attacker who controls or tampers with the OpenAPI description consumed by Kiota can supply a file reference that resolves outside the manifest package (e.g. ../../../../etc/passwd, an absolute path, or a file:// / http(s):// URI). When the generated manifest is deployed and consumed by an AI host, this can lead to inclusion or disclosure of files outside the intended package boundary. This vulnerability is fixed in 1.29.1 and 1.34.0.
- Record
CVE-2026-73851- CVSS 4.0
- 6.1 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N - Weakness
- CWE-22, CWE-829
- Updated
- 2026-11-02
EUVDEUVD-2026-60233
6.1
Kiota is an OpenAPI based HTTP Client code generator. Prior to 1.29.1 and 1.34.0, an attacker who controls or tampers with the OpenAPI description consumed by Kiota can supply a file reference that resolves outside the manifest package (e.g. ../../../../etc/passwd, an absolute path, or a file:// / http(s):// URI). When the generated manifest is deployed and consumed by an AI host, this can lead to inclusion or disclosure of files outside the intended package boundary. This vulnerability is fixed in 1.29.1 and 1.34.0.
- Record
EUVD-2026-60233- CVSS 4.0
- 6.1 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-p5rm-jg5c-8c77
6.1
Microsoft Kiota: Path traversal in generated plugin manifest static_template.file reference (percent-encoding bypass)
Impact
Kiota generates AI plugin manifests from an OpenAPI description. When the description contains an x-ai-capabilities response semantics static_template (or the adaptive-card extension x-ai-adaptive-card), the file reference is written into the generated manifest's response_semantics.static_template.file and is later resolved by the AI host relative to the plugin package.
An attacker who controls or tampers with the OpenAPI description consumed by Kiota can supply a file reference that resolves outside the manifest package (e.g. ../../../../etc/passwd, an absolute path, or a file:// / http(s):// URI). When the generated manifest is deployed and consumed by an AI host, this can lead to inclusion or disclosure of files outside the intended package boundary (CWE-22 Path Traversal, CWE-829 Inclusion of Functionality from an Untrusted Control Sphere).
A mitigation shipped in v1.32.5 (ExtensionResponseSemanticsStaticTemplate.IsSafeFileReference) rejected literal traversal, rooted paths, drive-qualified paths, and absolute URIs. However, that check inspected the raw reference string, so percent-encoded payloads bypassed every check and were still emitted verbatim. Examples that were incorrectly accepted as safe:
| Input | Decodes to |
|-------|-----------|
| %2e%2e/card.json | ../card.json |
| ..%2f..%2f..%2f..%2f..%2f..%2fetc%2fpasswd | ../../../../../../etc/passwd |
| file%3A%2F%2F%2Fetc%2Fpasswd | file:///etc/passwd |
| %2e%2e%2f%2e%2e%2f%2e%2e%2fetc%2fpasswd | ../../../etc/passwd |
Multi-level (double) encoding such as %252e%252e%252fcard.json was also affected. A follow-up review found additional residual bypasses of the same validator: an embedded NUL byte (%00) that truncated the path and defeated the parent-directory segment check, encoding nested deeper than the decode budget (which failed open), and Unicode full-width homoglyphs (e.g. %EF%BC%8E%EF%BC%8E → ..).
Patches
- The percent-encoding bypass is fixed by decoding the reference (bounded multi-pass) before validation: https://github.com/microsoft/kiota/pull/7910
- Residual bypasses (NUL / control characters, decode-budget fail-open, Unicode homoglyphs) are fixed by failing closed on residual encoding, rejecting control characters, and NFKC-folding before validation: https://github.com/microsoft/kiota/pull/7913 (tracking issue https://github.com/microsoft/kiota/issues/7912)
Users should upgrade to the first released Microsoft.OpenApi.Kiota version that includes these fixes (the release following 1.33.0).
Workarounds
- Only generate clients/plugins from trusted OpenAPI descriptions.
- Review generated plugin manifests before deployment and reject any
response_semantics.static_template.filevalue that is not a simple relative path within theadaptiveCards/package folder (no.., no rooted/absolute paths, no URIs, no percent-encoded separators).
References
- CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
- CWE-829: Inclusion of Functionality from an Untrusted Control Sphere
- Affected code:
src/Kiota.Builder/OpenApiExtensions/OpenApiAiCapabilitiesExtension.cs(IsSafeFileReference) and enforcement insrc/Kiota.Builder/Plugins/PluginsGenerationService.cs.
- Record
GHSA-p5rm-jg5c-8c77- CVSS 4.0
- 6.1 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N - Weakness
- CWE-22, CWE-829
- Updated
- 2026-11-02
NVD
6.1
Kiota is an OpenAPI based HTTP Client code generator. Prior to 1.29.1 and 1.34.0, an attacker who controls or tampers with the OpenAPI description consumed by Kiota can supply a file reference that resolves outside the manifest package (e.g. ../../../../etc/passwd, an absolute path, or a file:// / http(s):// URI). When the generated manifest is deployed and consumed by an AI host, this can lead to inclusion or disclosure of files outside the intended package boundary. This vulnerability is fixed in 1.29.1 and 1.34.0.
- Record
CVE-2026-73851- CVSS 4.0
- 6.1 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Weakness
- CWE-22, CWE-829
- Updated
- 2026-11-02
OSV
6.1
Kiota: Path traversal in generated plugin manifest static_template.file reference (percent-encoding bypass)
Kiota is an OpenAPI based HTTP Client code generator. Prior to 1.29.1 and 1.34.0, an attacker who controls or tampers with the OpenAPI description consumed by Kiota can supply a file reference that resolves outside the manifest package (e.g. ../../../../etc/passwd, an absolute path, or a file:// / http(s):// URI). When the generated manifest is deployed and consumed by an AI host, this can lead to inclusion or disclosure of files outside the intended package boundary. This vulnerability is fixed in 1.29.1 and 1.34.0.
- Record
CVE-2026-73851- CVSS 4.0
- 6.1 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N - Weakness
- CWE-22, CWE-829
- Updated
- 2026-11-07
OSVGHSA-p5rm-jg5c-8c77
6.1
Microsoft Kiota: Path traversal in generated plugin manifest static_template.file reference (percent-encoding bypass)
Impact
Kiota generates AI plugin manifests from an OpenAPI description. When the description contains an x-ai-capabilities response semantics static_template (or the adaptive-card extension x-ai-adaptive-card), the file reference is written into the generated manifest's response_semantics.static_template.file and is later resolved by the AI host relative to the plugin package.
An attacker who controls or tampers with the OpenAPI description consumed by Kiota can supply a file reference that resolves outside the manifest package (e.g. ../../../../etc/passwd, an absolute path, or a file:// / http(s):// URI). When the generated manifest is deployed and consumed by an AI host, this can lead to inclusion or disclosure of files outside the intended package boundary (CWE-22 Path Traversal, CWE-829 Inclusion of Functionality from an Untrusted Control Sphere).
A mitigation shipped in v1.32.5 (ExtensionResponseSemanticsStaticTemplate.IsSafeFileReference) rejected literal traversal, rooted paths, drive-qualified paths, and absolute URIs. However, that check inspected the raw reference string, so percent-encoded payloads bypassed every check and were still emitted verbatim. Examples that were incorrectly accepted as safe:
| Input | Decodes to |
|-------|-----------|
| %2e%2e/card.json | ../card.json |
| ..%2f..%2f..%2f..%2f..%2f..%2fetc%2fpasswd | ../../../../../../etc/passwd |
| file%3A%2F%2F%2Fetc%2Fpasswd | file:///etc/passwd |
| %2e%2e%2f%2e%2e%2f%2e%2e%2fetc%2fpasswd | ../../../etc/passwd |
Multi-level (double) encoding such as %252e%252e%252fcard.json was also affected. A follow-up review found additional residual bypasses of the same validator: an embedded NUL byte (%00) that truncated the path and defeated the parent-directory segment check, encoding nested deeper than the decode budget (which failed open), and Unicode full-width homoglyphs (e.g. %EF%BC%8E%EF%BC%8E → ..).
Patches
- The percent-encoding bypass is fixed by decoding the reference (bounded multi-pass) before validation: https://github.com/microsoft/kiota/pull/7910
- Residual bypasses (NUL / control characters, decode-budget fail-open, Unicode homoglyphs) are fixed by failing closed on residual encoding, rejecting control characters, and NFKC-folding before validation: https://github.com/microsoft/kiota/pull/7913 (tracking issue https://github.com/microsoft/kiota/issues/7912)
Users should upgrade to the first released Microsoft.OpenApi.Kiota version that includes these fixes (the release following 1.33.0).
Workarounds
- Only generate clients/plugins from trusted OpenAPI descriptions.
- Review generated plugin manifests before deployment and reject any
response_semantics.static_template.filevalue that is not a simple relative path within theadaptiveCards/package folder (no.., no rooted/absolute paths, no URIs, no percent-encoded separators).
References
- CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
- CWE-829: Inclusion of Functionality from an Untrusted Control Sphere
- Affected code:
src/Kiota.Builder/OpenApiExtensions/OpenApiAiCapabilitiesExtension.cs(IsSafeFileReference) and enforcement insrc/Kiota.Builder/Plugins/PluginsGenerationService.cs.
- Record
GHSA-p5rm-jg5c-8c77- CVSS 4.0
- 6.1 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N - Weakness
- CWE-22, CWE-829
- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
Microsoft.OpenApi.KiotaNuGet |
1.30.0 up to 1.34.0 | 1.34.0 |
Microsoft.OpenApi.KiotaNuGet |
before 1.29.1 | 1.29.1 |
Microsoft.OpenApi.KiotaNuGet |
1.30.0 up to 1.34.0, plus listed versions 1.31.01.31.11.32.01.32.11.32.2 Show 4 moreShow less1.32.31.32.41.32.51.33.0 |
1.34.0 |
Microsoft.OpenApi.KiotaNuGet |
before 1.29.1, plus listed versions 0.1.0-preview0.1.1-preview0.1.2-preview0.1.3-preview0.10.0-preview Show 45 moreShow less0.11.0-preview0.11.1-preview0.2.0-preview0.2.1-preview0.3.0-preview0.4.0-preview0.5.0-preview0.5.1-preview0.6.0-preview0.7.1-preview0.8.3-preview0.9.0-preview1.0.01.0.11.1.01.1.11.1.21.1.31.10.01.10.11.11.01.11.11.12.01.13.01.14.01.15.01.16.01.17.01.18.01.19.01.19.11.2.01.2.11.20.01.21.01.22.01.22.11.22.21.22.31.23.01.24.01.24.11.24.21.24.31.25.1 |
1.29.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| facts | OSV | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-73851 is a medium vulnerability (CVSS 6.1) in Microsoft Kiota, published July 24, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 2.27%, the 83rd percentile. Fixed in Microsoft.OpenApi.Kiota 1.34.0.
References
github.com/microsoft/kiota/security/advisories/GHSA-p5rm-jg5c-8c77
github.com/microsoft/kiota/issues/7912
github.com/microsoft/kiota/pull/7910
github.com/microsoft/kiota/pull/7913
github.com/microsoft/kiota/commit/430008e9d700b3fe80f206c672415cfbd8e830e7
github.com/microsoft/kiota/commit/de3d18d9fe31ced4ac749728d3a2f94811f59268
Left out here: 16 versions. The JSON record has them.