---
id: "CVE-2026-61529"
kind: "vulnerability"
aliases: ["CVE-2026-61529"]
title: "Endatix: stored submission file URLs let staff trigger server-side requests"
severity: "medium"
cvss: 4.7
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["endatix", "forms", "package", "self-hosted", "ssrf"]
not_affected_if: ["fixed-version", "no-public-forms", "recaptcha-enforced"]
published_at: "2026-10-28T20:18:27+00:00"
first_seen_at: "2026-10-28T20:35:10+00:00"
updated_at: "2026-10-28T20:36:19+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-61529", "first_seen_at": "2026-10-28T20:35:10+00:00"}]
---

# Endatix: stored submission file URLs let staff trigger server-side requests

Endatix stores anonymous form submissions with file objects that can contain URLs, and later fetches those URLs from the server when a staff member downloads the files. An attacker can make the server send GET requests to internal services, cloud metadata endpoints, and loopback addresses, with the response only visible to staff in a ZIP file.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the installed Endatix version and confirm whether it is below `0.7.0`
- Look for forms with `IsPublic` and `IsEnabled` set that accept anonymous submissions
- Review the server logs for outbound requests from the Endatix host to internal addresses after `POST /forms/{formId}/submissions/{submissionId}/files` calls

## Fix

- Upgrade Endatix to `0.7.0` or later
- Until upgraded, disable anonymous submissions on public forms or restrict egress from the Endatix server to internal address ranges and cloud metadata endpoints

## Timeline

- 2026-10-28T20:35:10+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-61529

## From the sources

Endatix is a self-hosted form and survey management platform with a headless API. Prior to 0.7.0, the anonymous `POST /forms/{formId}/submissions` endpoint stores attacker-controlled `JsonData` after checking only that the JSON is well formed. A file object with `name`, `type` and `content` fields can contain an HTTP or HTTPS URL. When a staff member with `submissions.view` permission invokes `POST /forms/{formId}/submissions/{submissionId}/files`, `GetFilesHandler` passes the stored data to `SubmissionFileExtractor` in `src/Endatix.Infrastructure/Features/Submissions/SubmissionFileExtractor.cs`, which calls `HttpClient.GetAsync` without validating the destination URL, host or resolved IP addresses against internal address ranges. This permits stored, second-order server-side GET requests to internal services, cloud metadata, loopback and link-local addresses from the server's network position. The form must have `IsPublic` and `IsEnabled` set, and an anonymous submission must pass reCAPTCHA v3 when configured. The fetched response is placed in the staff viewer's ZIP, not returned directly to the attacker, so disclosure to the attacker is blind or indirect through observable request behavior or information exposed by the viewer. No integrity or availability impact is asserted; data: and raw-base64 `content` are decoded locally without network requests. This issue is fixed in version 0.7.0.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
