CVE-2026-66881 json
Path traversal in imported file_entries name allows arbitrary file write via URL-type entry download
published 3mo ago modified yesterday also EEF-CVE-2026-66881 , EUVD-2026-53600 , GHSA-r4h8-2xpq-v48g
- cvss
- 8.1
- version 3.1, NVD
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.6%
- EPSS 0.6% chance of exploitation in 30 days, percentile 50%
- public exploits
- 0
- none known
Summary
Relative Path Traversal vulnerability in livebook-dev livebook allows an attacker-authored notebook to write a file with attacker-controlled content to an arbitrary path.
A .livemd notebook can declare file_entries metadata, each entry carrying a name. Every path that creates a file entry through the user interface validates that name with Livebook.Notebook.validate_file_entry_name/2, which requires a flat filename of alphanumerics, dashes, underscores and dots, ending in an extension. The import path does not: Livebook.LiveMarkdown.Import.file_entry_metadata_to_attrs/1 in lib/livebook/live_markdown/import.ex takes the name verbatim from the notebook source.
For a URL-type file entry, Livebook.Session.file_entry_cache_file/2 in lib/livebook/session.ex resolves that name beneath the session's temporary directory without checking that the result stays inside it, and Livebook.FileSystem.Utils.resolve_unix_like_path/2 collapses parent-directory segments while clamping only at the filesystem root. When the entry's content is requested and no cached copy exists, Livebook fetches the entry's URL and writes the response body to the resolved path, creating parent directories as needed. The attacker therefore controls both the destination and the contents of the written file, which may land anywhere the Livebook process can write. The same missing containment check is present in Livebook.Session.to_attachment_file_entry/2.
A victim who opens an attacker-supplied notebook and causes the entry to be fetched triggers the write within their own authenticated session; the attacker needs no account on the target instance. URL-type entries are also not placed under notebook stamping quarantine on import, so no warning is shown.
This issue affects livebook: from 0.11.0 before 0.18.7 and from 0.19.0 before 0.19.9.
Patch / fix
- hex livebook 0.18.7, 0.19.9
- livebook-dev livebook 0.18.7, 0.18.7-cuda12, 0.19.9, 0.19.9-cuda12
Is CVE-2026-66881 in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerCISA SSVC
- Exploitation
- Proof of concept is public
- Automatable
- no
- Technical impact
- partial
- Assessed
- 3mo ago
Exploit prediction
0.62% chance of exploitation in the next 30 days, higher than 50% of all scored CVEs (FIRST EPSS, 2026-11-11).
Exploits and checks
- github.com https://github.com/livebook-dev/livebook/security/advisories/GHSA-r4h8-2xpq-v48g referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 4.0 | 7.0 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:H/VA:L/SC:N/SI:N/SA:N |
| CNA | 4.0 | 7.0 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:H/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
| NVD | 3.1 | 8.1 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| hex | livebook | >=0.11.0, <0.18.7 >=0.19.0, <0.19.9 |
0.18.7 0.19.9 |
Affected products
- livebook-dev livebook
Classification
- Weakness
-
- CWE-23 Relative Path Traversal
References
-
github.com
/livebook-dev/livebook/commit/c02eb984f80a543c7a52b1d882c76f56aa5be743
related, web
-
github.com
/livebook-dev/livebook/commit/1443dd23df6e7b9203b6797f0695a807aeb81dde
patch
-
github.com
/livebook-dev/livebook/commit/acf4cb8c0c79b89c795b180f061be7de2d8b5aa9
patch
-
github.com
/livebook-dev/livebook/commit/50f86982ebf36c22abeb379b55ec0f2859c83bb9
patch
-
github.com
/livebook-dev/livebook/security/advisories/GHSA-r4h8-2xpq-v48g
vendor-advisory, related, exploit, patch, advisory
-
cna.erlef.org
/cves/CVE-2026-66881.html
related, vendor-advisory, web
-
osv.dev
/vulnerability/EEF-CVE-2026-66881
related, third-party-advisory
-
hex.pm
/packages/livebook
package
Sources
- CVE List CVE-2026-66881
- NVD CVE-2026-66881
- OSV EEF-CVE-2026-66881
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.
CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.