CVE-2026-17534 (GCVE-0-2026-17534)
Vulnerability from cvelistv5 – Published: 2026-07-27 09:19 – Updated: 2026-07-27 10:24
VLAI
EPSS
VEX
Title
Kimi Code FetchURL SSRF protection bypass via DNS-resolving hostnames and redirects
Summary
Kimi Code (@moonshot-ai/kimi-code) before 0.27.0 implements FetchURL SSRF hardening as a static hostname and IP-literal denylist in assertSafeFetchTarget, without resolving DNS or re-validating hosts after HTTP redirects. An attacker who can influence a FetchURL call (for example via prompt injection) can supply a crafted public hostname that resolves to loopback or another internal address, or a public URL that redirects to such a target, and thereby reach internal network services that the denylist was intended to block. FetchURL is included in the default auto-approve tool set, so the call does not require interactive user confirmation in manual mode.
Severity
5.5 (Medium)
SSVC
Exploitation: none
Automatable: no
Technical Impact: partial
CISA Coordinator (v2.0.3)
CWE
- CWE-918 - Server-Side Request Forgery (SSRF)
Assigner
References
4 references
| URL | Tags |
|---|---|
| https://github.com/MoonshotAI/kimi-code/commit/31… | patch |
| https://github.com/MoonshotAI/kimi-code/pull/1791 | patch |
| https://github.com/MoonshotAI/kimi-code/releases/… | vendor-advisory |
| https://github.com/MoonshotAI/kimi-code | product |
Impacted products
1 product
| Vendor | Product | Version | |
|---|---|---|---|
| MoonshotAI | Kimi Code |
Affected:
0 , < 0.27.0
(semver)
|
Credits
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-17534",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-07-27T10:23:54.927637Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-07-27T10:24:05.709Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"collectionURL": "https://github.com/MoonshotAI/kimi-code",
"defaultStatus": "unaffected",
"packageName": "@moonshot-ai/kimi-code",
"product": "Kimi Code",
"programFiles": [
"packages/agent-core-v2/src/app/web/providers/local-fetch-url.ts",
"packages/agent-core/src/tools/providers/local-fetch-url.ts",
"packages/agent-core-v2/src/agent/permissionPolicy/policies/default-tool-approve.ts"
],
"repo": "git://github.com/MoonshotAI/kimi-code",
"vendor": "MoonshotAI",
"versions": [
{
"lessThan": "0.27.0",
"status": "affected",
"version": "0",
"versionType": "semver"
}
]
}
],
"configurations": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eAffects Kimi Code CLI/desktop agent installations before 0.27.0 when FetchURL uses the local fetch provider (including as a fallback). FetchURL is in the default auto-approve tool set. Exploitation requires the ability to influence a FetchURL invocation (for example via prompt injection) and user interaction with the agent session. Impact depends on which loopback or internal services are reachable from the host running Kimi Code.\u003c/p\u003e"
}
],
"value": "Affects Kimi Code CLI/desktop agent installations before 0.27.0 when FetchURL uses the local fetch provider (including as a fallback). FetchURL is in the default auto-approve tool set. Exploitation requires the ability to influence a FetchURL invocation (for example via prompt injection) and user interaction with the agent session. Impact depends on which loopback or internal services are reachable from the host running Kimi Code."
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "Natan Nehorai"
},
{
"lang": "en",
"type": "coordinator",
"value": "JFrog Security Research"
}
],
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eKimi Code (@moonshot-ai/kimi-code) before 0.27.0 implements FetchURL SSRF hardening as a static hostname and IP-literal denylist in assertSafeFetchTarget, without resolving DNS or re-validating hosts after HTTP redirects. An attacker who can influence a FetchURL call (for example via prompt injection) can supply a crafted public hostname that resolves to loopback or another internal address, or a public URL that redirects to such a target, and thereby reach internal network services that the denylist was intended to block. FetchURL is included in the default auto-approve tool set, so the call does not require interactive user confirmation in manual mode.\u003c/p\u003e"
}
],
"value": "Kimi Code (@moonshot-ai/kimi-code) before 0.27.0 implements FetchURL SSRF hardening as a static hostname and IP-literal denylist in assertSafeFetchTarget, without resolving DNS or re-validating hosts after HTTP redirects. An attacker who can influence a FetchURL call (for example via prompt injection) can supply a crafted public hostname that resolves to loopback or another internal address, or a public URL that redirects to such a target, and thereby reach internal network services that the denylist was intended to block. FetchURL is included in the default auto-approve tool set, so the call does not require interactive user confirmation in manual mode."
}
],
"impacts": [
{
"capecId": "CAPEC-664",
"descriptions": [
{
"lang": "en",
"value": "CAPEC-664 Server Side Request Forgery"
}
]
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "HIGH",
"attackVector": "LOCAL",
"availabilityImpact": "NONE",
"baseScore": 5.5,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "HIGH",
"integrityImpact": "NONE",
"privilegesRequired": "NONE",
"scope": "CHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:C/C:H/I:N/A:N",
"version": "3.1"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-918",
"description": "CWE-918: Server-Side Request Forgery (SSRF)",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-07-27T09:24:27.376Z",
"orgId": "48a46f29-ae42-4e1d-90dd-c1676c1e5e6d",
"shortName": "JFROG"
},
"references": [
{
"name": "Fix: close FetchURL SSRF bypasses and DNS-rebinding window",
"tags": [
"patch"
],
"url": "https://github.com/MoonshotAI/kimi-code/commit/31449728b72df94e22bcb2de350a1e7624895e30"
},
{
"name": "PR #1791: close FetchURL SSRF bypasses and DNS-rebinding window",
"tags": [
"patch"
],
"url": "https://github.com/MoonshotAI/kimi-code/pull/1791"
},
{
"name": "Kimi Code 0.27.0 release",
"tags": [
"vendor-advisory"
],
"url": "https://github.com/MoonshotAI/kimi-code/releases/tag/%40moonshot-ai%2Fkimi-code%400.27.0"
},
{
"name": "Kimi Code repository",
"tags": [
"product"
],
"url": "https://github.com/MoonshotAI/kimi-code"
}
],
"solutions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eUpgrade to Kimi Code 0.27.0 or later. The fix resolves hostnames via DNS and rejects addresses in loopback, RFC1918, link-local, CGNAT, and ULA ranges; follows redirects manually with per-hop revalidation; and pins connections to the validated resolved addresses to reduce DNS-rebinding (TOCTOU) races.\u003c/p\u003e"
}
],
"value": "Upgrade to Kimi Code 0.27.0 or later. The fix resolves hostnames via DNS and rejects addresses in loopback, RFC1918, link-local, CGNAT, and ULA ranges; follows redirects manually with per-hop revalidation; and pins connections to the validated resolved addresses to reduce DNS-rebinding (TOCTOU) races."
}
],
"source": {
"discovery": "EXTERNAL"
},
"timeline": [
{
"lang": "en",
"time": "2026-07-17T03:21:00.000Z",
"value": "Fix merged in MoonshotAI/kimi-code#1791 (FetchURL SSRF hardening)"
},
{
"lang": "en",
"time": "2026-07-17T12:48:00.000Z",
"value": "Fix released in @moonshot-ai/kimi-code@0.27.0"
},
{
"lang": "en",
"time": "2026-07-16T08:15:00.000Z",
"value": "Issue reported to Moonshot AI"
}
],
"title": "Kimi Code FetchURL SSRF protection bypass via DNS-resolving hostnames and redirects",
"x_generator": {
"engine": "Vulnogram 1.0.4"
}
}
},
"cveMetadata": {
"assignerOrgId": "48a46f29-ae42-4e1d-90dd-c1676c1e5e6d",
"assignerShortName": "JFROG",
"cveId": "CVE-2026-17534",
"datePublished": "2026-07-27T09:19:23.982Z",
"dateReserved": "2026-07-27T09:17:58.055Z",
"dateUpdated": "2026-07-27T10:24:05.709Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"epss": {
"cve": "CVE-2026-17534",
"date": "2026-07-28",
"epss": "0.00121",
"percentile": "0.02292"
},
"nvd": "{\"cve\":{\"id\":\"CVE-2026-17534\",\"sourceIdentifier\":\"reefs@jfrog.com\",\"published\":\"2026-07-27T10:16:37.747\",\"lastModified\":\"2026-07-27T20:37:16.927\",\"vulnStatus\":\"Awaiting Analysis\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"Kimi Code (@moonshot-ai/kimi-code) before 0.27.0 implements FetchURL SSRF hardening as a static hostname and IP-literal denylist in assertSafeFetchTarget, without resolving DNS or re-validating hosts after HTTP redirects. An attacker who can influence a FetchURL call (for example via prompt injection) can supply a crafted public hostname that resolves to loopback or another internal address, or a public URL that redirects to such a target, and thereby reach internal network services that the denylist was intended to block. FetchURL is included in the default auto-approve tool set, so the call does not require interactive user confirmation in manual mode.\"}],\"affected\":[{\"source\":\"reefs@jfrog.com\",\"affectedData\":[{\"vendor\":\"MoonshotAI\",\"product\":\"Kimi Code\",\"defaultStatus\":\"unaffected\",\"collectionURL\":\"https://github.com/MoonshotAI/kimi-code\",\"packageName\":\"@moonshot-ai/kimi-code\",\"programFiles\":[\"packages/agent-core-v2/src/app/web/providers/local-fetch-url.ts\",\"packages/agent-core/src/tools/providers/local-fetch-url.ts\",\"packages/agent-core-v2/src/agent/permissionPolicy/policies/default-tool-approve.ts\"],\"repo\":\"git://github.com/MoonshotAI/kimi-code\",\"versions\":[{\"version\":\"0\",\"lessThan\":\"0.27.0\",\"versionType\":\"semver\",\"status\":\"affected\"}]}]}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"reefs@jfrog.com\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:C/C:H/I:N/A:N\",\"baseScore\":5.5,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"HIGH\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"REQUIRED\",\"scope\":\"CHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"NONE\"},\"exploitabilityScore\":1.0,\"impactScore\":4.0}],\"ssvcV203\":[{\"source\":\"134c704f-9b21-4f2e-91b3-4a467353bcc0\",\"ssvcData\":{\"timestamp\":\"2026-07-27T10:23:54.927637Z\",\"id\":\"CVE-2026-17534\",\"options\":[{\"exploitation\":\"none\"},{\"automatable\":\"no\"},{\"technicalImpact\":\"partial\"}],\"role\":\"CISA Coordinator\",\"version\":\"2.0.3\"}}]},\"weaknesses\":[{\"source\":\"reefs@jfrog.com\",\"type\":\"Secondary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-918\"}]}],\"references\":[{\"url\":\"https://github.com/MoonshotAI/kimi-code\",\"source\":\"reefs@jfrog.com\"},{\"url\":\"https://github.com/MoonshotAI/kimi-code/commit/31449728b72df94e22bcb2de350a1e7624895e30\",\"source\":\"reefs@jfrog.com\"},{\"url\":\"https://github.com/MoonshotAI/kimi-code/pull/1791\",\"source\":\"reefs@jfrog.com\"},{\"url\":\"https://github.com/MoonshotAI/kimi-code/releases/tag/%40moonshot-ai%2Fkimi-code%400.27.0\",\"source\":\"reefs@jfrog.com\"}]}}",
"vulnrichment": {
"containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2026-17534\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-07-27T10:23:54.927637Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-07-27T10:24:00.330Z\"}}], \"cna\": {\"title\": \"Kimi Code FetchURL SSRF protection bypass via DNS-resolving hostnames and redirects\", \"source\": {\"discovery\": \"EXTERNAL\"}, \"credits\": [{\"lang\": \"en\", \"type\": \"finder\", \"value\": \"Natan Nehorai\"}, {\"lang\": \"en\", \"type\": \"coordinator\", \"value\": \"JFrog Security Research\"}], \"impacts\": [{\"capecId\": \"CAPEC-664\", \"descriptions\": [{\"lang\": \"en\", \"value\": \"CAPEC-664 Server Side Request Forgery\"}]}], \"metrics\": [{\"format\": \"CVSS\", \"cvssV3_1\": {\"scope\": \"CHANGED\", \"version\": \"3.1\", \"baseScore\": 5.5, \"attackVector\": \"LOCAL\", \"baseSeverity\": \"MEDIUM\", \"vectorString\": \"CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:C/C:H/I:N/A:N\", \"integrityImpact\": \"NONE\", \"userInteraction\": \"REQUIRED\", \"attackComplexity\": \"HIGH\", \"availabilityImpact\": \"NONE\", \"privilegesRequired\": \"NONE\", \"confidentialityImpact\": \"HIGH\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"GENERAL\"}]}], \"affected\": [{\"repo\": \"git://github.com/MoonshotAI/kimi-code\", \"vendor\": \"MoonshotAI\", \"product\": \"Kimi Code\", \"versions\": [{\"status\": \"affected\", \"version\": \"0\", \"lessThan\": \"0.27.0\", \"versionType\": \"semver\"}], \"packageName\": \"@moonshot-ai/kimi-code\", \"programFiles\": [\"packages/agent-core-v2/src/app/web/providers/local-fetch-url.ts\", \"packages/agent-core/src/tools/providers/local-fetch-url.ts\", \"packages/agent-core-v2/src/agent/permissionPolicy/policies/default-tool-approve.ts\"], \"collectionURL\": \"https://github.com/MoonshotAI/kimi-code\", \"defaultStatus\": \"unaffected\"}], \"timeline\": [{\"lang\": \"en\", \"time\": \"2026-07-17T03:21:00.000Z\", \"value\": \"Fix merged in MoonshotAI/kimi-code#1791 (FetchURL SSRF hardening)\"}, {\"lang\": \"en\", \"time\": \"2026-07-17T12:48:00.000Z\", \"value\": \"Fix released in @moonshot-ai/kimi-code@0.27.0\"}, {\"lang\": \"en\", \"time\": \"2026-07-16T08:15:00.000Z\", \"value\": \"Issue reported to Moonshot AI\"}], \"solutions\": [{\"lang\": \"en\", \"value\": \"Upgrade to Kimi Code 0.27.0 or later. The fix resolves hostnames via DNS and rejects addresses in loopback, RFC1918, link-local, CGNAT, and ULA ranges; follows redirects manually with per-hop revalidation; and pins connections to the validated resolved addresses to reduce DNS-rebinding (TOCTOU) races.\", \"supportingMedia\": [{\"type\": \"text/html\", \"value\": \"\u003cp\u003eUpgrade to Kimi Code 0.27.0 or later. The fix resolves hostnames via DNS and rejects addresses in loopback, RFC1918, link-local, CGNAT, and ULA ranges; follows redirects manually with per-hop revalidation; and pins connections to the validated resolved addresses to reduce DNS-rebinding (TOCTOU) races.\u003c/p\u003e\", \"base64\": false}]}], \"references\": [{\"url\": \"https://github.com/MoonshotAI/kimi-code/commit/31449728b72df94e22bcb2de350a1e7624895e30\", \"name\": \"Fix: close FetchURL SSRF bypasses and DNS-rebinding window\", \"tags\": [\"patch\"]}, {\"url\": \"https://github.com/MoonshotAI/kimi-code/pull/1791\", \"name\": \"PR #1791: close FetchURL SSRF bypasses and DNS-rebinding window\", \"tags\": [\"patch\"]}, {\"url\": \"https://github.com/MoonshotAI/kimi-code/releases/tag/%40moonshot-ai%2Fkimi-code%400.27.0\", \"name\": \"Kimi Code 0.27.0 release\", \"tags\": [\"vendor-advisory\"]}, {\"url\": \"https://github.com/MoonshotAI/kimi-code\", \"name\": \"Kimi Code repository\", \"tags\": [\"product\"]}], \"x_generator\": {\"engine\": \"Vulnogram 1.0.4\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"Kimi Code (@moonshot-ai/kimi-code) before 0.27.0 implements FetchURL SSRF hardening as a static hostname and IP-literal denylist in assertSafeFetchTarget, without resolving DNS or re-validating hosts after HTTP redirects. An attacker who can influence a FetchURL call (for example via prompt injection) can supply a crafted public hostname that resolves to loopback or another internal address, or a public URL that redirects to such a target, and thereby reach internal network services that the denylist was intended to block. FetchURL is included in the default auto-approve tool set, so the call does not require interactive user confirmation in manual mode.\", \"supportingMedia\": [{\"type\": \"text/html\", \"value\": \"\u003cp\u003eKimi Code (@moonshot-ai/kimi-code) before 0.27.0 implements FetchURL SSRF hardening as a static hostname and IP-literal denylist in assertSafeFetchTarget, without resolving DNS or re-validating hosts after HTTP redirects. An attacker who can influence a FetchURL call (for example via prompt injection) can supply a crafted public hostname that resolves to loopback or another internal address, or a public URL that redirects to such a target, and thereby reach internal network services that the denylist was intended to block. FetchURL is included in the default auto-approve tool set, so the call does not require interactive user confirmation in manual mode.\u003c/p\u003e\", \"base64\": false}]}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-918\", \"description\": \"CWE-918: Server-Side Request Forgery (SSRF)\"}]}], \"configurations\": [{\"lang\": \"en\", \"value\": \"Affects Kimi Code CLI/desktop agent installations before 0.27.0 when FetchURL uses the local fetch provider (including as a fallback). FetchURL is in the default auto-approve tool set. Exploitation requires the ability to influence a FetchURL invocation (for example via prompt injection) and user interaction with the agent session. Impact depends on which loopback or internal services are reachable from the host running Kimi Code.\", \"supportingMedia\": [{\"type\": \"text/html\", \"value\": \"\u003cp\u003eAffects Kimi Code CLI/desktop agent installations before 0.27.0 when FetchURL uses the local fetch provider (including as a fallback). FetchURL is in the default auto-approve tool set. Exploitation requires the ability to influence a FetchURL invocation (for example via prompt injection) and user interaction with the agent session. Impact depends on which loopback or internal services are reachable from the host running Kimi Code.\u003c/p\u003e\", \"base64\": false}]}], \"providerMetadata\": {\"orgId\": \"48a46f29-ae42-4e1d-90dd-c1676c1e5e6d\", \"shortName\": \"JFROG\", \"dateUpdated\": \"2026-07-27T09:24:27.376Z\"}}}",
"cveMetadata": "{\"cveId\": \"CVE-2026-17534\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-07-27T10:24:05.709Z\", \"dateReserved\": \"2026-07-27T09:17:58.055Z\", \"assignerOrgId\": \"48a46f29-ae42-4e1d-90dd-c1676c1e5e6d\", \"datePublished\": \"2026-07-27T09:19:23.982Z\", \"assignerShortName\": \"JFROG\"}",
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
}
}
Loading…
Loading…
Experimental. This forecast is provided for visualization only and may change without notice. Do not use it for operational decisions.
Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Loading…
The MITRE ATT&CK techniques below are AI-generated suggestions, inferred from the description of the
vulnerability by the CIRCL/vulnerability-attack-technique-classification-roberta-base
model, served locally by ML-Gateway.
They have not been verified by an analyst and are provided for guidance only.
Loading…
Loading…