SiYuan — это система управления персональными знаниями. В версиях 3.6.0 и ниже SanitizeSVG имеет неполный черный список — он блокирует data:text/html и data:image/svg+xml в атрибутах href, но пропускает data:text/xml и data:application/xml, оба из которых могут отображать SVG с помощью JavaScript. Неаутентифицированная конечная точка /api/icon/getDynamicIcon предоставляет управляемый пользователем ввод (через параметр содержимого) непосредственно в разметку SVG с использованием fmt.Sprintf без экранирования, обслуживаемого как Content-Type: image/svg+xml.
Это создает XSS с переходом по клику: жертва переходит к созданному URL-адресу, видит SVG с внедренной ссылкой и при нажатии на него запускает JavaScript через обходные типы MIME. Атака требует прямого перехода к конечной точке или внедрения <object>/<embed>, поскольку рендеринг тега <img> во внешнем интерфейсе не допускает интерактивных ссылок. Эта проблема исправлена в версии 3.6.1.
Показать оригинальное описание (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.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
B3log Siyuan
cpe:2.3:a:b3log:siyuan:*:*:*:*:*:*:*:*
|
— |
3.6.1
|