Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify exposed Kan instance with S3_ENDPOINT unset
-
ExploitSend unauthenticated request to /api/download/attatchment with crafted url param
-
ExecutionServer fetch() reaches 169.254.169.254 or localhost
-
ImpactExfiltrate cloud IAM credentials and internal service data
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Credential Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitable only when the S3_ENDPOINT environment variable is unset/blank - which the project's own .env.example documents as the intended configuration for AWS S3 deployments, making it a realistic default rather than an edge case. In that state the pre-patch attatchment.ts bypassed hostname validation entirely and passed the attacker-supplied url query parameter directly to fetch(). Limiting factor: instances configured with a non-empty S3_ENDPOINT (MinIO, Cloudflare R2, DigitalOcean Spaces) enforced a hostname allowlist and were not vulnerable through this path. No authentication is required (PR:N), and no user interaction is needed; the route is reachable by remote unauthenticated attackers behind only a rate limit. |
| Impact | This is a genuine high-priority issue for affected Kan deployments, not an inflated CVSS number. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) describes network-reachable, low-complexity, unauthenticated exploitation, and the VC:H/SC:H impact reflects reading internal services and - critically - cloud instance metadata (e.g., 169.254.169.254 IAM credentials), which can cascade into cloud account compromise. CWE-918 SSRF matches the technical description precisely. Two signals are notably ABSENT from the input and should temper urgency: there is no EPSS score provided and no CISA KEV listing, so exploitation probability and in-the-wild activity are unquantified here. A public technical write-up (hackmd) and a VulnCheck advisory exist, which lowers the research bar for attackers, but the input does not flag confirmed exploit code, so this should be treated as no confirmed public exploit with a disclosed methodology. The one meaningful caveat: this is explicitly an INCOMPLETE FIX for CVE-2026-32255 and is only exploitable when S3_ENDPOINT is unset - the documented default for AWS S3 setups - so real risk is conditional on deployment configuration rather than universal across all Kan installs. |
| Exploit ScenarioDerived | An attacker locates an internet-exposed Kan instance (0.5.5-0.6.0) configured for AWS S3 with S3_ENDPOINT left blank, then sends an unauthenticated GET to /api/download/attatchment supplying a url parameter such as http://169.254.169.254/latest/meta-data/iam/security-credentials/. Because the pre-patch code skipped URL validation entirely when S3_ENDPOINT was unset, the server's fetch() retrieves the target and returns internal/metadata content to the attacker. A public technical write-up and VulnCheck advisory describe the method, though the input does not confirm packaged exploit code. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 14, 2026
Unauthenticated server-side request forgery in Kan 0.5.5 through 0.6.0 allows remote attackers to make the server issue arbitrary outbound HTTP requests through the /api/download/attatchment route by supplying a crafted url query parameter. The flaw is an incomplete fix for CVE-2026-32255 and only manifests when the S3_ENDPOINT environment variable is unset or blank - the configuration the project's own .env.example documents as the intended setup for AWS S3 - in which case hostname validation is skipped entirely and the attacker-controlled URL is handed directly to fetch(). No public exploit code has been identified at time of analysis and the issue is not confirmed as actively exploited (no CISA KEV listing), but EPSS/scoring data and the unauthenticated network vector (CVSS 4.0 base 9.2, CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N) make this a high-priority fix for exposed deployments.
RemediationAI
Apply the upstream fix for this incomplete SSRF patch - GitHub PR https://github.com/kanbn/kan/pull/590 and commit https://github.com/kanbn/kan/commit/53397d8e81dc1494d94132848c1f0416f1152bd7 (referenced by vendor advisory GHSA-qrx8-9hc6-jvqg); note that this is an upstream fix available as a PR/commit and a released tagged version containing it is not independently confirmed at time of analysis, so verify the tag before relying on a published artifact. After upgrading, the route fails closed: attachment downloads return HTTP 403 unless NEXT_PUBLIC_ATTACHMENTS_BUCKET_NAME is set together with at least one of S3_ENDPOINT or NEXT_PUBLIC_STORAGE_URL, and only URLs whose host matches the derived allowlist (and whose key is scoped to the configured bucket) are fetched; leaving those variables empty intentionally disables attachment downloads, which is the safe default. If upgrading immediately is not possible, the most effective compensating control is to set S3_ENDPOINT to a fully qualified URL with an explicit scheme pointing at your storage host (for AWS S3 deployments also set NEXT_PUBLIC_STORAGE_URL), which re-enables the pre-patch hostname allowlist and blocks arbitrary fetches - the trade-off is that the endpoint must be correct (a schemeless value such as "minio.internal:9000" parses to an empty hostname and can produce a permissive allowlist, so always include http:// or https://) and non-AWS storage providers must be reflected accurately. Additional mitigation is to block or restrict access to the /api/download/attatchment path at the reverse proxy or WAF for untrusted networks, accepting that legitimate attachment download functionality will be unavailable to those clients, and to apply egress filtering so the Kan application cannot reach link-local metadata addresses such as 169.254.169.254 or internal RFC1918 services, which reduces SSRF blast radius even if the route remains reachable. Because exploitation is unauthenticated, any Kan instance exposing this route to the internet with S3_ENDPOINT blank should be treated as high priority for patching or mitigation.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The vulnerability is a classic CWE-918 server-side request forgery in Kan's Next.js API layer, specifically the route handler at apps/web/src/pages/api/download/attatchment.ts (note the misspelling in the route path). The handler is wrapped in withApiLogging and withRateLimit, but the validation logic that should constrain which hosts may be fetched was conditional on env.S3_ENDPOINT being truthy. In the patched code path, the handler parses the S3 endpoint, extracts its hostname, and rejects any requested URL whose hostname does not equal or end with that allowlisted host. When S3_ENDPOINT is blank - the documented configuration for native AWS S3 - that entire block is skipped and the attacker-supplied url parameter is passed straight to fetch(), enabling the server to be coerced into requesting internal services, localhost ports, and cloud instance metadata endpoints such as 169.254.169.254. The upstream fix (PR #590, commit 53397d8e81dc1494d94132848c1f0416f1152bd7) factors the allowlist into a new util (apps/web/src/utils/attachmentDownload.ts) exposing getAllowedAttachmentHosts and isAttachmentUrlAllowed, derives allowed hosts from S3_ENDPOINT and/or NEXT_PUBLIC_STORAGE_URL, scopes downloads to NEXT_PUBLIC_ATTACHMENTS_BUCKET_NAME, and fails closed (empty allowlist or missing bucket) so that nothing is fetchable unless storage is explicitly configured. The accompanying unit tests also harden against edge cases such as schemeless endpoints (new URL("minio.internal:9000").hostname resolves to an empty string, which would otherwise make the allowlist match any trailing-dot hostname) and non-HTTP schemes such as file:///etc/passwd. The affected component family is the kanbn/kan project, tracked under CPE cpe:2.3:a:kanbn:kan:*:*:*:*:*:*:*:*.
Know when Kan gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N
Unauthenticated network SSRF (AV:N/PR:N/UI:N) that pivots to internal/metadata systems is a scope change with high confidentiality loss; no integrity or availability impact, so S:C/C:H/I:N/A:N.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Kan 0.5.5 through 0.6.0 contains an unauthenticated server-side request forgery vulnerability in the /api/download/attatchment route due to an incomplete fix for CVE-2026-32255. When S3_ENDPOINT is unset, attackers can pass arbitrary url query parameters to fetch() to read internal services, localhost ports, and cloud instance metadata.
Technical POC Analysis
This is CWE-918, server-side request forgery, in apps/web/src/pages/api/download/attatchment.ts.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Kan versions 0.5.5 through 0.6.0 expose organizations to an unauthenticated attack in which any remote party can compel a vulnerable Kan server to make arbitrary outbound network requests through the /api/download/attatchment endpoint. Internet-facing deployments using the default AWS S3 configuration are the primary exposure, and successful abuse could give attackers a path into internal services and cloud credentials; no public exploit code has been identified at time of analysis, but the unauthenticated network vector makes this a priority for leadership attention.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.
Kan, an open-source project management tool, contains a Server-Side Request Forgery (SSRF) vulnerability in its unauthen
Guest-level users on kan through 0.6.0 can create boards they are not entitled to create by invoking the GitHub project
EUVD-2026-101256
GHSA-8p5c-vr7c-5g49
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB