CVE-2026-82650
ŚrednieCVSS 4.4Streszczenie
SiYuan 3.8.0 zawiera podatność na path traversal / ujawnienie wrażliwych plików w funkcji RenderTemplate (kernel/model/template.go), osiągalną przez endpoint POST /api/template/render (kernel/api/template.go). Endpoint ogranicza podaną ścieżkę tylko do katalogu roboczego (util.IsAbsPathInWorkspace), ale nie stosuje wykluczeń wrażliwych ścieżek, w przeciwieństwie do listy blokad refuseToAccess() w API plików. Pozwala to uwierzytelnionemu atakującemu na odczyt wrażliwych plików roboczych, w tym conf/conf.json, który zawiera token API i klucz podpisywania ciasteczek. Problem naprawiono w v3.8.1.
Ocena ryzyka
Ryzyko polega na możliwości odczytu wrażliwych plików konfiguracyjnych, co może prowadzić do przejęcia sesji lub pełnej kompromitacji systemu.
Rekomendacja
Zaleca się natychmiastową aktualizację SiYuan do wersji v3.8.1 lub nowszej oraz rotację tokenów API i kluczy podpisywania.
Inne podatności w SiYuan
Zobacz wszystkie- CVE-2026-82654Wysokie
SiYuan przed wersją v3.8.1 nieprawidłowo escapuje pola nazwy bloku, aliasu i notatki w funkcjach renderowania podpowiedzi, linków zwrotnych i breadcrumb. Atakujący mogą ustawić nazwę bloku zawierającą tagi HTML/script, które wykonają się, gdy inny użytkownik wyświetli dokumenty odwołujące się do tego bloku lub go wyświetlające.
- CVE-2026-82653Wysokie
SiYuan przed wersją v3.8.1 zawiera podatność na przechowywany XSS w funkcji confirmDialog(), gdzie nieescapowane nazwy pakietów i nazwy notatników są interpolowane bezpośrednio do przypisań innerHTML. Atakujący mogą przesłać złośliwe pakiety bazaar z ładunkiem HTML/script w polu nazwy, które wykonają się w przeglądarkach użytkowników podczas odinstalowywania pakietów lub odblokowywania zaszyfrowanych notatników.
- CVE-2026-82652Średnie
SiYuan przed wersją v3.8.1 nie filtruje treści z niewidocznych warstw z bloków SQL embed, kluczy widoku atrybutów i backlinków widoku atrybutów w trybie publikacji. Anonimowi czytelnicy mogą wyliczyć niewidoczne treści za pomocą tych trzech mechanizmów, mimo że administrator skonfigurował treści jako niepublikowane.
- CVE-2026-82651Średnie
SiYuan przed wersją v3.8.1 nie stosuje zabezpieczenia IsForbiddenAbsPath (wprowadzonego w GHSA-c8r8-95hg-mp34) do endpointów /history/*path i /repo/diff/*path w kernel/server/serve.go. Te trasy wymagają autoryzacji administratora, ale konstruują ścieżki plików niezależnie, więc uwierzytelniony administrator może pobrać historyczne migawki wrażliwych plików, które zabezpieczenie ma blokować, w tym data/.siyuan/publishAccess.json (hasła w trybie publikacji w postaci jawnej) oraz pliki w data/templates/.
- CVE-2026-82649Wysokie
Instalator SiYuan dla Windows przed wersją 3.8.1 (dotknięte wersje >= 2.0.14) zawiera podatność na niekontrolowaną ścieżkę wyszukiwania w instalatorze NSIS, który wywołuje systemowe pliki wykonywalne, takie jak TASKKILL, po nazwie, a nie po ścieżce bezwzględnej. Ponieważ NSIS nsExec::Exec rozwiązuje te wywołania, używając ścieżki wyszukiwania obejmującej katalog startowy instalatora przed System32, atakujący, który umieści złośliwy plik wykonywalny (np. zmieniony TASKKILL.exe) w tym katalogu, może spowodować jego wykonanie podczas uruchamiania instalatora. Te wywołania występują w hooku preInit electron-buildera przed wyświetleniem strony licencji, a przy instalacji dla wszystkich użytkowników (z podniesionymi uprawnieniami) podłożony plik wykonuje się z podniesionym tokenem, co prowadzi do lokalnej eskalacji uprawnień.
- CVE-2026-45371Wysokie
SiYuan to system zarządzania wiedzą, który przed wersją 3.7.0 miał luki w zabezpieczeniach związane z 8 nieograniczonymi API, które mogły modyfikować konfigurację i indeks SQL. Użytkownicy z odpowiednim tokenem JWT mogli uzyskać dostęp do tych API, co prowadziło do nieautoryzowanych zmian w stanie serwera.
- CVE-2026-41894Wysokie
SiYuan to system zarządzania wiedzą osobistą typu open-source. Przed wersją 3.6.5 poprawka dla CVE-2026-30869 dodała jedynie listę blokowanych ścieżek, ale nie rozwiązała źródła problemu – zbędnego wywołania url.PathUnescape() w funkcji serveExport(). Uwierzytelniony atakujący może użyć podwójnego kodowania URL (%252e%252e), aby przechodzić między katalogami i czytać dowolne pliki obszaru roboczego, w tym pełną bazę danych SQLite (siyuan.db), logi jądra i wszystkie dokumenty użytkowników.
- CVE-2026-77086Krytyczne
SiYuan przed wersją v3.7.4 nie waliduje parametru packageName w punktach końcowych instalacji i odinstalowania Bazaar, co pozwala uwierzytelnionym administratorom na przeprowadzenie ataku typu path traversal. Atakujący z dostępem administratorskim mogą zapisywać dowolne pliki w dowolnej lokalizacji lub rekurencyjnie usuwać katalogi, podając spreparowane wartości packageName.
- CVE-2026-74800Krytyczne
SiYuan przed wersją v3.7.4 nie ustawia nagłówków Content-Disposition i X-Content-Type-Options podczas serwowania dowolnych plików, co umożliwia ataki typu stored cross-site scripting. Uwierzytelnieni atakujący mogą przesłać pliki HTML jako zasoby i wykonać skrypty z pełnym dostępem do API jądra, gdy właściciel obszaru roboczego otworzy link do zasobu.
- CVE-2026-74799Krytyczne
SiYuan przed wersją 3.7.4 rejestruje punkty końcowe debugowania Go net/http/pprof, w tym zrzuty sterty i gorutyn, bez uwierzytelniania, gdy flaga --mode nie jest ustawiona dokładnie na prod. Atakujący mogą uzyskać dostęp do /debug/pprof/heap i powiązanych punktów końcowych, aby wyodrębnić tajemnice z pamięci, w tym AccessAuthCode i klucze API dostawcy AI.
Oryginalny opis (angielski, źródło NVD)
SiYuan 3.8.0 contains a path traversal / sensitive file exposure vulnerability in the RenderTemplate function (kernel/model/template.go), reachable via the POST /api/template/render endpoint (kernel/api/template.go). The endpoint restricts the supplied path only to the workspace directory (util.IsAbsPathInWorkspace) but, unlike the file API's refuseToAccess() blocklist, applies no sensitive-path exclusion. This allows an authenticated attacker to read sensitive workspace files, including conf/conf.json, which contains the API token and cookie signing key. The issue is fixed in v3.8.1.

