CRITICAL🇬🇧 English

CVE-2026-32940

XSS w B3Log SiYuan — niepełna blokada typów MIME w SVG

CVSS 9.3v3.1pub. 2026-03-20upd. 2026-03-23

SiYuan w wersjach 3.6.0 i wcześniejszych zawiera podatność XSS wynikającą z niekompletnej listy blokowanych typów MIME w funkcji SanitizeSVG oraz braku escapowania danych wejściowych w endpoincie /api/icon/getDynamicIcon. Atakujący może nakłonić użytkownika do kliknięcia spreparowanego linku SVG, co prowadzi do wykonania kodu JavaScript w przeglądarce ofiary.

Pokaż oryginał (EN)

SiYuan is a personal knowledge management system. In versions 3.6.0 and below, SanitizeSVG has an incomplete blocklist — it blocks data:text/html and data:image/svg+xml in href attributes but misses data:text/xml and data:application/xml, both of which can render SVG with JavaScript execution. The unauthenticated /api/icon/getDynamicIcon endpoint serves user-controlled input (via the content parameter) directly into SVG markup using fmt.Sprintf with no escaping, served as Content-Type: image/svg+xml. This creates a click-through XSS: a victim navigates to a crafted URL, sees an SVG with an injected link, and clicking it triggers JavaScript via the bypassed MIME types. The attack requires direct navigation to the endpoint or <object>/<embed> embedding, since <img> tag rendering in the frontend doesn't allow interactive links. This issue has been fixed in version 3.6.1.

🤖 Analiza AI
Jak działa

Funkcja SanitizeSVG blokuje typy MIME data:text/html oraz data:image/svg+xml w atrybutach href, jednak pomija data:text/xml oraz data:application/xml — oba umożliwiają renderowanie SVG z wykonaniem JavaScript. Niezabezpieczony endpoint /api/icon/getDynamicIcon (dostępny bez uwierzytelnienia) wstrzykuje dane wejściowe użytkownika z parametru content bezpośrednio do znaczników SVG za pomocą fmt.Sprintf bez żadnego escapowania, serwując wynik z nagłówkiem Content-Type: image/svg+xml. Atak przebiega jako click-through XSS: ofiara otwiera spreparowany URL lub odwiedza stronę z osadzonym elementem <object> lub <embed>, widzi SVG z wstrzykniętym linkiem, a kliknięcie go wyzwala wykonanie JavaScript przez ominięte typy MIME.

Skutki

Atakujący może wykonać dowolny kod JavaScript w kontekście przeglądarki ofiary, co potencjalnie umożliwia kradzież danych, przejęcie sesji lub wykonanie dalszych działań w imieniu użytkownika.

Mitygacja

Należy zaktualizować SiYuan do wersji 3.6.1, w której błąd został naprawiony. Patch dostępny jest w oficjalnym repozytorium projektu (commit d01d561875d4f744e9f6232f1d4831e3642b8696) oraz w wydaniu v3.6.1.

Kogo dotyczy

B3Log SiYuan w wersjach 3.6.0 i wcześniejszych

Uwagi

Endpoint /api/icon/getDynamicIcon jest dostępny bez uwierzytelnienia, co zwiększa ekspozycję na atak. Podatność nie jest exploitowana przez tag <img> ze względu na brak obsługi interaktywnych linków — wymagane jest bezpośrednie przejście do URL lub osadzenie przez <object>/<embed>.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N
  • B3log Siyuan

    APP
    B3Log
    < 3.6.1
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
Tagi
XSS
CWE
Referencje

Powiązane podatności

CVE-2026-40322CRITICAL9.0PL ✓ten sam produkt

B3Log SiYuan: XSS w diagramach Mermaid eskaluje do RCE w Electron

CVE-2026-39846CRITICAL9.0PL ✓ten sam produkt

RCE przez stored XSS w kliencie desktopowym B3Log SiYuan

CVE-2026-34449CRITICAL9.6PL ✓ten sam produkt

RCE w SiYuan poprzez nadmiernie permisywną politykę CORS

CVE-2026-34448CRITICAL9.0PL ✓ten sam produkt

Stored XSS → RCE w B3Log SiYuan via złośliwy URL w Attribute View

CVE-2026-33670CRITICAL9.8PL ✓ten sam produkt

Path Traversal w B3Log SiYuan — nieautoryzowane odczytywanie struktury plików

CVE-2026-32940 — XSS w B3Log SiYuan — niepełna blokada typów MIME w SVG — CRITICAL 9.3 | CVEbaza.pl