Podatność typu Relative Path Traversal w aplikacji Livebook umożliwia złośliwemu notebookowi zapis pliku o atakującym kontrolowanej zawartości w dowolnym miejscu systemu plików dostępnym dla procesu Livebook. Ofiara nie musi posiadać żadnych dodatkowych uprawnień — wystarczy otwarcie spreparowanego pliku .livemd.
▸ Pokaż oryginał (EN)
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.
Plik .livemd może deklarować metadane file_entries, z których każda zawiera pole name. Przy imporcie funkcja Livebook.LiveMarkdown.Import.file_entry_metadata_to_attrs/1 pobiera tę nazwę bezpośrednio ze źródła notesu bez walidacji, którą stosuje interfejs użytkownika (Livebook.Notebook.validate_file_entry_name/2). Dla wpisów typu URL funkcja Livebook.Session.file_entry_cache_file/2 rozwiązuje ścieżkę na podstawie niezwalidowanej nazwy względem tymczasowego katalogu sesji, a Livebook.FileSystem.Utils.resolve_unix_like_path/2 przetwarza sekwencje katalogów nadrzędnych (..) zatrzymując się jedynie na poziomie korzenia systemu plików, a nie granic katalogu sesji. Gdy zawartość wpisu jest żądana i nie istnieje kopia cache, Livebook pobiera wskazany URL i zapisuje treść odpowiedzi pod rozwiązaną ścieżką, tworząc brakujące katalogi. Wpisów typu URL nie obejmuje też kwarantanna notebook stamping, więc ofiara nie otrzymuje żadnego ostrzeżenia.
Atakujący kontroluje zarówno docelową ścieżkę, jak i zawartość zapisywanego pliku — może nadpisać lub utworzyć dowolny plik dostępny dla procesu Livebook, co może prowadzić do przejęcia konfiguracji, wstrzyknięcia złośliwego kodu lub destabilizacji systemu. Do wywołania podatności wystarczy skłonienie ofiary do otwarcia spreparowanego notesu i zainicjowania pobrania wpisu, bez konieczności posiadania konta na atakowanej instancji.
Należy zaktualizować Livebook do wersji 0.18.7 lub wyższej (w gałęzi 0.18.x) albo do wersji 0.19.9 lub wyższej (w gałęzi 0.19.x). Poprawki dostępne są w commitach 1443dd23, 50f86982 oraz acf4cb8c w repozytorium livebook-dev/livebook na GitHub.
livebook-dev Livebook w wersjach od 0.11.0 przed 0.18.7 oraz od 0.19.0 przed 0.19.9
Podatność dotyczy wyłącznie wpisów typu URL w metadanych file_entries; wersja 0.19.x jest objęta osobną gałęzią poprawek. Szczegóły opublikowano w GitHub Security Advisory GHSA-r4h8-2xpq-v48g przez Erlang Ecosystem Foundation CNA.
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:XLivebook
APPLivebook0.11.0 – 0.18.7 (bez)0.19.0 – 0.19.9 (bez)
Powiązane podatności
Livebook: nieautoryzowane wykonanie kodu przez sfałszowane zdarzenia klawiatury
Failing Open w Livebook Teams — nieautoryzowany pełny dostęp do serwera
Livebook is a web application for writing interactive and collaborative code notebooks. On Windows, it is poss...
Improper Neutralization of Special Elements used in an OS Command (OS Command Injection) vulnerability in live...
Cross-Site Request Forgery (CSRF) vulnerability in livebook-dev livebook allows an attacker to authenticate a ...