---
id: "CVE-2026-63502"
kind: "vulnerability"
aliases: ["CVE-2026-63502"]
title: "Yeti: export task name lets authenticated users read and write arbitrary files"
severity: "high"
cvss: 8.3
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["dfir", "package", "self-hosted", "threat-intel", "yeti"]
not_affected_if: ["non-local-storage-backend", "version-2.5.1-or-later"]
published_at: "2026-11-03T20:18:17+00:00"
first_seen_at: "2026-11-03T20:49:23+00:00"
updated_at: "2026-11-03T20:49:50+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-63502", "first_seen_at": "2026-11-03T20:49:23+00:00"}]
---

# Yeti: export task name lets authenticated users read and write arbitrary files

Yeti's export feature builds a file path from a user-chosen task name without blocking directory traversal sequences, so a low-privileged logged-in user can read files the Yeti service account can access. Running the export can also write attacker-controlled output to a chosen writable path.

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

## How to check

- Check the installed Yeti version and whether it is below `2.5.1`
- Confirm whether the default local storage backend is in use (core/clients/file_storage/classes/local_storage.py)
- Review whether non-admin users can call POST /api/v2/tasks/export/new

## Fix

- Move Yeti to `2.5.1` or later

## Timeline

- 2026-11-03T20:49:23+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-63502

## Documents

- [advisory] Vendor advisory: github.com https://github.com/yeti-platform/yeti/security/advisories/GHSA-4q3w-w2g5-8wqq
- [fix] Patch: github.com https://github.com/yeti-platform/yeti/commit/bfd7c2424dc05dea2d46b5b106b5071f959d5d5a
- [fix] Release notes: github.com https://github.com/yeti-platform/yeti/releases/tag/2.5.1

## From the sources

Yeti bridges the gap between CTI and DFIR practitioners by providing a Forensics Intelligence platform and pipeline. Prior to 2.5.1, YETI derives ExportTask.file_name from the user-controlled task name and passes it to core/clients/file_storage/classes/local_storage.py without sanitizing traversal sequences or enforcing path confinement. A low-privileged authenticated user using the default local storage backend can call POST /api/v2/tasks/export/new with a traversal name and use ExportTask.file_contents through GET /api/v2/tasks/export/{export_id}/content to read files accessible to the YETI service account. Running ExportTask.run() can also write attacker-controlled export output to an attacker-selected writable path. The impact depends on the service account's filesystem permissions, and universal code execution is not established. This issue is fixed in version 2.5.1.

---

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