External Control of File Name or Path in h2oai/h2o-3
The advisory, in context
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.
Affected packages
Start with the recorded fix for your release branch. Check your installed version and test compatibility before upgrading. Fixing this advisory does not rule out other vulnerabilities in the release.
Earlier releases before 3.46.0.1
Fixed in 3.46.0.1
111 explicitly affected versions
3.10.0.10, 3.10.0.3, 3.10.0.6, 3.10.0.7, 3.10.0.8, 3.10.3.3, 3.10.3.4, 3.10.4.1, 3.10.4.2, 3.10.4.3, 3.10.4.4, 3.10.4.6, 3.10.4.8, 3.16.0.1, 3.16.0.2, 3.16.0.3, 3.16.0.4, 3.18.0.1, 3.18.0.10, 3.18.0.11, 3.18.0.2, 3.18.0.3, 3.18.0.4, 3.18.0.5, 3.18.0.6, 3.18.0.7, 3.18.0.8, 3.18.0.9, 3.20.0.4, 3.20.0.5, 3.20.0.6, 3.20.0.7, 3.20.0.8, 3.22.0.1, 3.22.0.2, 3.22.0.3, 3.22.0.4, 3.22.0.5, 3.22.1.1, 3.22.1.2, 3.22.1.3, 3.22.1.4, 3.22.1.5, 3.22.1.6, 3.24.0.1, 3.24.0.2, 3.24.0.3, 3.24.0.4, 3.24.0.5, 3.26.0.1, 3.26.0.10, 3.26.0.11, 3.26.0.2, 3.26.0.3, 3.26.0.4, 3.26.0.5, 3.26.0.6, 3.26.0.8, 3.26.0.9, 3.28.0.1, 3.28.0.2, 3.28.0.3, 3.28.1.2, 3.28.1.3, 3.30.0.1, 3.30.0.2, 3.30.0.3, 3.30.0.4, 3.30.0.5, 3.30.0.6, 3.30.0.7, 3.30.1.1, 3.30.1.2, 3.30.1.3, 3.32.0.2, 3.32.0.3, 3.32.0.4, 3.32.0.5, 3.32.1.1, 3.32.1.2, 3.32.1.3, 3.32.1.4, 3.32.1.5, 3.32.1.6, 3.32.1.7, 3.34.0.3, 3.34.0.7, 3.34.0.8, 3.36.0.2, 3.36.0.3, 3.36.0.4, 3.36.1.1, 3.36.1.2, 3.36.1.3, 3.36.1.4, 3.36.1.5, 3.38.0.1, 3.38.0.2, 3.38.0.3, 3.38.0.4, 3.40.0.1, 3.40.0.2, 3.40.0.3, 3.40.0.4, 3.42.0.1, 3.42.0.2, 3.42.0.3, 3.42.0.4, 3.44.0.1, 3.44.0.2, 3.44.0.3
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "3.46.0.1"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"3.10.0.10",
"3.10.0.3",
"3.10.0.6",
"3.10.0.7",
"3.10.0.8",
"3.10.3.3",
"3.10.3.4",
"3.10.4.1",
"3.10.4.2",
"3.10.4.3",
"3.10.4.4",
"3.10.4.6",
"3.10.4.8",
"3.16.0.1",
"3.16.0.2",
"3.16.0.3",
"3.16.0.4",
"3.18.0.1",
"3.18.0.10",
"3.18.0.11",
"3.18.0.2",
"3.18.0.3",
"3.18.0.4",
"3.18.0.5",
"3.18.0.6",
"3.18.0.7",
"3.18.0.8",
"3.18.0.9",
"3.20.0.4",
"3.20.0.5",
"3.20.0.6",
"3.20.0.7",
"3.20.0.8",
"3.22.0.1",
"3.22.0.2",
"3.22.0.3",
"3.22.0.4",
"3.22.0.5",
"3.22.1.1",
"3.22.1.2",
"3.22.1.3",
"3.22.1.4",
"3.22.1.5",
"3.22.1.6",
"3.24.0.1",
"3.24.0.2",
"3.24.0.3",
"3.24.0.4",
"3.24.0.5",
"3.26.0.1",
"3.26.0.10",
"3.26.0.11",
"3.26.0.2",
"3.26.0.3",
"3.26.0.4",
"3.26.0.5",
"3.26.0.6",
"3.26.0.8",
"3.26.0.9",
"3.28.0.1",
"3.28.0.2",
"3.28.0.3",
"3.28.1.2",
"3.28.1.3",
"3.30.0.1",
"3.30.0.2",
"3.30.0.3",
"3.30.0.4",
"3.30.0.5",
"3.30.0.6",
"3.30.0.7",
"3.30.1.1",
"3.30.1.2",
"3.30.1.3",
"3.32.0.2",
"3.32.0.3",
"3.32.0.4",
"3.32.0.5",
"3.32.1.1",
"3.32.1.2",
"3.32.1.3",
"3.32.1.4",
"3.32.1.5",
"3.32.1.6",
"3.32.1.7",
"3.34.0.3",
"3.34.0.7",
"3.34.0.8",
"3.36.0.2",
"3.36.0.3",
"3.36.0.4",
"3.36.1.1",
"3.36.1.2",
"3.36.1.3",
"3.36.1.4",
"3.36.1.5",
"3.38.0.1",
"3.38.0.2",
"3.38.0.3",
"3.38.0.4",
"3.40.0.1",
"3.40.0.2",
"3.40.0.3",
"3.40.0.4",
"3.42.0.1",
"3.42.0.2",
"3.42.0.3",
"3.42.0.4",
"3.44.0.1",
"3.44.0.2",
"3.44.0.3"
]
}References
- https://nvd.nist.gov/vuln/detail/CVE-2023-6569
- https://github.com/h2oai/h2o-3/commit/e8884f5187eb81311877c5f0dd4d6d9c70f33d78
- https://github.com/h2oai/h2o-3
- https://github.com/pypa/advisory-database/tree/main/vulns/h2o/PYSEC-2026-350.yaml
- https://huntr.com/bounties/a5d003dc-c23e-4c98-8dcf-35ba9252fa3c
- https://pypi.org/project/h2o