CVE-2026-100633
ŚrednieCVSS 6.5Streszczenie
SiYuan w wersjach 3.8.0–3.8.3 stosuje zabezpieczenie wrażliwych ścieżek w narzędziu plikowym MCP (util.IsForbiddenAbsPath() wywoływane z resolvePath()) tylko do dozwolonego katalogu głównego operacji rekurencyjnych, a nie do każdej rozwiązywanej ścieżki potomnej — niekompletna poprawka GHSA-c8r8-95hg-mp34. Uwierzytelniony administrator używający Agenta w aplikacji lub zewnętrznego serwera MCP może obejść denylistę chronionych plików obszaru roboczego: file.grep może zwracać pasujące linie z chronionych potomków, file.copy może kopiować chronionych potomków do zwykłej ścieżki, a unzip może nadpisywać chronionych potomków. Naprawiono w wersji 3.8.4.
Ocena ryzyka
Uwierzytelniony administrator może obejść denylistę chronionych plików i uzyskać dostęp do poufnych danych, takich jak klucze TLS, konfiguracja czy wewnętrzne pliki notatnika.
Rekomendacja
Zaktualizuj SiYuan do wersji 3.8.4 lub nowszej, która stosuje zabezpieczenie wrażliwych ścieżek do każdej rozwiązywanej ścieżki potomnej w operacjach rekurencyjnych MCP.
Inne podatności w SiYuan
Zobacz wszystkie- CVE-2026-100646Wysokie
SiYuan w wersjach do 3.8.3 włącznie ma błąd w mechanizmach uwierzytelniania (CheckAuth w kernel/model/session.go oraz IsSessionOriginAllowed w kernel/util/net.go), które zawodzą w bezpieczny sposób, gdy brakuje nagłówka Origin. Przeglądarki pomijają Origin przy nawigacjach GET cross-site top-level oraz ładowaniu podzasobów no-cors GET, a ciasteczko sesji ma SameSite=Lax, więc pojedyncze żądanie GET z wrogiej strony otrzymuje rolę RoleAdministrator. W połączeniu z sniffingiem typu zawartości na /api/network/proxy pozwala to nieuwierzytelnionemu zdalnemu atakującemu na wykonanie dowolnego skryptu w origin SiYuan, wywołanie API administratora i eksfiltrację tokenu API.
- CVE-2026-100645Wysokie
SiYuan w wersjach 3.7.0 do 3.8.4 zawiera podatność stored XSS w rendererach galerii i baz danych kanban, gdzie opisy pól nie są escapowane w atrybutach aria-label. W aplikacji desktopowej Electron z włączonym nodeIntegration atakujący może wstrzyknąć JavaScript wywołujący API Node.js child_process w celu wykonania dowolnych poleceń z uprawnieniami użytkownika.
- CVE-2026-100644Wysokie
SiYuan przed wersją 3.8.4 zawiera podatność SQL injection w punkcie końcowym zapytań grafowych, gdzie parametr dailyNoteSavePath jest łączony z SQL bez escapowania. Nieuwierzytelnieni atakujący na opublikowanych stronach z wyłączonym uwierzytelnianiem mogą wstrzyknąć SQL poprzez UNION SELECT, aby wyodrębnić dowolne wiersze z bazy danych ze wszystkich notatników.
- CVE-2026-100642Wysokie
SiYuan w wersjach od 2.1.0 przed 3.8.4 zawiera podatność CSRF w gałęzi obejścia blokady ekranu CheckAuth, która przyznaje dostęp administratora żądaniom z loopback bez walidacji nagłówków Origin. Atakujący mogą tworzyć złośliwe strony internetowe, które zmuszają ofiary do zakończenia procesu jądra, odczytu konfiguracji przestrzeni roboczej i ustawień proxy oraz wywołania akcji administracyjnych poprzez żądania cross-origin bez poświadczeń z przeglądarki ofiary.
- CVE-2026-100641Wysokie
SiYuan przed wersją 3.8.4 nie escapuje HTML przechowywanej zawartości bloków fiszek przed interpolacją do znaczników listy menedżera kart. Zawartość bloku zwracana przez /api/riff/getRiffCards jest wstawiana do szablonu elementu karty w app/src/card/viewCards.ts i przypisywana do listElement.innerHTML, więc treść taka jak <img src=invalid onerror=...> staje się wykonywalnym atrybutem obsługi zdarzeń. Ponieważ główne okno SiYuan (Electron) jest tworzone z nodeIntegration i wyłączonym contextIsolation, administrator otwierający menedżer kart w przestrzeni roboczej z wrogą zawartością fiszek wykonuje skrypt atakującego w uprzywilejowanym rendererze, co może prowadzić do wykonania dowolnego kodu na hoście.
- CVE-2026-100640Średnie
SiYuan przed v3.8.4 zawiera pominięcie autoryzacji w handlerze IPC siyuan-get, które pozwala zdalnym rendererom jądra uzyskać dostęp do natywnych formatów schowka poprzez wywołanie komend clipboardReadMathML, clipboardReadOffice i clipboardReadWPS z pasującym plaintextem. Atakujący kontrolujący treść zdalnego renderera może uzyskać formuły MathML, bajty Office i bajty WPS z lokalnego schowka podczas operacji wklejania inicjowanej przez użytkownika.
- CVE-2026-100638Wysokie
SiYuan w wersjach przed 3.8.4 zawiera podatność path traversal w punkcie końcowym setNotebookIcon, która pozwala uwierzytelnionym administratorom tworzyć dowolne drzewa katalogów i zapisywać pliki poza granicami przestrzeni roboczej. Atakujący mogą podać sekwencje przejścia katalogów w parametrze notebook, aby wyjść z katalogu danych przestrzeni roboczej i zapisać pliki conf.json w dowolnych lokalizacjach dostępnych dla procesu jądra.
- CVE-2026-100637Wysokie
Wersje SiYuan przed v3.8.4 zawierają podatność typu path traversal w endpointcie checkoutRepo, która pozwala uwierzytelnionym administratorom zapisywać pliki JSON poza obszarem roboczym. Atakujący może podać parametr sessionID zawierający sekwencje przejścia katalogowego, aby nadpisać dowolne pliki JSON w istniejących katalogach zapisywalnych przez jądro poza granicami workspace.
- CVE-2026-100636Wysokie
Wersje SiYuan przed v3.8.4 zawierają podatność typu path traversal w endpointcie exportBrowserHTML, która pozwala uwierzytelnionym administratorom zapisywać dowolną treść HTML do pliku index.html poza katalogiem workspace. Atakujący może podać parametr folder z sekwencjami przejścia katalogowego, aby wydostać się z katalogu eksportu i nadpisać index.html w dowolnej istniejącej lokalizacji zapisywalnej przez jądro, co umożliwia trwały XSS lub defacement workspace.
- CVE-2026-100634Średnie
SiYuan przed v3.8.4 nie waliduje nadawcy ani nie ogranicza odbiorców w handlerze IPC 'siyuan-send-windows' procesu głównego Electron (app/electron/main.js). Handler ignoruje event.sender i przekazuje każdy ładunek do wszystkich okien BrowserWindow zwracanych przez BrowserWindow.getAllWindows(), w tym okien innych otwartych obszarów roboczych. Renderer połączony ze zdalnym jądrem kontrolowanym przez atakującego może wysłać {cmd: "lockscreenByMode"} i wywołać wielokrotne blokowanie niepowiązanych lokalnych okien obszarów roboczych, powodując ograniczoną odmowę usługi.
Oryginalny opis (angielski, źródło NVD)
SiYuan is a self-hosted personal knowledge management system. In versions 3.8.0 through 3.8.3, the MCP file tool's sensitive-path guard (util.IsForbiddenAbsPath(), invoked from resolvePath()) is applied only to the allowed root of recursive operations and not to each resolved descendant path — an incomplete fix for GHSA-c8r8-95hg-mp34. An authenticated administrator using the in-app Agent or the external MCP server can therefore bypass the protected-workspace-file denylist: file.grep can return matching lines from non-hidden protected descendants (for example conf/conf.json, TLS keys, data/snippets/conf.json, data/templates/, data/.siyuan/publishAccess.json, notebook .siyuan internals, or the kernel log), file.copy can copy protected descendants to an ordinary path where file.read can then retrieve them, and unzip can overwrite protected descendants using ordinary, lexically contained ZIP member names. Because file.grep is globally classified as a safe action, it receives no per-call confirmation, and the confirmation cards for file.copy and unzip show only the allowed root arguments. This issue is fixed in version 3.8.4. Suggested title: SiYuan 3.8.0 through 3.8.3 Sensitive-Path Guard Bypass in Recursive MCP File Operations.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

