CVE-2026-32255 Overview
Kan is an open-source project management tool that contains a Server-Side Request Forgery (SSRF) vulnerability in versions 0.5.4 and below. The /api/download/attatchment endpoint lacks authentication and URL validation, allowing attackers to make arbitrary HTTP requests from the server to internal services, cloud metadata endpoints, or private network resources.
Critical Impact
Unauthenticated attackers can exploit this SSRF vulnerability to access internal services, retrieve cloud metadata credentials, and probe private network resources without any authentication requirements.
Affected Products
- Kan project management tool versions 0.5.4 and below
- All deployments exposing the /api/download/attatchment endpoint
- Self-hosted Kan instances without reverse proxy restrictions
Discovery Timeline
- 2026-03-19 - CVE-2026-32255 published to NVD
- 2026-03-19 - Last updated in NVD database
Technical Details for CVE-2026-32255
Vulnerability Analysis
This Server-Side Request Forgery (SSRF) vulnerability exists in the Kan project management tool's attachment download functionality. The vulnerable endpoint /api/download/attatchment accepts a user-supplied URL query parameter and passes it directly to the fetch() function server-side without any validation or sanitization. The endpoint then returns the full response body to the user.
The lack of URL validation enables attackers to specify arbitrary URLs, including internal network addresses (e.g., http://169.254.169.254 for cloud metadata services, http://localhost:3000 for local services, or private IP ranges). Since the request originates from the server itself, it bypasses network-level access controls that would normally block external access to these resources.
Root Cause
The root cause of this vulnerability is the absence of URL validation and authentication on the /api/download/attatchment endpoint. The vulnerable code directly passes user-controlled input to fetch() without verifying that the target URL points to an allowed external resource. Additionally, the endpoint lacks any form of authentication, making it accessible to unauthenticated attackers.
Attack Vector
The attack vector is network-based with low complexity. An unauthenticated attacker can craft a malicious request to the vulnerable endpoint with a URL parameter pointing to internal resources. The server processes this request and returns the response, effectively acting as a proxy for the attacker to access internal services. This can lead to exposure of sensitive information such as cloud provider metadata credentials, internal API responses, or configuration data.
// Security patch in apps/web/src/pages/api/download/attatchment.ts
// feat: add url validation to download attatchment endpoint (#432)
import { withRateLimit } from "@kan/api/utils/rateLimit";
+import { env } from "~/env";
+
export default withRateLimit(
{ points: 100, duration: 60 },
async (req: NextApiRequest, res: NextApiResponse) => {
- if (req.method !== "GET") {
- return res.status(405).json({ message: "Method not allowed" });
- }
+ if (req.method !== "GET") {
+ return res.status(405).json({ message: "Method not allowed" });
+ }
- const { url, filename } = req.query;
+ const { url, filename } = req.query;
- if (!url || typeof url !== "string") {
- return res.status(400).json({
- message: "url parameter is required",
- });
- }
+ if (!url || typeof url !== "string") {
+ return res.status(400).json({ message: "url parameter is required" });
+ }
- try {
- const downloadFilename = typeof filename === "string"
- ? encodeURIComponent(filename)
Source: GitHub Commit 53397d8
Detection Methods for CVE-2026-32255
Indicators of Compromise
- HTTP requests to /api/download/attatchment with URL parameters containing internal IP addresses (e.g., 169.254.169.254, 10.x.x.x, 192.168.x.x, 127.0.0.1)
- Requests targeting cloud metadata endpoints such as AWS IMDSv1 (http://169.254.169.254/latest/meta-data/)
- Unusual outbound connections from the Kan server to internal services or localhost ports
- Access log entries showing unauthenticated requests to the attachment download endpoint with suspicious URL parameters
Detection Strategies
- Implement web application firewall (WAF) rules to detect SSRF patterns in the url query parameter
- Monitor server-side outbound HTTP requests for connections to internal IP ranges or cloud metadata endpoints
- Deploy network intrusion detection signatures for SSRF exploitation attempts targeting common internal services
- Enable verbose logging on reverse proxies to capture full request URLs to the vulnerable endpoint
Monitoring Recommendations
- Alert on any requests to /api/download/attatchment containing localhost, private IP ranges, or metadata service addresses
- Monitor for unusual response sizes from the attachment endpoint that may indicate successful data exfiltration
- Review application logs for error messages related to internal service connections from the download endpoint
- Set up anomaly detection for high-frequency requests to the vulnerable endpoint from single IP addresses
How to Mitigate CVE-2026-32255
Immediate Actions Required
- Upgrade Kan to version 0.5.5 or later immediately
- Block or restrict access to /api/download/attatchment at the reverse proxy level until patching is complete
- Review server logs for evidence of exploitation attempts targeting the vulnerable endpoint
- Audit any cloud credentials or internal service data that may have been exposed through SSRF attacks
Patch Information
The vulnerability has been fixed in Kan version 0.5.5. The patch adds URL validation to the /api/download/attatchment endpoint to prevent SSRF attacks. Organizations should update to this version or later by pulling the latest release from the official GitHub repository. The security fix is documented in the GitHub Security Advisory GHSA-qrx8-9hc6-jvqg.
Workarounds
- Block or restrict access to /api/download/attatchment at the reverse proxy level (nginx, Cloudflare, etc.)
- Implement network segmentation to limit the Kan server's ability to reach internal services and cloud metadata endpoints
- Configure egress filtering to restrict outbound connections from the Kan server to only necessary external resources
- If the attachment download feature is not required, disable the endpoint entirely at the application or proxy level
# nginx configuration to block the vulnerable endpoint
location /api/download/attatchment {
deny all;
return 403;
}
# Alternative: Restrict to authenticated users only via reverse proxy
location /api/download/attatchment {
auth_request /auth;
proxy_pass http://backend;
}
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

