---
id: "CVE-2023-6569"
kind: "vulnerability"
aliases: ["CVE-2023-6569", "GHSA-gqrq-j6pm-98c2"]
title: "External Control of File Name or Path in h2oai/h2o-3"
severity: "critical"
cvss: 9.3
epss: 0.00721
exploited: false
status: "open"
category: "package"
products: [{"name": "h2o", "fixed": ["3.46.0.1"], "affected": "< 3.46.0.1", "ecosystem": "pypi"}, {"name": "h2o", "fixed": [], "affected": "= 3.40.0.4", "ecosystem": "vendor"}]
ecosystems: ["pypi", "vendor"]
tags: ["cwe-610", "cwe-73", "data-science", "h2o", "package", "python", "self-hosted"]
not_affected_if: ["fixed-version", "local-only-use"]
published_at: "2023-12-14T13:15:55+00:00"
first_seen_at: "2026-10-27T16:35:55+00:00"
updated_at: "2026-10-27T17:03:04+00:00"
sources: [{"source": "ghsa", "url": "https://github.com/advisories/GHSA-gqrq-j6pm-98c2", "first_seen_at": "2026-10-27T16:35:55+00:00"}, {"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2023-6569", "first_seen_at": "2026-10-27T17:03:04+00:00"}]
---

# External Control of File Name or Path in h2oai/h2o-3

H2O-3 writes exported data to disk using a path an attacker can influence, so a remote unauthenticated request can overwrite arbitrary files on the server. The written content is partly controllable, which is enough to damage files or plant payloads that other processes read.

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

## Affected

- pypi:h2o affected < 3.46.0.1 fixed 3.46.0.1
- vendor:h2o affected = 3.40.0.4 fixed ?

## How to check

- Run `pip show h2o` and confirm the installed version is below `3.46.0.1`.
- Check whether the H2O server's REST port is reachable from untrusted networks.

## Fix

- Upgrade the `h2o` Python package to `3.46.0.1` or later.
- Restrict network access to the H2O API port until the upgrade is applied.

## Timeline

- 2026-10-27T16:35:55+00:00 ghsa https://github.com/advisories/GHSA-gqrq-j6pm-98c2
- 2026-10-27T17:03:04+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2023-6569

## From the sources

Remote unauthenticated attackers can overwrite arbitrary server files with attacker-controllable data. The data that the attacker can control is not entirely arbitrary. h2o writes a CSV/XLS/etc file to disk, so the attacker data is wrapped in quotations and starts with "C1", if they're exporting as CSV.

---

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