High
OpenSave through 2.4.0 Arbitrary File Read and Write via Peer-Controlled Save Path
Type: advisorySources: OSV
OpenSave through 2.4.0 fails to properly validate save paths supplied by paired peers in the manifest request handler. Attackers can specify arbitrary directories outside configured save locations to read and write files through manifest and sync routes.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-103398
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 4 Nov 2026, 16:34 UTC · Revision 1
Source evidence
OpenSave through 2.4.0 Arbitrary File Read and Write via Peer-Controlled Save Path
core-osv · Original sourcePublished 30 Sept 2026, 14:48 UTC
OpenSave through 2.4.0 fails to properly validate save paths supplied by paired peers in the manifest request handler. Attackers can specify arbitrary directories outside configured save locations to read and write files through manifest and sync routes.
osv:CVE-2026-103398
Complete source record
{
"id": "0517e0ba29690dbf35a09b2082d72456025027d824d5f795a7bbefc681c87754",
"url": "https://osv.dev/vulnerability/CVE-2026-103398",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "OpenSave through 2.4.0 Arbitrary File Read and Write via Peer-Controlled Save Path",
"summary": "OpenSave through 2.4.0 fails to properly validate save paths supplied by paired peers in the manifest request handler. Attackers can specify arbitrary directories outside configured save locations to read and write files through manifest and sync routes.",
"evidence": "osv:CVE-2026-103398",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2026-103398",
"aliases": [
"CVE-2026-103398"
],
"metrics": [
{
"type": "CVSS_V4",
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/liquid-co/opensave",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"last_affected": "f9bb679b4a13403ed8c2c3f54cc99caa3f3a350b"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "0"
},
{
"last_affected": "2.4.0"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StandardRange"
},
{
"range": [
{
"introduced": "0"
},
{
"last_affected": "2.4.0"
}
],
"source": "DESCRIPTION"
}
]
}
}
],
"versions": [
"v2.4.0",
"v2.3.1",
"v2.3.0"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-103398.json"
}
}
],
"modified": "2026-10-28T02:30:37.228012498Z",
"provider": "osv",
"references": [
"https://gist.github.com/mansurmavlankulov/2ca66f95965fb9d4aab353bcf2434cdb",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/103xxx/CVE-2026-103398.json",
"https://nvd.nist.gov/vuln/detail/CVE-2026-103398",
"https://www.vulncheck.com/advisories/opensave-through-2.4.0-arbitrary-file-read-and-write-via-peer-controlled-save-path",
"https://github.com/Liquid-co/OpenSave",
"https://github.com/Liquid-co/OpenSave/blob/v2.4.0/internal/delta/rootguard.go#L16-L30",
"https://github.com/Liquid-co/OpenSave/blob/v2.4.0/internal/p2p/routes.go#L555-L566"
],
"provider_metadata": {
"cwe_ids": [
"CWE-73"
],
"cna_assigner": "VulnCheck",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/103xxx/CVE-2026-103398.json"
}
},
"related_cves": [
{
"value": "CVE-2026-103398",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 504745,
"published_at": "2026-09-30T14:48:57.725+00:00"
}